Willie Python IRC机器人 - 获取频道昵称列表

1 投票
2 回答
1194 浏览
提问于 2025-04-17 22:44

我遇到了一个关于Willie(http://willie.dftba.net/)这个Python IRC机器人问题。

我想在IRC服务器上执行命令“/names”。

简单来说,我就是想获取当前在某个IRC频道里的所有昵称。我希望能在Willie机器人内部找到办法做到这一点。如果有人有经验,请回复我。

到目前为止,我做了以下事情:

  1. 在网上搜索这个问题
  2. 查看了GitHub上的所有相关资料(包括所有的维基)
  3. 查阅了Willie的官方Python文档(因为我在使用它)
  4. 给Willie机器人的原作者发了一封邮件,但没有得到回复……

如果有人有任何想法,我会非常感激。

谢谢,祝好,

佐藤

2 个回答

1

我找到的最接近的办法是用 willie.write() 发送 NAMES 命令,但这样做并不会返回命令的结果。所以我觉得需要在 353 RPL_NAMREPLY 和 366 RPL_ENDOFNAMES 这两个响应上设置一个触发器,来收集 NAMES 命令的结果。

2

获取频道中名字列表的最好方法是使用 bot.privileges。通过 users = bot.privileges['#yourchannel'] 这段代码,你可以得到一个字典,里面包含了名字和他们的权限等级。你可以用 for nick in users: do_something(nick) 这样的方式来遍历这些名字,做你想做的事情。这样可以确保你得到的名单是最新的,不用自己去发送 NAMES 命令或者解析回复。

如果你确实想要解析实际的回复,Dan D. 说得对。你需要在一个函数里发送 NAMES,然后在另一个函数里用 @rule('353') 来解析回复。

撰写回答