Python IRC机器人赢得';不加入
我收到了错误信息 :irc.evilzone.org注意认证:*正在查找您的主机名 :irc.evilzone.org通知授权:* 找到您的主机名(缓存) 平:7091A8FB :irc.evilzone.org 451加入:你有 未注册 :irc.evilzone.org 451 PRIVMSG:You 没有注册 请记住,我使用的一些命令需要代码中的temp=string.split(readbuffer,“\n”)部分Python IRC机器人赢得';不加入,python,irc,Python,Irc,我收到了错误信息 :irc.evilzone.org注意认证:*正在查找您的主机名 :irc.evilzone.org通知授权:* 找到您的主机名(缓存) 平:7091A8FB :irc.evilzone.org 451加入:你有 未注册 :irc.evilzone.org 451 PRIVMSG:You 没有注册 请记住,我使用的一些命令需要代码中的temp=string.split(readbuffer,“\n”)部分 network = 'irc.evilzone.org' port =
network = 'irc.evilzone.org'
port = 6667
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( network, port ) )
print irc.recv ( 4096 )
irc.send ( 'NICK ipbot\r\n' )
irc.send ( 'USER ipbot completely real :Jxxx\r\n' )
irc.send ( 'JOIN #test\r\n' )
irc.send ( 'PRIVMSG #test:Oh Hai.\r\n' )
while True:
data = irc.recv ( 4096 )
我可以成功连接到频道等。有什么想法吗?我认为有两个可能的原因:
- 您正在将命令提前发送到。通常,在连接完全建立并且服务器接受您的命令(尤其是JOIN)之前,您需要等待相当长的时间。因此,您需要先等待服务器响应(在发送NICK命令后,您将在某个点返回MODE命令;之后,您可以调用普通命令,包括JOIN)
- 另一种可能性是PING,它可能不是真正的解决方案,但如果您想留在IRC服务器上,它仍然很重要。服务器随机发送PING命令。通常要求您使用PONG命令进行响应(参数与接收到的PING相同)。否则服务器可能会踢你
#!/bin/bash
(
echo NICK bashscript
echo USER bashscript 8 \* : Centreon Notifier
sleep 2
# echo 'JOIN #netops'
echo 'PRIVMSG #netops' $1
echo QUIT
) | nc 127.0.0.1 6667
我注意到您不处理PING请求,一些服务器在您回复PING请求(因此未注册)之前不接受任何其他命令。 你们会想连接,然后尼克,检查PING,然后用户,再次检查PING,若在用户之前并没有 一些服务器喜欢在NICK之后发送,其他服务器喜欢在USER之后发送
PING :7091A8FB\r\n
要响应此PING,只需发送:
PONG :7091A8FB\r\n
在
:
和之间\r\n
将是一个随机字符串,您需要将其与您的PONG一起发送回,如上所示。这可能是您的客户端的问题。你可以再检查一下
通过使用telnet连接到服务器并发出类似以下命令
这:
请在用户命令后面尝试PONG:2153560274
平:7091A8FB
这是阻止您在IRC服务器上注册的问题
虽然从技术上讲,您应该能够使用尼克/用户组合在IRC上注册,但您在登录时收到的PING是目前大多数IRC服务器使用的一种非常简单的DoS保护机制
您需要按如下方式回复ping:
PONG :7091A8FB
每次收到PING时,字符串都应该更改。
稍后您还将收到PING请求,以确保连接仍处于活动状态,因此编写代码进行回复将确保服务器不会自动退出您(PING超时)
最后,在发送JOIN/PRIVMSG/其他命令之前,您应该等待登录(您会知道,因为您将收到原始数字001)。应该在Stackoverflow…嗯,频道或服务器是否完全不希望尼克事先注册?@TheLQ:如果你花一秒钟看一下代码,你会发现没有框架。。。
NICK aaron
USER aaron ignored ignored :Aaron
PONG <number>
sec@irc:~/simple-irc-bot$ telnet 192.168.1.100 6667
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
NOTICE AUTH :*** Looking up your hostname
NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** Couldn't look up your hostname
NICK TENOTICE AUTH :*** No ident response
NICK testtest002
PING :2153560274
:loal.irc-server.com 461 TNICK USER :Not enough parameters
USER test test 0 :sec
PONG :2153560274
:loal.irc-server.com 001 TNICK :Welcome IRC Network,
:loal.irc-server.com 002 TNICK :Your host is loal.irc-server.com, running version u2.10.12.14
PONG :7091A8FB