使用python2.7 twitch聊天机器人,我能够连接到Twitch的IRC服务器并响应ping,一切正常。我已经在自己的机器和我的朋友上使用此代码几个月了,没有任何问题。
新用户已开始使用该漫游器,并且每隔10分钟左右就会断开一次漫游。我已经对ping / pong进行了故障排除并调整了发送方式,并且该机器人可以对ping进行响应而没有问题,但是抽搐只是随机地停止了响应。
由于Twitch每5分钟发送一次PING并在没有收到回复的情况下断开您的连接,所以我认为这就是问题所在。我已经尝试了所有发送PONG的方法,但对于他来说仍然无法使用,但是在我这方面以及在朋友这方面,一切工作都非常好。
他检查了防火墙,路由器设置等,没有任何东西阻止它,并尝试使用端口80和6667失败。
控制台的Here's one image崩溃时,这次完全没有引发任何错误,只是停止阅读聊天记录。忽略预取错误,这只是VLC愚蠢,几乎可以肯定是无关紧要的。
Here's another one中包含追溯错误的错误,每当崩溃时都会抛出ConnectionError。但是,这是在我的机器人中使用另一个lib的一个明显更老的错误,并且我已经确认即使该lib完全没问题,它也可以中断。
加入twitch服务器的代码如下:
def openSocket():
global s
s = socket.socket()
s.connect(("irc.chat.twitch.tv", PORT))
s.send("PASS " + BOT_OAUTH + "\r\n")
s.send("NICK " + BOT_NAME + "\r\n")
s.send("JOIN #" + CHANNEL + "\r\n")
return s
def joinRoom(s):
readbuffer = ""
Loading = True
while Loading:
readbuffer = readbuffer + s.recv(1024)
temp = string.split(readbuffer, "\n")
readbuffer = temp.pop()
for line in temp:
print(line)
Loading = loadingComplete(line)
s = openSocket()
joinRoom(s)
我目前正在使用两种不同的方法发送乒乓球:
if "PING" in line:
s.send(("PONG :tmi.twitch.tv\r\n".encode("utf-8")))
print "Pong Sent"
还有一个三分钟计时器,以防万一
def PONG():
s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
print "Timer Pong Sent"
threading.Timer(180, PONG).start()
PONG()
昨天,我在机器上连续运行了该漫游器4个小时,而没有断开连接,并且我的朋友在另一台网络上具有完全不同的机器,也没有问题。
是什么导致它无法在一个用户端使用?乒乓球系统出问题了吗?还是他的出问题了?