Python IRC Bot在240秒后定时

时间:2012-06-03 04:52:26

标签: python sockets irc bots

我正在尝试制作一个IRC机器人,但它会在240秒后保持超时。我该如何解决这个问题?

import socket 
host = 'test'
port = 6667
channel = '#test'
nick = "test"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send('NICK ' + str(nick) +  ' \n\r') 
s.send('USER v v v :v Script' + '\r\n')
s.send('JOIN '+channel+' \n\r')

while True:
    command = s.recv(4096)
    print command

2 个答案:

答案 0 :(得分:5)

您没有回复来自服务器的ping请求。

当你闲置很长时间时,服务器认为连接已经死了,并发送ping请求,你需要用pong回复(以及ping之后服务器发送给你的任何东西)。因此,如果服务器发送给您,那应该是您的回复:

PING :HELLO_WORLD
PONG :HELLO_WORLD

如果没有,服务器将确认链接已死并终止连接。

答案 1 :(得分:0)

您可以尝试使用irclib-但是帽子正在发生,很可能是您没有回复服务器的PING消息。

每当收到的消息以“PING”开头时,您必须使用包含单词PONG和您的程序名称(以及可选的主机)的“PONG”消息回复它 - 在“PONG”之后留一个空格。

检查PING和PONG消息的完整IRC规范,并查看实验中可能缺少的其他内容:http://www.irchelp.org/irchelp/rfc/rfc.html