日頃の行い

個人的な日頃の行いをつらつら書いてます\\\\ ٩( 'ω' )و ////

Hubotによるポエム、猫、それはまさにすばらしきこのせかい。

この記事はChatOps Advent Calendar 2015 - Qiitaの6日目として書かれています。

こんにちは @ara_ta3 です。
私は Dark - Developers at Real Kommunity | Doorkeeper というコミュニティで活動してるのですが、このコミュニティではSlackをコミュニケーションツールとして利用してます。
今日はそこでよく使われているDark Botの話をしようと思います。

Dark Bot?

私達のコミュニティのSlack内にいるHubotです。

Hubot - https://hubot.github.com

どんな機能があるの?

例えば dark catdark poemです。
なんとなくわかりそうでわからないと思いますが、Dark Bot

  • dark cat 猫による癒やしを与える。
  • dark poem オサレポエムによって自らの中にあるなんとも言えない気持ちを解消してもらう。

と言った機能を持っています。
つまりこれらは僕らの気持ちの状態をいい方向へ持って行ってくれるすばらしい機能です。
例えば、心が廃れた時、猫の画像が見たくなるじゃないですか。
例えば、心が廃れた時、オサレポエムが見たくなるじゃないですか。
ちなみに私は dark cat マンチカンとうちます。
Chatによって、人の状態を改善するOpを実行する。最高のChatOpsですね!!!11

実装について

dark cat

ただただhubot imageです。

github.com

dark cat -> dark image 猫
dark cat hoge -> dark image 猫 hoge
となるような実装を行っています。

こんな感じになります。
f:id:arata3da4:20151206020431p:plain

つい先日長らくDeprecatedだったAPIが閉じられたせいでhubot imageが無料で使えなくなったりしましたが、Google Custom Searchを利用すれば利用可能です。
無料枠は100 requests / day みたいですね。

developers.google.com

Google Custom Searchの設定等は本アドベントカレンダーの2日目の記事がとてもわかりやすいと思います。

qiita.com

dark catだけで猫の画像が見れる最高の機能でした。

dark poem

ただただ、設定されたポエムのリストの中からランダムで1つを返してくれる機能です。
poems.jsonにポエムリストをためておき、その中からランダムで取得しています。
例えばこんな感じです。
f:id:arata3da4:20151206021900p:plain

実装は下記のような形。

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 - Qiitapine613 さんによる記事です。
お楽しみに。