Python IRC机器人在3次ping后断开连接

1 投票
1 回答
628 浏览
提问于 2025-04-21 10:14

我写了一个小的Twitch IRC机器人,但它总是断开连接。这个机器人一直在回应服务器的请求,但在回应了三次后,它就收不到来自Twitch的数据了,最后也就从观众列表中消失了。

这里是代码(重要部分):

readbuffer = ""
while (1):
        readbuffer=readbuffer+s.recv(4000)
        temp=string.split(readbuffer, "\n")
        readbuffer=temp.pop( )
        for line in temp:
            print line
            elif(line[0]=="PING"):
                s.sendall("PONG %s\r\n" % line[1])

这是一个函数,它被作为线程执行了两次,只是传入了不同的参数。

问题是,我一开始在twitch.tv的观众列表上能看到这两个机器人,大约持续了5分钟,但在回应了三次请求后,Twitch就不再发送任何信息了。

如果你需要更多代码来了解情况,请告诉我。

1 个回答

0

可能和这个问题没关系:

把套接字当作文件来处理:https://docs.python.org/2/library/socket.html#socket.socket.makefile

f = s.makefile()
for line in f:
    print 'Read:', line
    command, arguments = line.rstrip().split(' ', 2)
    if command == 'PING':
         f.write('PONG ' + arguments + '\r\n')

这样做会让很多事情变得简单很多。请试试看,如果问题还存在,请留言。

撰写回答