为什么我的Python ircbot突然停下来了*:***正在查找您的主机名。。。不加入频道?

2024-10-01 13:45:31 发布

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

我的irc机器人挂在:卡尔维诺.freenode.net“注意*:*正在查找您的主机名…”在我向代码中添加一些函数之前,它正在工作。我已经把这些函数注释掉了,但它仍然不起作用! 它停留在那个信息上,没有进展。我不得不强迫它退出。在

我是一个非常初学者的程序员,我才开始编码两个星期左右。所以很有可能我在某个地方犯了一个非常愚蠢的错误。 作为参考,我用这篇文章来写我的机器人的框架。http://ubuntuforums.org/showpost.php?p=9363159&postcount=3 我没有张贴我的其余代码,但我已经把它放在这个粘贴箱,以防需要它!http://pastebin.com/kVF04UFr

    import socket
    import urllib2
    import httplib
    import mechanize

    channel = '#testbot'
    botnick = 'tastybot'
    network = 'irc.freenode.net'
    port = 6667
    irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
    irc.connect ( ( network, port ) )
    print irc.recv ( 4096 )
    irc.send ( 'NICK' + botnick + ':\r\n' )
    irc.send ( 'USER tastybot tastybot tastybot :Python IRC\r\n' )
    irc.send ( 'JOIN' + channel + ':\r\n' )
    irc.send ( 'PRIVMSG' + channel + ':What\'s up?\r\n' )
    running = True

    [various functions]

    while running:
        [rest of code]

Tags: 函数代码importsendhttpnetportirc
3条回答

不确定是否是您的错误,但您的字符串似乎有问题:

irc.send ( 'PRIVMSG' + channel + ':What's up?\r\n' )

你的撇号使程序认为它已经退出了字符串

你在发送时忘了空格。应该是这样的:

import socket
import urllib2
import httplib
import mechanize

channel = '#testbot'
botnick = 'tastybot'
botuser = 'tastybot'
network = 'irc.freenode.net'
port = 6667
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( network, port ) )
print irc.recv ( 4096 )
irc.send ( 'NICK ' + botnick + '\r\n' )
irc.send ( 'USER ' + botuser + ' 0 * :Python IRC\r\n' ) # Read RFC next time, please
irc.send ( 'JOIN ' + channel + '\r\n' )
irc.send ( 'PRIVMSG ' + channel + ' :What\'s up?\r\n' )
running = True

[various functions]

while running:
    [rest of code]

如果帐户使用密码,只需发送PASS password作为第一条消息-在发送用户名和昵称之前-在建立连接之后。在

同样在IRC(由RFC定义)中,最大消息长度是512字节。在

顺便说一句,当收到的字符串中的最后2个符号是\r\n时,您应该停止读取帧。我的机器人示例(hy-powered):

^{pr2}$

我猜您正在连接的IRC服务器要求提供一个标识:

^{bq}$

来源:http://help.undernet.org/faq.php#19

最简单的解决方法是尝试连接到另一个IRC服务器,您可以尝试'霍姆斯.freenode.net'作为你的服务器。我在那台服务器上使用我的IRC机器人没有问题。在

编辑: 如果您想查看我用于连接到服务器的代码:connection.py

相关问题 更多 >