python irc bot,无法加入服务器

时间:2013-11-05 03:07:49

标签: python sockets irc

我想在python中使用以下代码托管一个简单的irc bot:

#!/usr/bin/python

import sys
import os
import socket

HOST = 'irc.gamesurge.net'
PORT = 6667
NICK = 'test_bot'
IDENT = 'testbot'
REALNAME = 'TestBot'
OWNER = 'Test'
CHANNELINIT = '#test_channel'

readbuffer = ''

sock = socket.socket()
sock.connect((HOST, PORT))
sock.send('NICK %sn' % NICK)
sock.send('USER %s %s bla :%sn' % (IDENT, HOST, REALNAME))


while True:
    line = sock.recv(500)
    if line:
        print line
        if line.find('GameSurge') != -1:
            print "joining..."
            print"current line: "+line
            sock.send('JOIN %sn' % CHANNELINIT)

但无论我选择连接哪个gameurge服务器,它总是给我这个错误:

ERROR :Closing Link: by NuclearFallout.WA.US.GameSurge.net (Registration Timeout)

这是服务器返回的内容:

NOTICE AUTH :*** Looking up your hostname
NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** Found your hostname

NOTICE AUTH :*** No ident response

ERROR :Closing Link:  by NuclearFallout.WA.US.GameSurge.net (Registration Timeout)

有谁知道如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:2)

sock.send('NICK %sn' % NICK)

\之前你错过了n - 命令的结尾是换行符,而不是n。你的其他部分也一样。

sock.send('NICK %s\n' % NICK)
sock.send('USER %s %s bla :%s\n' % (IDENT, HOST, REALNAME))

等等。那说,为什么重新发明轮子?有许多可用的IRC bot框架/模块可以消除过程中的猜测,让您专注于为机器人编写实际功能。