Edited at
SlackDay 15

デカい!血管うねうねマスクメロン!と叫んでくるSlack Botを作った💪

Slack Advent Calendar 2018 - Qiita の15日目の記事です。

遅刻して申し訳ございません :bow:


概要

みなさんはボディビル大会でのかけ声という文化をご存知でしょうか。


辛く苦しいトレーニングを乗り越え、自分だけの肉体を作り上げてきた選手たち。ステージにたどり着くまでに、どれほどの努力を積み重ねてきたのか。そのバックボーンへの感動と賛美の声が自然と声に出てしまう。それがボディビル大会における"かけ声"の正体。

--- スモール出版 「ボディビルのかけ声辞典」 より引用


最近ではテレビなどでもよく特集されているので、ご存知の方も多いと思います。

(自分もネットで話題になっていて知りました)

とても個性的で面白いかけ声が多く、会社でも一部のメンバーがよく使っていたりまします

エンジニア> このコントローラー、厚みがあってデカい!

エンジニア> (JSファイルが500KBを)切れてる!切れてる!

というわけで、かけ声をランダムに発言してくれるBotを作ってみました💪


作成したもの

スクリーンショット 2018-12-16 09.43.05.png

:muscle: が最後につくか,emoji reaction で :muscle: がつけられたときに反応します🏋️‍♂️


実装

実装は Elixir で行いました。

Slackへの連携部分は Elixir-Slackというライブラリがあったのでそちらを使用しています。

  def handle_event(message = %{type: "reaction_added", reaction: "muscle" <> _}, slack, state) do

%{item: %{channel: channel}, item_user: user_id} = message
shout(user_id, slack, channel)
{:ok, state}
end

def handle_event(message = %{type: "message"}, slack, state) do
%{text: text} = message
if text |> String.ends_with?(":muscle:") do
shout(message.user, slack, message.channel)
end
{:ok, state}
end

SlackからのRTMをパターンマッチして処理をかけるので、とても実装が楽でした。


かけ声は ボディビルのかけ声辞典とネットでまとめられたものを載せています。

みなさんもよかったら使ってみてください💪

(個人的には そこまで仕上げるために眠れない夜もあっただろうに が好きです。デプロイした人に言ってあげたい)