依赖插件的收益?
Yield from dependency plugin?
我想制作解析器插件,它将自由格式的消息转换为机器人命令,并 运行 来自其他插件的消息。
假设我有依赖于 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 获取消息?也许我可以在插件中形成一个 bot 命令并将其发送到 errbot 就像我从后端发送它一样?
类似于:
@botcmd
def get_from_a(self, msg, args):
send "!do_on_a"
您必须确保来自插件 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)
我想制作解析器插件,它将自由格式的消息转换为机器人命令,并 运行 来自其他插件的消息。 假设我有依赖于 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 获取消息?也许我可以在插件中形成一个 bot 命令并将其发送到 errbot 就像我从后端发送它一样? 类似于:
@botcmd
def get_from_a(self, msg, args):
send "!do_on_a"
您必须确保来自插件 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)