Python IRC bot中的错误

时间:2014-12-26 06:53:24

标签: python bots irc

我正在为freenode中的频道制作一个简单的python IRC机器人,只是为了好玩。它可以正常使用以下代码连接到服务器:

irc.connect((server,6667))
irc.send("USER "+botnick+" "+botnick+" "+botnick+" :Howdy mate!\n")
irc.send("NICK "+botnick+"\n")
irc.send("PRIVMSG nickserv :iNOOPE\r\n") #I don't know what this does
irc.send("JOIN "+channel+"\n")

(子问题:第4行做了什么?)

但只有在 irc.recv(2040)返回某些内容时才会触发while循环。所以我按照在线示例添加了

irc.setblocking(False)

irc.connect((server,6667))

time.sleep(1)

在while循环的开头。

所以现在连接部分看起来像这样:

irc.connect((server,6667))
irc.setblocking(False)
irc.send("USER "+botnick+" "+botnick+" "+botnick+" :Howdy mate!\n")
irc.send("NICK "+botnick+"\n")
irc.send("PRIVMSG nickserv :iNOOPE\r\n")
irc.send("JOIN "+channel+"\n")

但是现在当我尝试运行该程序时,它显示错误:

irc.send("USER "+botnick+" "+botnick+" "+botnick+" :Howdy mate!\n")
TypeError: 'str' does not support the buffer interface

我无法解决此错误,当我删除 irc.setblocking(False)时它会消失。但我真的需要循环来执行,无论 irc.recv(2040)返回一些东西......那么有人能找出错误吗?

编辑:当我在python shell中运行它时,上面的错误显示出来(因为CMD关闭得太快,我无法读取错误)。现在我设法记录并查看CMD中的错误,并说:

text=irc.recv(2040)
A non blocking socket operation could not be completed immediatly.

帮助?

1 个答案:

答案 0 :(得分:0)

好的,我自己解决了。 text = irc.recv(2040)是个问题。我把它放在 try ... except 块中,它解决了问题。