我收到错误消息
:irc.evilzone.org通知AUTH: * 查找您的主机名......
:irc.evilzone.org通知AUTH: * 找到您的主机名(缓存)
PING:7091A8FB
:irc.evilzone.org 451加入:你有 未注册
:irc.evilzone.org 451 PRIVMSG:你 尚未注册
server = "irc.evilzone.org" # Server
port = 6667 #port connect through IRC standard is :(6667 or 9999)
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( server, port ) )
print irc.recv ( 4096 )
nick = 'Piebot' #bots name
chan = 'test' #channel
version= "1.0" #current version
irc.send ( 'NICK Pizebot\r\n' )
irc.send ( 'USER Pizebot Pibot Pibot :Python IRC\r\n' )
irc.send ( 'JOIN #test\r\n' ) # YOU MUST CHANGE THE CHANNEL HERE AND BELOW!!
irc.send ( 'PRIVMSG #test :Hello World.\r\n' )
while True:
readbuffer= irc.recv(4096)
temp=string.split(readbuffer, "\n")
Check = readbuffer.split(':')
print readbuffer
请记住,我使用的一些命令需要代码的temp = string.split(readbuffer,“\ n”)部分。但是这样的代码
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 )
我可以成功连接到频道等任何想法?
答案 0 :(得分:6)
我认为有两个可能的原因:
答案 1 :(得分:5)
我注意到您没有处理PING请求,在您回复PING请求(因此未注册)之前,某些服务器不接受任何其他命令。 你想要连接,然后NICK,检查PING,然后是USER,如果USER之前没有,则再次检查PING。
有些服务器喜欢在NICK之后发送,其他服务器则在USER之后发送。
PING :7091A8FB\r\n
要回复此PING,只需发送:
PONG :7091A8FB\r\n
在:
和'\r\n
之间将是一个随机字符串,您需要将其与PONG一起发回,如上所示。
答案 2 :(得分:3)
需要增加发送“USER ...”和“JOIN ...”之间的时间。我在Bash中执行相同的代码时遇到过这个问题。我是这样做的:
#!/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
答案 3 :(得分:1)
PING:7091A8FB
这是阻止您在IRC服务器上注册的问题。
虽然您(技术上)应该能够使用NICK / USER组合在IRC上注册,但是您登录时收到的PING是目前大多数IRC服务器使用的非常简单的DoS保护机制。
您需要按如下方式回复ping:
PONG :7091A8FB
每次收到PING时,字符串都应该更改。 稍后您还将获得PING请求以确保连接仍然存在,因此编写要回复的代码将确保服务器不会自动退出您(ping超时)
最后,在发送JOIN / PRIVMSG /其他命令之前,你应该等到你已经登录(你知道因为你会收到原始数字001)。
答案 4 :(得分:0)
这可能是您客户的问题。你可以仔细检查一下 通过telnet连接到服务器并发出类似的命令 这样:
NICK aaron
USER aaron ignored ignored :Aaron
PONG <number>
(在发出&#39; NICK&#39;命令后,你应该得到一个&#39; PING&#39; 有号码的客户;这是您应该替换的数字 &#34;&#34;的上方。)
这个 应该连接你的服务器,你应该收到 此后立即发送MOTD和其他连接消息。从这里,你 可以试试&#34;加入#test-channel&#34;并确保您可以加入渠道。 假设所有这些都按照我的描述工作,那么你的问题就很可能发生了 与您的IRC客户。
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
请在 USER 命令后面尝试 PONG:2153560274 。