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

内容
①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}×tamp=${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

最後に
- 次はslashコマンドにしたいです