加入IRC频道似乎不起作用

2024-09-30 12:15:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个正在工作的机器人(多亏了abarnet),它有一个缺陷:它不会加入频道。他能让它成功,但我做不到。我意识到这对我来说可能是个问题,但我在X-Chat上连接得很好。在

host = "irc.kbfail.net"
port = 6667
nick = "Alice"
ident = "Alice"
realname = "Alice"
channel = "#nb"
readbuffer = ""

irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( host, port ) )
print irc.recv ( 4096 )
irc.send ("NICK %s\r\n" % nick)
irc.send ("USER %s %s bla :%s\r\n" % (ident, host, realname))
irc.send ("JOIN %s\r\n" % channel)

这完全取决于JOIN命令。我的bot连接到服务器并在“:Alice MODE Alice:+x”处停止


Tags: sendhostportircchannel机器人socket频道
1条回答
网友
1楼 · 发布于 2024-09-30 12:15:32

正如我在your other question中所解释的,您确实需要记录输入和输出以查看发生了什么。这是你或其他人能够调试这个的唯一方法。在

同样,有多种方法可以做到这一点:破解你的机器人源代码,打印它在套接字上接收和发送的所有信息,用netcat运行一个假服务器,将netcat设置为代理,运行一个设置为记录所有内容的本地IRC服务器,使用Wireshark捕捉网络上的消息……选择哪一个并不重要,但你需要这样做其中一个。在

通过在我自己的本地副本上执行此操作,我可以看出您发送JOIN的时间太早,并且从服务器返回了一个错误:

:asgard.kbfail.net 451 JOIN :You have not registered

同时,你的机器人停在模式行的原因是在那之后没有人给你发送任何东西。启动一个客户机并/MSG Alice foo,您将看到您仍然可以很好地接收消息。在

那么,什么时候才是合适的时机呢?等我的命令,或者等我的命令后再猜。但实际上,你不应该在这里猜测。The IRC protocol is very well documented,没有那么复杂。在

除此之外,除非你是在学习如何编写基于socket的客户端应用程序,否则这是在浪费大量时间;有几十个开源Python IRC bot和模块来帮助编写IRC bot,这样你就不必自己处理所有这些低级的东西了,快速的Google搜索就会告诉你。在

相关问题 更多 >

    热门问题