Posted at

Errbot 5.0.0における更新点についての自分用メモ

More than 1 year has passed since last update.

先月に、Errbotがメジャーバージョンアップしてました。

変更箇所については、オリジナルを見てみるのが一番早いのですが、確認しやすそうな部分を適当にピックアップして動作確認してみました。


サブコマンド実装方式の拡張


Add support for cascaded subcommands (cmd_sub1_sub2_sub3) (thx Jeremiah Lowin)



example.py

from errbot import BotPlugin, botcmd

class Example(BotPlugin):
@botcmd
def git_pull(self, msg, args):
# これを、`!git pull` で呼ぶことは、今までもできた
pass

class Example2(BotPlugin):
@botcmd
def git_pull_all(self, msg, args):
# これを、`!git pull all` で呼ぶことができるようになった
pass


上記のExample.git_pullを呼ぶときは、!git_pull_allの他に!git pullとサブコマンドらしく呼ぶことができます。

今までのバージョンでは、git_pull_allを呼ぶときの形式は、!git_pull_allまたは!git pull_allのどちらかで、1個めのアンダースコアだけがコマンドとサブコマンドの区切りとして機能していました。

バージョン5.0.0からは、すべてのアンダースコアでサブコマンドとして区切りることができるのか、!git pull allでも呼べるようになっています。

ただし、git_pull,git_pull_allが両方あると、!git pull allに対して反応するのはgit_pullの方みたいでした。

きちんと細かく処理を分けていくことで、より有効活用できる仕様のようです。


プラグインのシンボリックリンクサポート


You can now use symbolic links for your plugins


文字通りですが、プラグインの読み込み時にシンボリックリンクをサポートするようになりました。

+ bot_root/

+ plugins/
+ example/ <folder>
+ plugin_A <symlink:../../plugin_A>
+ plugin_A/
+ plugin_A.plug
+ plugin_A.py

このようなフォルダ構成だった場合に、シンボリックリンクが置かれているplugin_Aもver5.0.0では読み込むようになっています。

普段の自分の運用スタイルでは、submoduleにしてしまったりすることのほうが多いので、いまいち使い所を捉えられていません。Issueとか見ればわかるのでしょうか。


Textバックエンドがreadlineをサポート


Text backend: readline support (thx Robert Coup)


readlineをサポートするようになったことで、errbot -TによってターミナルでのCLIでの会話で、↑↓キーで直前のコマンドをかんたんに呼び直せるようになりました。

プラグインの開発をするときにはローカルでtextバックエンドを使うことが多いのですが、よく使うbotコマンドである!plugin reload PluginNameなどのplugin制御系を繰り返し命令するのが非常に楽になりました。

いろいろと、デバッグがはかどります。


(締めの文章)

パッと見た感じだと、目を引く更新はこのあたりでした。

その他にもSlackバックエンドでリアクションをすることができるようなったりと行った機能追加や細かい不具合修正などがあるので、特にプラグインの互換性が平気そうならアップデートしてみてはどうでしょうか。