14
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SlackAdvent Calendar 2018

Day 15

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

Last updated at Posted at 2018-12-16

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をパターンマッチして処理をかけるので、とても実装が楽でした。
かけ声は ボディビルのかけ声辞典とネットでまとめられたものを載せています。

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

14
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?