【问题标题】:IRC function dilemmaIRC 函数困境
【发布时间】:2011-09-06 17:19:49
【问题描述】:

[编辑] 抱歉标题被关闭了。我正在考虑我遇到的另一个问题,并且不小心跨越了这两个问题。

大家好,我目前正在用 Python 编写 IRC 机器人骨架。

在我提出问题之前,为了解释几件事,我正在编写一个 IRC 机器人,它配有一个可以接收信号的插件系统(即,当收到一条消息时,有人看到一个人加入了一个频道,...... ),并调用插件中包含的这些函数,我将使用辅助方法,即如果我们看到一条消息,请调用sawMessagesawMessage 将使用PluginManager 类等定位要处理消息的插件。我已经考虑了整个系统。

我还为每个 IRC 操作提供了一个函数,即“doJoin”、“doPart”等,这样插件就可以调用它们,而无需我直接将我的套接字连接暴露给插件。 -- 这些函数是否应该自动调用相应的sawMessagesawJoin等?还是应该由插件在调用doMessage之后调用sawMessage?我问的原因是因为如果doMessage 调用sawMessage,并且sawMessage 处理调用doMessage 的东西,它最终可能会在展开堆栈之前递归很多。

让插件负责调用sawMessage来通知其他插件的缺点是插件可以选择不通知其他插件,而且如果插件-在调用sawMessage 函数时,递归问题可能会立即弹出。

我不确定如何解决这个问题。让doMessage自动调用sawMessage通知其他插件似乎是个好习惯,但是如果插件设计不当(即不响应它是自己的消息),但如果插件无论如何都必须调用sawMessage,则会出现同样的问题。

对此有任何想法/意见吗?我知道这不是一个直截了当的问题/答案,但我无法决定如何处理。通常,如果我只是为自己编写一个小型机器人,我不会关心可能的递归问题。然而,我写这篇文章的目的是为了分发(我希望它成为下一个 HUGE bot,就像所有其他 IRC bot 开发人员一样 :D )并且我希望它能够正确制作。

谢谢!

【问题讨论】:

  • 如果实现难以解释,那就是个坏主意。 __import__('this')
  • 下一个“巨大”的机器人将被分发。想想天网。
  • @JBernardo +1 引用 The Zen of Python
  • @JBernardo - 抱歉标题,我不小心遇到了两个问题。你不只是喜欢多任务吗? :p

标签: python recursion irc


【解决方案1】:

听起来您需要在Publish/subscribeChain of Responsibility 之间做出决定或阅读更多内容。不幸的是,我在这方面没有太多经验。最近刚好看到一个相关的article

【讨论】:

  • 非常感谢 :) 感谢您,我现在创建了一个更好的系统!
猜你喜欢
  • 2011-05-12
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多