IRC 机器人(蟒蛇)

Sou*_*urD 2 python sockets irc

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')
Run Code Online (Sandbox Code Playgroud)

当我尝试运行脚本时,出现此错误:

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
Run Code Online (Sandbox Code Playgroud)

昵称 supaBOT 已在服务器上注册,但我不知道如何识别服务器,因为上面的代码不起作用。

Ale*_*amo 5

就像迈克说的那样,你没有发送你应该发送的数据。您需要在那里添加空格,:如果它们有空格,则需要在最终命令参数之前。某些行也丢失了'\r\n'

也就是说,a 的格式PRIVMSG是:'PRIVMSG nick :message with spaces\r\n'

PRIVMSG只有两个参数,因此您需要将 放在:那里以指示该行的其余部分只是一个可能包含空格的值。

你得到的原因"You have not registered"是你必须在任何其他命令之前发送USERNICK命令。如果NICK命令失败(缺口碰撞),您必须检测错误并尝试另一个错误。一旦你发送了一个有效的USERNICK命令,一些 IRC 网络也会向你发送一个PING,你必须PONG在服务器认为你“注册”之前用响应。之后,您可以使用其他命令。