我想在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)
有谁知道如何解决这个问题?感谢。
答案 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框架/模块可以消除过程中的猜测,让您专注于为机器人编写实际功能。