Willie Python IRC机器人 - 获取频道昵称列表
我遇到了一个关于Willie(http://willie.dftba.net/)这个Python IRC机器人问题。
我想在IRC服务器上执行命令“/names”。
简单来说,我就是想获取当前在某个IRC频道里的所有昵称。我希望能在Willie机器人内部找到办法做到这一点。如果有人有经验,请回复我。
到目前为止,我做了以下事情:
- 在网上搜索这个问题
- 查看了GitHub上的所有相关资料(包括所有的维基)
- 查阅了Willie的官方Python文档(因为我在使用它)
- 给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')
来解析回复。