首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python IRC bot不加入

Python IRC bot不加入
EN

Stack Overflow用户
提问于 2011-01-22 19:32:51
回答 5查看 16.2K关注 0票数 5

我得到了错误信息

:irc.evilzone.org通知八月:*查你的主机名..。

:irc.evilzone.org通知八月:*找到您的主机名(缓存)

平:7091A8FB

:irc.evilzone.org 451连接:您尚未注册

:irc.evilzone.org 451 PRIVMSG :您尚未注册

代码语言:javascript
复制
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")部分

代码语言:javascript
复制
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 )

我可以成功地连接到频道等,有什么想法吗?

EN

回答 5

Stack Overflow用户

发布于 2011-01-24 11:06:51

我认为这有两个可能的原因:

  • --您要将命令发送到早期。通常,在连接完全建立和服务器接受命令(尤其是JOIN)之前,您需要等待相当长的时间。因此,您需要首先等待服务器响应(在发送NICK命令之后,在某个时刻得到一个模式命令;之后,您可以调用普通命令,包括联接)。
  • (可能不是真正的解决方案,但如果您想留在IRC服务器上)的另一个可能性是PING。服务器随机发送PING命令。您通常需要使用PONG命令(参数与接收的PING相同)进行响应。否则,服务器可能会启动您。
票数 7
EN

Stack Overflow用户

发布于 2012-09-28 10:17:34

我注意到您不处理PING请求,一些服务器在答复PING请求之前不接受任何其他命令(因此没有注册)。你会想要连接,然后尼克,检查一个PING,然后用户,再次检查PING,如果在用户之前没有。

一些服务器喜欢在NICK之后发送它,另一些服务器则在用户之后发送它。

代码语言:javascript
复制
PING :7091A8FB\r\n

要响应此PING,只需发送:

代码语言:javascript
复制
PONG :7091A8FB\r\n

:'\r\n之间将是一个随机字符串,您需要将它与您的乒乓一起发送回来,如上面所示。

票数 7
EN

Stack Overflow用户

发布于 2012-09-07 03:01:35

发送“用户.”还有“加入.”需要增加。在Bash中执行相同的代码时,我遇到了这个问题。我就是这样做的:

代码语言:javascript
复制
#!/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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4770598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档