こんにちは、学生エンジニアのしば(@akahire2014)です。
最近、slack botをrubyで作ってみたら簡単に作れたので作り方を紹介しようと思います。
家族間で不足している日用品を管理してくれるbotです。
機能紹介
コマンド説明
「秘書!」と読んだらできることを教えてくれます。

ランダム家事当番決め
「ビンゴ!」と言ったら、家事当番をランダムで決めてくれます。
実行の度に結果が変わっているのがわかると思います。

占い
占いをしてくれる昨日を作りました。悪い結果はいらないので大吉、中吉、小吉、吉しか出ないように設定してあります。

買い物リストの表示
これが今回作ったbotで一番頑張った機能です。
特定の発言をトリガーとして、家族間で不足している日用品を管理してくれるようにしています。
「買い物リスト!」と発言するとデータベースに保存してある、不足している日用品をリストしてくれます。

不足しているものの登録
不足したものをつぶやくと、正規表現(文字列を検索してくれるやつ)を使って不足している品物の名前と個数を取得してリストに追加してくれます。

購入したものの報告
購入したものをID番号と個数でbotに話しかけると、その情報を正規表現を使って取得してデータベースを更新してくれます。

slack botの作り方を紹介
LEGACY_TOKENの取得
slack botを作るにはslack botを動かしたいslack teamで発行されるLEGACY TOKENというものを取得する必要があります。
このLEGACY TOKENの置き場所がしょっちゅう変わるのでめんどくさいのですが、僕の作った時は『slack legacy token』と検索することで取得するためのページが1ページ目に出てきました。

このページに入ると

こんなところがあるのでcreate tokenを押してtokenを作成してください。
このtokenは誰にも知られてはいけません。コードを公開したり、herokuにあげたりする時は気をつけてください
require 'slack' Slack.configure {|config| config.token = 'ここにtokenを設定' } client = Slack.realtime #botに発言させる Slack.chat_postMessage(text: 'botがしゃべる言葉', channel: '#発言させたいチャンネル名') client.on :message do |data| #client.onのなかでユーザーの発言を取得できる #「買い物リスト!」という発言があってそれがbotじゃない時に動くif文 if data['text'].include?('買い物リスト!') && data['subtype'] != 'bot_message' #処理 end end #動かす client.start
今回紹介したbotは基本的にこれだけで動くようにできています。
ここまで書いたらbot.rbとかで保存して、terminalで「ruby bot.rb」とすると動きます。

まとめ
slack botは簡単に面白いものが作れます。
LIne botとかだとセキュリティが厳しかったりherokuやawsにあげたりしないと利用できないのでハードルが高いです。
その点slack botは簡単に作れて友達に「すげえ」って言われるようなものが作れるのでrubyを使える人はぜひトライしてみてください!
この記事もどうぞ!
[割引情報あり]物理学科の僕がTECH::CAMPを88時間受講した結果
他の人はこの記事も読んでいます
スポンサーリンク