Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python IRC机器人静默超时(?)-突然停止工作_Python_Sockets_Irc - Fatal编程技术网

Python IRC机器人静默超时(?)-突然停止工作

Python IRC机器人静默超时(?)-突然停止工作,python,sockets,irc,Python,Sockets,Irc,我最近开始写我自己的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 +

我最近开始写我自己的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频道是Twitch IRC聊天,如果这很重要的话


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

您是否可能没有用
PONG
响应服务器
PING

如果连接未能响应PING 消息,则该连接将关闭


所以你应该确保你做到了。我原以为当连接关闭时会引起一些套接字错误,但据我所知,情况并非总是如此

您是否可能没有用
PONG
响应服务器
PING

如果连接未能响应PING 消息,则该连接将关闭


所以你应该确保你做到了。我原以为当连接关闭时会引起一些套接字错误,但据我所知,情况并非总是如此

等待它“冻结”,然后在调试器中暂停以查看它卡在哪一行上。我猜,
irc_socket.recv(2040).decode()
谢谢你的想法,我编辑了我的帖子。等待它“冻结”,然后在调试器中暂停,看看它卡在哪一行。我猜,
irc_socket.recv(2040).decode()
谢谢你的想法,我编辑了我的帖子。谢谢,我看到服务器发出了一些ping,但没有意识到我需要回复它们。我明天会试试这个并给出反馈!这项工作做得很好,运行了两个多小时,没有任何问题。再次感谢!谢谢,我看到一些ping来自服务器,但没有意识到我需要响应它们。我明天会试试这个并给出反馈!这项工作做得很好,运行了两个多小时,没有任何问题。再次感谢!