こんにちは, またくです。

slack で朝まで正解を求めたくなるような激論をしたくなったと言われたので, お題を出してくれる bot を ruboty-plugin という形で作りました。ruby gem 作ったことなかったので, 勝手が分からなかったのですが, 世の中なんとかなるもんですね。

https://github.com/rhythnn/ruboty-gekiron


常日頃動いている ruboty のリポジトリの Gemfile にこれを追加し, 以下のような yaml を ./config/topics.yml として設置すると, その中から話題を選び反応してくれるような仕組みです。

- かっこいい言葉
- テンションが上がるもの
- さらりと言えたらかっこいい言葉
- 怖いもの
- 心が癒やされること


作るにあたり, どうすればできるかなと ruboty のコード自体を見ていると, ハンドラを新しく作り, on で反応して欲しい単語を設定して, 対応する name のメソッドを作れば良いような仕様になっていました。これを使えば動きそうというあたりが付けやすかったです。

# example
module Ruboty
  module Handlers
    class Gekiron < Base
      on(
        /topic|gekiron|激論/,
        name: 'topic',
        description: '激論しそうな話題を返します',
      )

      def topic(message)
        Ruboty::Gekiron::Actions::Topic.new(message).call
      end
    end
  end
end


line も使っていますが, 生活する上で色々便利なので, slack を使う時間が増えました。

色んなチームの slack チームに入らせてもらったり, 自分用でも色々通知してくれるチームを作ったりと, 日常を彩る上で欠かせない存在に1年でなっているので, いつもありがとうございますという気持ちになります。