読者です 読者をやめる 読者になる 読者になる

RSは筆不精

OSやらプログラムやらを中心に自分のまとめがてらに書いていきます。

Slackで新しいChannelが作成された通知をするbotを作成する

プログラミング Ruby

暑いのダメ,ゼッタイ
唐突ですが,暑いっすね。道を歩いているだけで汗が出るとか中々のもんですよ。 時事ネタは置いておいて,Slackのbotを作成しました。
Slackの新しいChannelが出来た際に通知してくれる系botRubyslack-ruby-clientで作成しました。 f:id:rikyuusima:20160702162705p:plain
そんなに難しいものではないですが,一応記事にしておきます。

経緯

そもそもなぜこのbotを作ることになったかというと, とある部活とある先輩 から
※プライバシー保護のため音声を変えております
f:id:rikyuusima:20160702163412p:plain
とのありがたいお言葉を頂き 作らざるを得なくなった 作ることとなりました。

手順

ざっくりと説明しますと,Slack APIのトークンを取得してゴニョゴニョやると出来上がりです。
具体的には,channel_createdというAPI Eventを用います。

botの登録

まずはSlack Appとしてbotを登録します。
Botsと検索して登録をゴニョゴニョやってください。 f:id:rikyuusima:20160702165538p:plain
いろいろ登録できたらトークンが取得出来たと思います。
このトークンをどこかしらに保存しておくといいかも知れません。

これで,botの外側(ユーザーとか)ができました。

botの中身

次にbotの中身(反応とか)を作っていきます。

今回はRubyとslack-ruby-clientで作りますが,中身は別の言語とライブラリでも作ることが出来ます。(ライブラリ例)
必要なソースだけ切り取るとこんな感じになりました。

トークンを使ってEventを取得しています。 14行目からが新しいChannel通知に関するソース です。
詳しくはSlack APIAPI Eventsを参考にしながら確認してみてください。

トークンはソースにそのまま記述するよりファイルに記述して読み込みしたほうがいいかと思います。 全体のソースはこちらです。
Slack-Bot - GitHub
ところで,最近のネットソースは環境のバージョンによって互換性が無いことが結構あるかと思います。
私も色々苦労するので,今回の開発環境のバージョンを記述しておきます。

  • Ruby - 2.3.1
  • gem - 2.5.1
    • slack-ruby-client - 0.7.5

全体のソースではデーモン化など色々なものを追加してデプロイ直前の状態まで持っていっています。 合わせて確認してみてください。

感想

なかなか簡単にbotができることに驚いた次第です。
とはいえ,最初検索した時hubotのソースが大々的に出ていてhubotで何とかやろうと悪戦苦闘して結局 死んでしまった ので作成には1週間くらいを要しました。
ただ,実質の開発時間は 3時間 くらいで出来上がってしまいました。

検索ソースをそのままやっていては余計時間がかかると実感した開発でした,トホホ…

皆様も,夏バテに気をつけてbotライフを送ってみてはいかがでしょう?