Доходность от плагина зависимости?
Я хочу сделать плагин парсера, который будет переводить сообщения свободной формы в команды бота и запускать их из других плагинов. Допустим, у меня есть 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"
1 ответ
Вы должны убедиться, что команда из плагина B (которая вызывает A) является генератором, который выдает элементы, которые производит команда из плагина A. Самый простой - это использовать yield from
синтаксис, введенный в Python 3.3:
@botcmd
def get_from_a(self, msg, args):
yield from self.get_plugin('PluginA').do_on_A(msg)