Я начал создавать простой боттон Twitch, используя Python. Он прекрасно соединяется, и он также может видеть сообщения, которые другие люди отправляют в чате. Моя проблема, однако, в том, что я не могу обнаружить команды, когда они используются. Я могу захватить имя пользователя и сообщение из записей чата и даже распечатать их на консоли, но передача их в функцию chat()
ничего не делает.Twitch IRC chat bot успешно соединяется, но не обнаруживает команды
Еще одна особенность заключается в том, что бот иногда случайно отправляет чат-сообщения, содержащие ответы PONG.
Я думаю, что мне не хватает чего-то очевидного, возможно, с тем, как я проверяю команды в чате или всю мою функцию chat()
.
import re
from time import sleep
import socket
HOST = "irc.twitch.tv"
PORT = 6667
NICK = "bot_name"
PASS = "oauth:..."
CHAN = "#channel"
RATE = (20/30)
CHAT_MSG = re.compile(r"^:\w+!\[email protected]\w+\.tmi\.twitch\.tv PRIVMSG #\w+ :")
def main_loop():
try:
s = socket.socket()
s.connect((HOST, PORT))
s.send("PASS {}\r\n".format(PASS).encode("utf-8"))
s.send("NICK {}\r\n".format(NICK).encode("utf-8"))
s.send("JOIN {}\r\n".format(CHAN).encode("utf-8"))
connected = True
except Exception as e:
print(str(e))
connected = False
while connected:
response = s.recv(1024).decode("utf-8")
if response == "PING :tmi.twitch.tv\r\n":
s.send("PONG :tmi.twitch.tv\r\n".encode())
print("PONG")
else:
username = re.search(r"\w+", response).group(0)
message = CHAT_MSG.sub("", response)
if message == "!test":
chat(s, "Testing command received!")
print(username + ": " + message)
sleep(1)
def chat(sock, msg):
sock.send("PRIVMSG {} :{}".format(CHAN, msg).encode())
if __name__ == "__main__":
main_loop()