Twitch IRC chat bot成功连接但未检测到命令

时间:2015-10-10 01:41:18

标签: python python-3.x irc twitch chatbot

我开始使用Python制作一个简单的Twitch聊天机器人。它连接得很好,它还可以看到其他人在聊天中发送的消息。然而,我的问题是,在使用它时我似乎无法检测到命令。我可以获取聊天条目的用户名和消息,甚至可以将它们打印到控制台,但是将它们传递给chat()函数不会做任何事情。

另一个怪癖是机器人有时会随机发送包含PONG响应的聊天消息。

我认为我遗漏了一些明显的东西,可能是我在聊天中检查命令的方式,或者我的整个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+!\w+@\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() 函数。

Random

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,如果其他人有同样的问题!通过chat()函数传递的消息必须在字符串末尾添加\r\n,并且要检查的命令为!test\r\n。我确信这只是IRC工作的方式,但是这个添加现在让机器人响应命令!