この記事はChatOps Advent Calendar 2015 - Qiitaの6日目として書かれています。
こんにちは @ara_ta3 です。
私は Dark - Developers at Real Kommunity | Doorkeeper というコミュニティで活動してるのですが、このコミュニティではSlackをコミュニケーションツールとして利用してます。
今日はそこでよく使われているDark Botの話をしようと思います。
どんな機能があるの?
例えば dark catとdark poemです。
なんとなくわかりそうでわからないと思いますが、Dark Botは
- dark cat 猫による癒やしを与える。
- dark poem オサレポエムによって自らの中にあるなんとも言えない気持ちを解消してもらう。
と言った機能を持っています。
つまりこれらは僕らの気持ちの状態をいい方向へ持って行ってくれるすばらしい機能です。
例えば、心が廃れた時、猫の画像が見たくなるじゃないですか。
例えば、心が廃れた時、オサレポエムが見たくなるじゃないですか。
ちなみに私は dark cat マンチカンとうちます。
Chatによって、人の状態を改善するOpを実行する。最高のChatOpsですね!!!11
実装について
dark cat
ただただhubot imageです。
dark cat -> dark image 猫
dark cat hoge -> dark image 猫 hoge
となるような実装を行っています。
こんな感じになります。
つい先日長らくDeprecatedだったAPIが閉じられたせいでhubot imageが無料で使えなくなったりしましたが、Google Custom Searchを利用すれば利用可能です。
無料枠は100 requests / day みたいですね。
Google Custom Searchの設定等は本アドベントカレンダーの2日目の記事がとてもわかりやすいと思います。
dark catだけで猫の画像が見れる最高の機能でした。
dark poem
ただただ、設定されたポエムのリストの中からランダムで1つを返してくれる機能です。
poems.jsonにポエムリストをためておき、その中からランダムで取得しています。
例えばこんな感じです。
実装は下記のような形。
poem.coffee
json = require '../settings/poems.json' class Util shuffleAll: (targets) -> i = targets.length if i is 0 then return false while --i j = Math.floor Math.random() * (i + 1) tmpi = targets[i] tmpj = targets[j] targets[i] = tmpj targets[j] = tmpi return targets shuffle: (targets, idx) -> targets = this.shuffleAll targets idx = if(idx == undefined ) then 0 else idx targets[idx] util = new Util module.exports = (robot) -> robot.respond /poem$/i, (res) -> res.send util.shuffle json.poem
特におすすめのオサレポエムの参考はここです。matome.naver.jp
まとめ
- 猫やポエムは人の心を救う。
- なにかつらいことがあったらdark poem または dark catと打ちましょう。きっと救われます。
明日の ChatOps Advent Calendar 2015 - Qiita はpine613 さんによる記事です。
お楽しみに。