Python-IRC-bot正在无休止地响应

2024-05-16 22:52:26 发布

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

我正在慢慢地学习Python并浏览教程。我觉得我对它的工作原理有了基本的了解。在

作为一个创造性的项目,我想做一个IRC机器人。我不想使用预先建立的框架。我不打算重新发明轮子,我只是想从头开始建造一个机器人,作为一个学习项目和一个创造性的出口。在我对如何做到这一点的一知半解中,我经常遇到的一个问题是,我的机器人似乎在无休止地响应我的命令。代码如下:

HOST="irc.durd.net"
PORT=6667
NICK="Data"
IDENT="data"
REALNAME="databot"
HOME='#zela'
feedback=""

s=socket.socket( )
s.connect((HOST, PORT))
s.send("NICK %s\r\n" % NICK)
s.send("USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME))
s.send("JOIN #zela" + "\r\n")
s.send("PRIVMSG nickserv identify ac}pcut]eobosbec" + "\r\n")


def sendmsg(chan, msg):
    s.send("PRIVMSG "+ chan +" :"+ msg +"\n")

def ping():
    s.send("PONG :pingis\n")




while 1:
    feedback=feedback+s.recv(1024)
    print (feedback)
    if feedback.find("PING :") != -1:
        ping()
    if feedback.find("say hello Data") != -1:
        sendmsg("#zela", "Hello Data!")
    if feedback.find("tell us a joke Data") != -1:
        sendmsg("#zela", "but Captain, I don't know how.")
    if feedback.find("terminate Data") != -1:
        s.send("QUIT\r\n")

现在,一切正常,数据对他的命令正确响应。当我叫他辞职时,他甚至退出了。不幸的是,一旦这些命令中的一个被触发,他会在每次我说新的东西时重复自己,然后一直重复直到我把他关掉。在

^{pr2}$

我已经测试过服务器是否正在向bot重新发送消息,而不是这样,所以我认为这是我的错,这里可能缺少一些非常简单的东西。在


Tags: 项目命令sendhostdataifport机器人
1条回答
网友
1楼 · 发布于 2024-05-16 22:52:26

您将重复连接到feedback的结尾,而不清除它:

feedback=feedback+s.recv(1024)

这将导致if feedback.find("say hello Data") != -1:条件始终为真。在

您需要执行类似feedback=""或删除上述表达式的连接部分。在

相关问题 更多 >