依赖插件的收益率?

时间:2016-11-05 09:27:43

标签: errbot

我想创建解析器插件,它将自由格式消息转换为bot命令并从其他插件运行它们。 假设我有PluginA和PluginB,它依赖于PluginA。在PluginA上我有命令:

    @botcmd
    def do_on_a(self, msg):
      yield "yielding first msg from A {}".format(msg)
      sleep(5)
      yield "yielding second msg from A {}".format(msg)

我发现从PluginB运行它的唯一方法是从生成器创建一个列表:

    @botcmd
    def get_from_a(self, msg, args):
      yield list(self.get_plugin('PluginA').do_on_A(msg))

但是通过这种方式我可以同时获得两个PluginA消息。是否有一种方法可以在插件出现时从PluginA获取消息?也许我可以在插件中形成一个bot命令并将其发送到errbot,就像我从后端发送它一样? 类似的东西:

    @botcmd
    def get_from_a(self, msg, args):
      send "!do_on_a"

1 个答案:

答案 0 :(得分:1)

您必须确保来自插件B(调用A)的命令是一个生成器,它生成插件A生成的命令项。最简单的方法是使用Python 3.3中引入的yield from语法:

@botcmd
def get_from_a(self, msg, args):
  yield from self.get_plugin('PluginA').do_on_A(msg)