2016-11-05 13 views
0

私は自由形式のメッセージをボットコマンドに翻訳し、他のプラグインからそれらを実行するパーサープラグインを作りたいと思っています。 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)) 

しかし、このように私は1つで両方のPluginAメッセージを取得しています時間。 PluginAからのメッセージを表示する方法はありますか?また、私はちょうどプラグインでbotコマンドを作成し、バックエンドから送信するようにerrbotに送ることができますか? 何かのように:

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

答えて

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) 
+0

ありがとう、ありがとうございます! – arykalin

関連する問題