Python IRC客户端:从头写还是为现有框架编写插件?
我想为我们公司做一个基于Python的IRC机器人,主要功能是检查我们客户的网站是否正常运行。具体来说,我想列出一些网址,每15分钟访问一次。如果访问失败,那么5分钟后再检查一次。如果再次访问还是没有得到HTTP状态码200(表示正常),那么就把这个失败的网址在频道里发出来,这样我们就可以去调查了。
之前我为Supybot写过一个插件,基本上实现了上述的一些功能,虽然方式比较粗糙,但效果还不错。如果我想把现有代码的功能扩展到上面提到的要求,就需要进行大规模的重构,实际上就是要从头开始。
这就引出了一个问题:我应该为Supybot写一个更好的插件,以满足新的需求,还是干脆换个方案?我是否应该从头开始(这样能学到更多,自己实现相关的RFC标准,可能会花费比计划更多的时间),还是有合适的框架可以处理基本的IRC功能呢?
5 个回答
我终于决定为我的机器人使用Twisted。至于为什么这样做:
Supybot已经有很多功能了。这其实是个好事:你只需要创建一个简单的插件,连接上去就能开始使用这个机器人。不过,缺点是你可能不喜欢它提供的一些功能。举个例子:我不喜欢它对所有东西都做出回应(错误提示:“foo”不是一个有效的命令)。我相信可以在某个地方关闭这个功能,但这些小问题让我有点烦。
Python IRC客户端库感觉有点简单。尤其是因为我需要线程来让机器人检查一些网站是否还在运行,同时又能在频道里保持响应。
如果说irclib太基础,那么从头开始写一个机器人肯定会更复杂。虽然我确实想学点东西,但我也想专注于机器人的实际功能,而不想被一些“基础”的东西打扰(比如,我不想自己写代码来识别机器人,我希望能有个配置选项来存储昵称和密码,帮我处理这些事情)。
Twisted有一个很好的日志机器人示例,可以作为起点。此外:将来用Twisted写一个小型网页服务器来展示机器人的输出应该也不会太难。
小贴士:除了Twisted文档,你还可以看看2008年10月的Python杂志,里面有Doug Farrell写的文章《一个扭曲的日志服务器》。
感谢那些回答问题的人。你们让我找到了正确的方向。:)
听起来你的应用程序想要使用IRC(互联网聊天协议)进行通信。我的直觉是可以试试Twisted这个工具,它里面有IRC客户端。这个方法可能适合你,也可能不适合,但至少值得你去了解一下。