Python IRC客户端:从头开始编写或为现有框架编写插件?

时间:2009-06-30 12:33:19

标签: python irc

对于我们公司,我想要一个基于Python的IRC机器人,它可以检查我们客户的网站是否仍在运行。更具体一点:我想列出一些应该每隔15分钟访问一次的URL。如果失败,应在5分钟后再次检查URL。如果检索URL仍然不会产生HTTP状态代码200,它应该回显通道中的失败URL,以便我们对其进行调查。

我前段时间为Supybot编写了一个插件,它基本上以粗略但有效的方式完成了上述部分操作。如果我想将当前代码的功能扩展到上面的'规范',我需要做一些重大的重构;基本上它意味着从头开始。

提出了一个问题:我应该为Supybot编写一个更好的插件,匹配新的要求,还是完全去寻找别的东西?我应该从头开始(学习最多,自己实施relevant RFCs,花费的时间比计划的更多)还是有合适的框架来处理基本的IRC内容?

5 个答案:

答案 0 :(得分:4)

我为Supybot投了一个全新的插件。了解更多;)

如果您不这么做,请尝试 python irclib 。它是IRC的一个(仍然维护的)python库。

Twisted也可以,但它有点但太多了......

答案 1 :(得分:3)

对我来说,这听起来像是你的应用程序想要谈论IRC的情况,我的直觉反应是使用Twisted,它有IRC客户端。这对您来说可能是也可能不是正确的解决方案,但至少值得研究。

答案 2 :(得分:2)

我最终决定为我的机器人创建使用Twisted。至于原因:

  • Supybot已经有很多功能。这可能是一件好事:只需创建一个简单的插件,挂钩并开始使用机器人。缺点是你可能不喜欢已经提供的一些功能。举个例子:我不喜欢它对一切都做出回应的事实(错误:“foo”不是一个有效的命令。)。我确定它可以在某个地方被关闭,但是这些小事情让我感到困扰。

  • 另一方面,Python IRC client library感觉有点过于骨折。特别是因为我需要线程让机器人检查一些网站是否还活着,同时在频道中保持响应。

  • 如果irclib觉得水平太低,那么从头开始写一个机器人肯定会。虽然我当然想要学习一些东西,但我也想关注机器人的实际功能,而不会受到“基本”东西的太多困扰(例如,我不一定要编写代码来识别机器人,我喜欢只有一些配置设置来存储昵称和密码并为我处理。)

Twisted有一个很好的logging bot示例,可以作为起点。此外:将来编写一个小型网络服务器(显然使用Twisted)来显示机器人的输出应该不会太难。

提示:除了Twisted documentation之外,您还可以查看Doug Farrell撰写的文章“A Twisted Logging Server”的October 2008 issue of Python Magazine

感谢那些回答这个问题的人。你让我走上正轨。 :)

答案 3 :(得分:1)

编写一个简单的IRC bot并不难。我有一个模板,我一直用于我的机器人,从SVN机器人到投票状态机器人到机器人检查与某些IP的连接,并根据结果更改频道的主题。

如果您愿意,我可以分享来源,尽管没有什么比写自己的更好了。)

答案 4 :(得分:1)

irc3是一个可插入的irc客户端库,基于asyncio和venusian https://irc3.readthedocs.org/