4

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

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

这就提出了一个问题:我应该为 Supybot 写一个更好的插件,匹配新的需求,还是干脆去做别的事情?我应该从头开始(学习最多,自己实施相关的 RFC,花费比计划更多的时间)还是有一个合适的框架来处理基本的 IRC 内容?

4

5 回答 5

4

我投票支持 Supybot 的全新插件。学到更多 ;)

如果您不会做太多,请尝试python irclib。它是 IRC 的(仍然维护的)python 库。

Twisted也可以,但是有点过头了……

于 2009-06-30T12:49:25.327 回答
3

对我来说,这听起来像是您的应用程序想要使用 IRC,而我的直觉反应是使用具有 IRC 客户端的 Twisted。这可能是也可能不是适合您的解决方案,但至少值得研究。

于 2009-06-30T12:48:53.287 回答
2

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

  • Supybot已经有很多功能。这可能是一件好事:只需创建一个简单的插件,连接它并开始使用机器人。缺点是您可能不喜欢已经提供的某些功能。举个例子:我不喜欢它响应一切的事实(错误:“foo”不是一个有效的命令。)。我确信它可以在某个地方以某种方式关闭,但是这些小事情困扰着我。

  • 另一方面,Python IRC 客户端库感觉有点太简单了特别是因为我需要线程来让机器人检查一些网站是否仍然存在,同时在频道中保持响应。

  • 如果感觉 irclib 级别太低,那么从头开始编写一个机器人肯定会。虽然我确实想学习一些东西,但我也想专注于机器人的实际功能,而不会被“基本”的东西过多地打扰(例如,我不一定想编写代码来识别机器人,我喜欢只是有一些配置设置来存储昵称和密码并为我处理。)

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

提示:除了Twisted 文档之外,您还可以查看Python 杂志 2008 年 10 月号中Doug Farrell 的文章“A Twisted Logging Server”。

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

于 2009-07-15T07:29:39.663 回答
1

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

如果你愿意,我可以分享源代码,虽然没有什么比自己写的更好:)

于 2009-06-30T13:33:44.443 回答
1

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

于 2014-05-31T10:36:14.150 回答