Python IRC Bot无声超时 - 突然停止工作

2024-04-18 06:13:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始写我自己的IRC机器人,没什么特别的,只是读取一个频道并发布特定命令的文本文件的内容。你知道吗

# let's connect
irc_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
irc_socket.connect((server, 6667))

# now we login and send a test message
irc_socket.send(str.encode('PASS ' + pw + '\r\n'))
irc_socket.send(str.encode('NICK ' + bot + '\r\n'))
irc_socket.send(str.encode('USER ' + bot + '\r\n'))
irc_socket.send(str.encode('JOIN #' + channel + '\r\n'))

while 1:
    text = irc_socket.recv(2040).decode()
    if text.startswith('!ideen'):
        do stuff #lot of code, shouldn't be of importance

奇怪的是,每件事都按我所希望的那样工作,但由于某些原因,一段时间后它就停止工作了。它没有超时或给出任何错误,只是完全停止了反应。首先,我认为它会因为太多的消息而过载,但如果频道只是空着20分钟左右,也会发生这种情况。当我从Pycharm或命令行运行它时也会发生同样的情况(不知道为什么会有不同)。你知道吗

我可能不是唯一一个有问题的人,但我什么也找不到。感谢您的帮助,甚至是关于如何调试这样的东西的提示。你知道吗

IRC频道是一个抽搐IRC聊天,如果这是任何重要的。你知道吗

编辑:尝试@matt-m提示进行调试,似乎他不再收到消息。文本消息总是空字符串。你知道吗


Tags: oftext命令send消息ircbotconnect
1条回答
网友
1楼 · 发布于 2024-04-18 06:13:02

您是否没有用PONG响应服务器PING?你知道吗

https://tools.ietf.org/html/rfc2812#section-3.7.2

If a connection fails to respond to a PING message within a set amount of time, that connection is closed.

所以你一定要这么做。我以为当连接关闭时会引发一些套接字错误,但是根据How to tell if a connection is dead in python,情况可能并不总是这样。你知道吗

相关问题 更多 >