LoginSignup
9
4

More than 5 years have passed since last update.

SlackでGET WILDリアクションを自動化する

Last updated at Posted at 2017-02-22

概要

  • 私が入ってるslackチャンネルはよくGET WILDリアクションをされます
  • 新しく入った人を歓迎するとき。
  • お前ちょーGETWILDじゃん!と賛辞するとき。
  • それを自動化したい



スクリーンショット 2017-02-22 15.05.17.png

内容

①slackのWebAPI用tokenを作る

  • 「slack token」でググると簡単に作れると思います。

②対象のチャンネルを取得する

### 通常
$ curl -s "https://slack.com/api/channels.list?token=TOKEN入れてね" | jq . 

### privateチャンネル
$ curl -s "https://slack.com/api/groups.list?token=TOKEN入れてね" | jq .

コード書く

$ vim slack_reaction_getwild.sh
#!/bin/bash -
### usage: /bin/bash getwild.sh add 1
# $1: add or remove
# $2: The message of the history number
set -eu
: $1 $2

declare -r TOKEN="xxxxxxxxxxxxx"
declare -r CHANNELID="xxxxxxxx"
declare -r TARGET_MESSAGE=$2

### この絵文字はカスタムです。登録してね!
emoji=(
  "emoji_g"
  "emoji_e"
  "emoji_t"
  "emoji_w"
  "emoji_i"
  "emoji_l"
  "emoji_d"
)

if [[ ! ( $1 == "add" || $1 == "remove" ) ]];then
  echo -e "set add or remove!!"
  exit 1
fi

### ターゲットとなるメッセージのtimestampを取得する
### 下記はプライベートチャンネルのhistoryの取得です。
### 通常チャンネルはgroups.historyをchannels.historyに文字を変えてください
ts=$(curl -s "https://slack.com/api/groups.history?token=${TOKEN}&channel=${CHANNELID}" | jq .messages[].ts | head -n $2 | tail -1)

for i in ${emoji[@]};do
    curl -s "https://slack.com/api/reactions.$1?token=${TOKEN}&channel=${CHANNELID}&name=${i}&timestamp=${ts}" > /dev/null
done

実行

  • 第1引数: add or remove
  • 第2引数: 履歴の何番目のメッセージか
$ /bin/bash slack_reaction_getwild.sh add 2
$ /bin/bash slack_reaction_getwild.sh remove 2



get_wild_reaction.gif

最後に

  • 次はslashコマンドにしたいです
9
4
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
9
4