【问题标题】:Python IRC client: write from scratch or write plugin for existing framework?Python IRC 客户端:从头开始编写还是为现有框架编写插件?
【发布时间】:2014-05-31 18:36:14
【问题描述】:

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

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

这引发了一个问题:我应该为 Supybot 编写一个更好的插件,满足新的需求,还是干脆去做别的事情?我应该从头开始(学习最多,自己实现relevant RFCs,花费比计划更多的时间)还是有一个合适的框架来处理基本的 IRC 内容?

【问题讨论】:

    标签: python irc


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        • 另一方面,Python IRC client library 感觉有点太裸露了。尤其是因为我需要线程来让机器人检查多个网站是否仍然存在,同时在频道中保持响应。

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

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

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 我现在正在考虑创建自己的机器人,可能基于 irclib。如果我遇到困难,我可能会就此优惠与您联系。 :)
          【解决方案5】:

          irc3是基于asyncio和venusianhttps://irc3.readthedocs.org/的可插拔irc客户端库

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-06-15
            • 1970-01-01
            • 2012-09-29
            相关资源
            最近更新 更多