我想制作解析器插件,它将自由形式的消息转换为机器人命令并从其他插件运行它们。假设我有依赖于 PluginA 的 PluginA 和 PluginB。在 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 获取消息?另外,也许我可以在插件中形成一个机器人命令并将其发送到 errbot,就像我从后端发送它一样?就像是:
@botcmd
def get_from_a(self, msg, args):
send "!do_on_a"