Ruboty で Slack のリアクション(スタンプ)に反応するハンドラーを書けるようにするプラグインを作成し、公開しました。
https://github.com/srz-zumix/ruboty-slack_reaction_added
https://rubygems.org/gems/ruboty-slack_reaction_added
なんかボットに対してコマンドを投げるのも面倒くさいし覚えきれない、「あとでやる」「TODO」「メモ」とかリアクションをしつつ忘れてしまったり、ということがあったのでリアクションをトリガーになんかアクションできたら便利だよなーと思って書きました。
サンプル
ruboty-slack_reaction_added を追加するとデフォルトのアクションが有効になります。
リアクションにも反応をする ping => @bot reaction ping
リアクションの名前を教えてくれる => @bot reaction name
bookmark リアクションをすると parmalink を教えてくれる (all)
+1 リアクションするとボットも +1 してくれる (all)
ハンドラーの書き方
ruboty-slack_reaction_added で使えるようになるハンドラーのオプションは2つです。
allow_reaction
allow_reaction: true にすると、リアクションに対してもそのアクションが実行されるようになります。
on /reaction ping\z/, name: 'reaction_able_ping', description: 'ping allow reaction', allow_reaction: true
raction_only
raction_only: true にすると、リアクションした場合のみそのアクションが実行されるようになります。ただのメッセージ投稿には反応しません。
on /.*\z/m, name: 'thumbup', description: 'thumbup', reaction_only: true, all: true
リアクション情報のとり方
アクションでなんのリアクションをしたのか場合分けしたい場合は、message から取得してください。また、誰がリアクションしたのかも取れるようになっています。
def call # Ruboty.logger.info message.reaction # Ruboty.logger.info message.reaction_by unless message.reaction_by == message.robot.name case message.reaction when '+1' message.add_reaction('thumbsup') end end end
ハンドラーのほうでリアクション名/ユーザー名で条件づけできるようにしても良かったのですが、面倒くさかったのでやめました
デフォルトアクションを無効にする
ruboty-slack_reaction_added デフォルトアクションを無効にしたい場合は、環境変数に「DISABLE_DEFAULT_REACTION_HANDLERS=1」を設定してください。
最後に
結構便利なものができた気がする。
0 件のコメント:
コメントを投稿