sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.connect((irc, port))
sck.send('PRIVMSG ' + 'NICKSERV' + 'ghost' + 'supaBOT' + 'htown')
sck.send('NICK supaBOT\r\n')
sck.send('PRIVMSG ' + 'NICKSERV' + 'IDENTIFY' + 'password')
sck.send('USER supaBOT supaBOT supaBOT :supaBOT Script\r\n')
sck.send('JOIN ' + " " + chan + '\r\n')
当我尝试运行脚本时出现此错误:
trix.gonullyourself.org 451 PRIVMSG You have not registered
trix.gonullyourself.org 451 PRIVMSG You have not registered
trix.gonullyourself.org 451 JOIN You have not registered
: You
nick supaBOT已在服务器上注册,但我不知道如何识别服务器,因为上面的代码无效。
答案 0 :(得分:4)
:
。有些行也缺少'\r\n'
。
即PRIVMSG
的格式为:'PRIVMSG nick :message with spaces\r\n'
PRIVMSG
只有两个参数,所以你需要把:
放在那里以表明该行的其余部分只是一个可能包含空格的值。
您获得"You have not registered"
的原因是您必须在任何其他命令之前发送USER
和NICK
命令。如果NICK
命令失败(缺口冲突),则必须检测错误并尝试另一个错误。发送有效的USER
和NICK
命令后,某些IRC网络也会向您发送PING
,在服务器认为您之前,您必须使用PONG
进行回复注册”。之后,您可以使用其他命令。
答案 1 :(得分:0)
检查字符串,'PRIVMSG ' + 'NICKSERV' + 'IDENTIFY' + 'password'
打印PRIVMSG NICKSERVIDENTIFYpassword
,这显然不是您要发送的内容
Ftr,最好使用字符串替换或.format()因为调用它们,这会增加额外的开销,因为每个字母强制python循环遍历字符串,然后再添加字母。即:'PRIVMSG NICKSERV IDENTIFY %s' %(password)
或'PRIVMSG NICKSERV IDENTIFY {0}'.format(password)
如果您想使用它(并且supybot存在/存在并且是纯python irc bot),也存在已经存在的irclib。