我曾经有一个工作的IRC机器人,我亲切地命名为" shakybot",因为它在开始时非常不稳定。
现在,我正在重新编码。但是,每当我运行它时,我都会遇到问题。这是从IRC频道检测到的输出:
NOTICE AUTH :*** Please wait while we scan your connection for open proxies...
:Tigh.GeekShed.net NOTICE AUTH :*** Looking up your hostname...
:Tigh.GeekShed.net NOTICE AUTH :*** Found your hostname (cached)
:Tigh.GeekShed.net NOTICE AUTH :*** Checking ident...
然后它进入主循环。它从不连接或任何东西,它只是打印这个。我使用旧版本的相同代码。
irc=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
irc.connect((network, port))
a=irc.recv (4096) #Setting up the Buffer
print a
irc.send('NICK ' + nick + '\r\n')
irc.send('USER shakybot shakybot bla :shakybot\r\n')
irc.send('JOIN :' + chan + '\r\n')
irc.send('PRIVMSG ' + chan + ' :Hello.\r\n')
如何连接?
编辑:将连接到IRC的调试消息与Mibbit以及该程序进行比较后,我应该得到:
Tigh.GeekShed.net *** Looking up your hostname...
Tigh.GeekShed.net *** Checking ident...
Tigh.GeekShed.net *** Found your hostname
Tigh.GeekShed.net *** Received identd response
答案 0 :(得分:2)
当irc.recv(4096)
返回时,表示您已从远程服务器收到至少一个字节。远程服务器可能尚未准备好您发送NICK
命令。您应该等到服务器收到相应的消息,说它已准备好接收您的登录信息(抱歉,我不记得现在的消息)。
答案 1 :(得分:1)
Greg
说的是正确的。请根据您需要检查RFC1459
消息的PING
来查看此代码(http://code.activestate.com/recipes/299411-connect-to-an-irc-server-and-store-messages-into-a/)。
您还可以查看一些python IRC库
http://pypi.python.org/pypi/lalita/0.1.1
http://pypi.python.org/pypi/irc/1.1
不要忘记搜索pypi(http://pypi.python.org/pypi?%3Aaction=search&term=irc&submit=search)
答案 2 :(得分:0)
我发现以下是连接到IRC服务器的解决方案。
irc.send('NICK %s\r\n' % nick)
irc.send('USER %i 8 * :%s\r\n' % (ident, nick))
irc.send('JOIN %s\r\n' % channel)