Slack用の妹(Elona)botを作ったお話
- 2018.12.13
- 技術情報
- bot, Elona, Google Apps Script, Slack

事の発端
以前、Google Apps Scriptと連携させて社内勉強会の出欠を取るSlack用のbotを作成したのですが、次に何作ろうかな〜と考えていたのでした。
そんなときに別会社の先輩(@chemieclubさん)と呑みに行くことになりまして、先輩に何気なく「次作るの何が良いですかね〜」と聞いたときに「妹(Elona)botが欲しい」という話しになったのがきっかけです。
ちなみに関係ありませんがアイキャッチの画像はSlackのサンフランシスコオフィスらしいです。めちゃくちゃオシャレですよね…!
こちらはSlack公式のブランドガイドラインからお借りしました。
妹(Elona)botの有する機能
実は、僕はElonaについて名前とゲームであることぐらいしか知らなかったので、もちろん妹(Elona)のことも知りませんでした(
先輩からある程度説明を受けた知識と、Elonaのwikiを見ながらどんな機能を実装するか決めました。
1.ユーザーに対して定期的に話しかけてくる
妹(Elona)はゲーム内で何もしてなくても定期的に話しかけてくると聞きましたので、ユーザー側で指定したインターバル毎に妹botから話しかけてくる機能を実装しました。
インターバルは10分〜24時間の中で指定できるのですが、妹botは深夜でも容赦なく話しかけてきます!
それが原因かどうかはわかりませんが、残念ながら今はこの機能を使っている人はいません。。
ちなみに設定を解除したときは妹(Elona)の敗北テキストが表示されます。
2.ユーザーの入力に対して反応してくれる
やり取りができたほうが楽しいので、特定のワードに反応する機能を実装しました。
一応会社で使ってるSlackチームなので、スラッシュコマンドを入力したチャンネルでのみ反応するようにしました。DMチャンネルでも実行できます。
“妹” という単語に反応するのですが、いろんな “妹” の入力に反応するようにしました。その方が楽しい気がしたので!
3.妹(Elona)に対して帰宅を宣言できる
スラッシュコマンドを用いて帰宅を宣言できます!
疲れて帰ってきたときなんかに使えばいいんじゃないかな!
4.妹(Elona)に対して勝利を宣言できる
スラッシュコマンドを用いて勝利を宣言できます!
なにかに勝利したときなんかに使えばいいんじゃないかな!(投げやり)
妹botは上記4つの機能を搭載しています。1,2が主な機能で3,4はおまけで実装したようなものですが…w
妹(Elona)botの仕組み
ここからは少しだけ技術的なお話を書きます。
ガッツリした技術面のお話は気が向いたらそのうち別の記事にしようと思いますので、この記事ではサクッと、どんな構成で動いているとかその辺のお話を_(:3」∠)_
Slack botの種類について
Qiitaの記事で非常にわかりやすくまとめて下さっている方がいらっしゃいましたので、こちらをご覧ください。
bot作成で一番簡単な方法としては、先程のリンク先の1番目に書いてあるWebhookを使用する方法だと思います。
Incoming(botからの発言)しか書かれていませんがOutgoing(botでのメッセージ受信)も用意されています。 Outgoing Webhooks | Slack
僕は表でいうと2,4,5番目の方法をそれぞれ使用しています。
- Slash command
- Bot users (Event API利用)
- Bot users (フル)
Webサーバーが必要な機能ばかり使っていますが、サーバーは用意していません。構成に寄りますがお金かかりますしね_(:3」∠)_
できるだけ無料で実装したかったので、今回は別の方法をとっています。
Webサーバーについて
Webサーバーの代わりにGoogle Apps Scriptを利用しています。サーバーレスで簡易に実行できますし、GETやPOSTなどHTTPメソッドの実装も可能です。
一部制限がありますが、基本的には無料で使えます! Quotas for Google Services | Apps Script | Google Developers
これに加えて、データベースの代わりとしてGoogle Fusion Tablesを使用しています。しかしこの選択が後々問題を起こすことに…
その話はまた後日書きたいと思います。
まとめ
このような感じでサクッと作ってみました。
作り始めてから1~2週間ぐらいで作ったと思います。実は作ったのはもう4ヶ月ほど前のことなのであんまり覚えてない…
先輩にも一応喜んでもらえたので、個人的には満足です!w
- 前の記事
ブログ始めてみました 2018.08.24
- 次の記事
ionicで画像ファイルをWEBサーバーにアップロードする 2018.12.25