结束b的无限循环

2024-04-25 00:28:00 发布

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

我已经为Twitch IRC创建了一个聊天机器人,我可以连接和创建命令等,但是我不能在命令提示符中使用键盘中断。我怀疑是因为它卡在这个无限循环中,而我不知道如何解决这个问题?我是新编程btw!在

这是我的Run.py中的代码,openSocket()是在另一个文件中定义的,基本上是与服务器的连接。s = socket.socket. while循环的第一部分基本上只读取服务器消息,我认为这对你们来说很直接!在

s = openSocket()
joinRoom(s)
readbuffer = ""

while True:
        readbuffer = readbuffer + s.recv(1024).decode("utf-8")
        temp = str.split(readbuffer, "\n")
        readbuffer = temp.pop()

        for line in temp:
            if "PING" in line:
                s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
                print("---SENT PONG---")
            printMessage(getUser, getMessage, line)
            message = getMessage(line)

            for key in commands:
                command = key
                if command in message:
                    sendMessage(s, commands[command])

((编辑:我也有一个问题,无论什么原因,到服务器的连接似乎都超时了。我设法让它和乒乓球保持联系40-45分钟,但后来又断开了。在

编辑:

抱歉,原来的帖子太乱了。我用最少的代码创建了这个pastebin,我可以用最少的代码重新创建这个问题。 如果IRC聊天处于非活动状态,它将断开连接,我无法让它连续发送2次ping,中间没有任何消息,不确定这是因为它在第2次ping之前断开连接还是因为第2次ping。在

至少有一次,它甚至在我从服务器获得第一次ping之前就断开了连接。在

锡纸箱:pastebin.com/sXUW50sS在


Tags: 代码in服务器消息forirclinesocket
1条回答
网友
1楼 · 发布于 2024-04-25 00:28:00

您发布的部分代码和您描述的问题没有太大关系。在

这是一个猜测(尽管是一个受过教育的猜测)。在您的套接字连接中,您可能正在使用try: except:Pokemon方法(必须将它们全部捕获)

这里要做的是找到一条线,你在做这样的事情:

except:
    pass

并将其更改为:

^{pr2}$

显然,我并不是想说你的程序应该捕捉所有的异常,就像什么都没发生一样。主要的一点是,您可能已经这样做了(因为我不知道为什么),您应该对系统错误进行特殊处理。在

相关问题 更多 >