IRC函数dilemm

2024-09-30 05:33:09 发布

您现在位置:Python中文网/ 问答频道 /正文

[编辑]很抱歉标题被取消了。我在想我遇到的另一个问题,不小心把这两个问题交叉了。你知道吗

大家好,我正在用Python编写IRC机器人骨架。你知道吗

为了在我提问之前解释一些事情,我正在编写一个IRC bot,它带有一个插件系统,该插件系统将接收信号(即,当接收到消息时,看到一个人正在加入一个通道,…),为了调用插件中包含的这些函数,我将使用一个helper方法,即,如果我们看到一条消息,则调用sawMessagesawMessage将使用PluginManager类来定位要处理消息的插件。我已经考虑好了整个系统。你知道吗

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

让插件负责调用sawMessage来通知其他插件的缺点是,插件可以选择不通知其他插件,而且如果插件确实调用了sawMessage函数,则递归问题可能会立即出现。你知道吗

我不知道怎么解决这个问题。使doMessage自动调用sawMessage来通知其他插件似乎是一种好的做法,但是如果插件的设计不正确(即不响应它自己的消息),则总是有可能由于递归而导致堆栈溢出,但是如果插件无论如何都必须调用sawMessage,那么同样的问题也存在。你知道吗

对此有什么想法/意见吗?我知道这不是一个直截了当的问题/答案,但我不能决定该怎么办。通常,如果我只是为自己的使用编写一个小机器人,我不会关心可能的递归问题。然而,我写这篇文章是为了发行(我希望这是下一个巨大的机器人,就像其他IRC机器人开发者一样:D)并且我希望它做得合适。你知道吗

谢谢!你知道吗


Tags: 函数插件消息编辑标题堆栈系统irc

热门问题