Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

さよならruboty-reinvite。短い付き合いだったね

f:id:tbpg:20160131213657j:plain

とある事情から作成した ruboty-reinvite という Ruboty Plugin。
1ヵ月でお別れすることとなりました。

経緯

某所の Slack で使っている ruboty が特定チャンネルで急に Listen しなくなるという事象が発生しました。
この事象が起こった際に対象チャンネルにいる ruboty の bot を kick => invite すると Listen が復活します。
そのSlackでは管理者、一般ユーザーを分けて利用しておりkickをするには管理者に
依頼する必要があり、無駄な手間がかかってしまっている状態でした。

すぐに根本原因は分からなそうだったので暫定策として特定のチャンネルのbot
kick => invite する Ruboty Plugin を 2015/12/23 に作りました。

qiita.com

その後、 ruboty-reinvite で暫定運用をしていたのですが、
私が同僚と話している際に原因らしきものがみえてきました。(※原因をみつけたのは同僚)

ちなみに問題が解決したにもかかわらずこの記事を作成している理由ですが
すでに ruboty-reinvite を利用している方が他にもいらっしゃるようなので
その方たちに向けて作成しています。

原因

Rubotyは環境変数経由でいくつかの設定ができます。

github.com

$SLACK_ROOM という環境変数の説明は以下のようになっています。

SLACK_ROOM - Room name to join in at first (e.g. general,random)

ここに設定したチャンネルは ruboty のプロセスが起動した際に自動的に join することになります。
そして、起動後にチャンネルに招待されたときにも参加する仕組みになっています。

いいかえると $SLACK_ROOM に追加されていないチャンネルについても、
bot を invite すると Listen を開始してくれます。

しかし、 herokuを無料プランで利用している際などスリープした後にどうなるか?
スリープ後に $SLACK_ROOM に記載されていないものについては
Listen しなくなってしまうのです。

そう、経緯で説明した現象の原因は $SLACK_ROOM に追加せずに invite だけで運用していたためでした。
ruboty の運用としては bot の待ち受け対象にしたい channel は $SLACK_ROOM に追加する
運用にすれば問題は解決です。

さようなら、 ruboty-reinvite 。

関連情報