就職無理学部物理学科

旧帝大の理系大学生が物理とプログラミングのブログ

【コピペで作れる】rubyで秘書型slack botを初心者でも簡単に作れた

f:id:umauma01:20170602081350p:plain

こんにちは、学生エンジニアのしば(@akahire2014)です。

最近、slack botをrubyで作ってみたら簡単に作れたので作り方を紹介しようと思います。

家族間で不足している日用品を管理してくれるbotです。

機能紹介

コマンド説明

「秘書!」と読んだらできることを教えてくれます。

f:id:umauma01:20170531225138g:plain

ランダム家事当番決め

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

f:id:umauma01:20170531230641g:plain

占い

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

f:id:umauma01:20170531232348g:plain

買い物リストの表示

これが今回作ったbotで一番頑張った機能です。

特定の発言をトリガーとして、家族間で不足している日用品を管理してくれるようにしています。

「買い物リスト!」と発言するとデータベースに保存してある、不足している日用品をリストしてくれます。

f:id:umauma01:20170531233718g:plain

不足しているものの登録

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

f:id:umauma01:20170531234307g:plain

購入したものの報告

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

f:id:umauma01:20170531234817g:plain

slack botの作り方を紹介

LEGACY_TOKENの取得

slack botを作るにはslack botを動かしたいslack teamで発行されるLEGACY TOKENというものを取得する必要があります。

このLEGACY TOKENの置き場所がしょっちゅう変わるのでめんどくさいのですが、僕の作った時は『slack legacy token』と検索することで取得するためのページが1ページ目に出てきました。

f:id:umauma01:20170601180644p:plain

このページに入ると

f:id:umauma01:20170602001742p:plain

こんなところがあるので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」とすると動きます。

f:id:umauma01:20170602080412p:plain

まとめ

slack botは簡単に面白いものが作れます。

LIne botとかだとセキュリティが厳しかったりherokuやawsにあげたりしないと利用できないのでハードルが高いです。

その点slack botは簡単に作れて友達に「すげえ」って言われるようなものが作れるのでrubyを使える人はぜひトライしてみてください!

この記事もどうぞ!

[割引情報あり]物理学科の僕がTECH::CAMPを88時間受講した結果