この記事は絵文字 / Emoji Advent Calendar 20164日目の記事です。
最初に謝らなくてはならないのですが、、
カレンダーの主旨を思いっきり間違えました\(^o^)/わほーい
始まってみりゃそりゃそうだって感じなのですが、私は完全に「自分の好きなemojiについて書く」カレンダーだと思っていたのです・・。
しかし新しくネタをこしらえる時間も技量もなく、穴をあけるのもあれなので自分の好きなemojiの話をします・・・。一応技術的な話なので許してください (´;ω;`)ブワッ
初めてのBotと👼
書いてる人はエンジニア暦の浅いペーペーのPHPerなのですが、少し前に初めてHubotでSlackBot作りに取り組みました。
MTGの書記と進行を神の采配で決めてくれるという意味で 適当に 名付けたのですが、練習で色々なクソ機能をつけた&実装が穴だらけゆえ社内の方にはかわいがってもらえたようです\(^o^)/
機能1.ズンドコする
メイン機能の抽選。 Herokuで動かしていたので、RedisにMTGメンバーのSlackIDと書記・進行回数を保持して数が偏りすぎないよう適当に抽選してくれます。(コンプラがあれなのでテスト画面ですが、実稼働してました)Botにメンションさせる時、@名前
と文字列で指定すると -_.
などが含まれていた時にうまくメンションしてくれない問題があったので、UserIDを取りに行く実装になっています。
// slackのAPIからユーザリストを取得
url = "https://slack.com/api/users.list?token=#{process.env.SLACK_API_TOKEN}"
id_list = {}
request = require("request")
request url: url, (err, response, body) ->
data = JSON.parse(body)
if data["ok"] == true
・・・
// msg.send "<@#{取得したuser_id}>さん"という形でメンションできる
機能2.飲みたい気持ちを盛り上げる
module.exports = (robot) ->
robot.hear /^.*(酒)+.*$/, (msg) ->
message = [
"(`Д((:beer:(◕ω◕`*)oオラオラ",
"飲みすぎ注意;´・Д・`p《 心 配 》q",
"Ʊ”-ʓ(っ´ω`)っ :beers: ⊂(´ω`⊂ )Ʊ”-ʓ",
]
selected = msg.random(message)
msg.reply "#{selected}"
会話の中に「酒」というワードを発見すると、ランダムで酒を発射してくれます。
さっさと仕事終わらせて飲みに行こうぜ!という雰囲気促進になりますね!(?
機能3.ねぎらう
疲れてる人を癒してくれます。
こちらもランダムメッセージを誰彼構わず発射するので、社長を積極的に殴りに行く事案などが発生しました。
適当なセットアップと実装
実行環境はHubot+Heroku+Coffee.Scriptでした。
主旨とは外れるのでザックリですが、とりあえず動かすところまではごくごく簡単なはず!
npm install -g yo generator-hubot
npm install -g coffee-script
プロジェクト作成
// hubotを作るディレクトリ以下に移動
yo hubot
Procfileの中身を書き換える
web: bin/hubot --adapter slack
ローカルでは\bin\hubot
で実行できます。
herokuでは以下の環境変数あたりを設定してあげるとサクッと動かせます。
HEROKU_URL
HUBOT_HEROKU_WAKEUP_TIME
HUBOT_HEROKU_SLEEP_TIME
HUBOT_SLACK_TOKEN
SLACK_API_TOKEN
HUBOT_SLACK_TEAM
HUBOT_SLACK_BOTNAME
おまけ
👼のemojiめっちゃ愛らしいと思ってたのですが、OSによっては全然かわいくないことに気がつき愕然としました。
iOSだと目がマジで怖い。
みなさんも愛される👼をSlackに飼いましょう\(^o^)/
明日は@nownabeさんの🐟です!
よろしくお願いします!!