概要
Slackのカスタム絵文字(emoji)にまつわる問題を解決します。
- ある人が作った絵文字を一括ダウンロードしたい
- 絵文字をまとめてアップロードしたい
- あるワークスペースの絵文字を別の場所でも使いたい
背景
ある人の退職に伴い、絵文字の引継ぎをしたいと思ったのが背景です。
Slackのカスタム絵文字はアカウントと紐づいているため、それを作成したアカウントが退会するとただの文字として表示されるようになってしまいます。そこで絵文字をバックアップできるツールを探していました。しかし、"特定ユーザの作成した絵文字"ではなく、ワークスペースにある絵文字全部を取得してしまうツールがほとんどで、6000個余りのカスタム絵文字が存在する弊社では不要な絵文字が多すぎ、役に立ちませんでした。
そこで特定ユーザの作成した絵文字をバックアップできるツールであるemojmeを見つけたので紹介します。
emojme
何をするツール?
ユーザ別に絵文字を取得したり、取得した絵文字をアップロードしたりするツールです。
なぜ動くの?
Slackの公開APIである emoji.listではなく、非公開のAPIであるemoji.adminListを叩いて絵文字リストを取得するため、ユーザ別で取得できるようになっています。
したがって動作にはUser tokenが必須になっており、bot用のトークンでは動作しません。
動かし方
導入
npm install -g emojme
動作に必要なAPIトークンの取得方法(https://github.com/jackellenberger/emojme#slack-for-web)
${SUBDOMAIN}
にSlackのワークスペースのサブドメイン名が入っているものとします。
-
https://${SUBDOMAIN}.slack.com/messages
にアクセスします。 - 右クリックして「検証」→上のタブの「Console」→下の文字列を入力しEnter
window.prompt("your api token is: ",/api_token: "(.*)"/.exec(document.body.innerHTML)[1])
- APIトークンが表示されるので、これをコピーします。
ある人が作った絵文字を一括ダウンロードしたい
emojme download --subdomain $SUBDOMAIN --token $TOKEN --save $USER
-
$SUBDOMAIN
: Slackのワークスペースのサブドメイン名 -
$TOKEN
: APIトークン -
$USER
: ユーザのスクリーンネーム(@〜 ではなく表示される名前)
カレントディレクトリ以下にbuild/$subdomain/$userというディレクトリが作られ、その中に絵文字がダウンロードされます。
絵文字をまとめてアップロードしたい
emojme add --subdomain $SUBDOMAIN --token $TOKEN --src $DIR
-
$SUBDOMAIN
: Slackのワークスペースのサブドメイン名 -
$TOKEN
: APIトークン - アップロードしたいディレクトリ名