Slackの絵文字を全部消したい!
Slack
に絵文字を大量に登録したのはいいんだけど、エイリアスが気にいらない。
全部なおすのはめんどくさいので、一括削除して登録し直したかった。
Slack には一括削除ボタンがない
こういうところ気が利かないよなぁ・・・とか勝手に思いつつ、なければ作ればいいじゃない?
ブラウザ のコンソールから JavaScript を実行させる
ブラウザ のコンソールから、JavaScript で削除ボタンと確認ボタンを押しまくるスクリプトを作成。
無事削除出来ました。
削除スクリプトの例
下記がその削除スクリプト。
これ流すと絵文字全部消えちゃうからね!
https://[team].slack.com/customize/emoji
([team]
は自分のチーム名)にアクセスして、下記スクリプトを開発者ツールにコピペ & Enter!!
// https://[team].slack.com/customize/emoji に移動して実行
!(function() {
// 300ms待つ関数
function sleep() {
return new Promise((resolve) => {
setTimeout(resolve, 300)
})
}
// 削除ボタンを探して、あるうちは押しまくる
async function allRemove() {
let button = document.querySelector('button.c-button-unstyled')
while (button) {
button.click() // 削除ボタンをクリック
await sleep() // ちょっと待つ
// ダイアログのボタンを探してクリックする
document
.querySelector(
'button[data-qa=customize_emoji_single_delete_dialog_go]'
)
.click()
await sleep() // ちょっと待つ
// 削除ボタンを探す
button = document.querySelector('button.c-button-unstyled')
}
}
// 削除実行
allRemove()
})()
ちなみに一括登録は
emojipacks
とslack-emoji-importer
が有名だけど、どっちもコケて動かなかった。悲しい。
入れたかったのはポケモン絵文字、全 152 種。
https://github.com/Templarian/slack-emoji-pokemon
で公開されています。
yaml があっても slack に取り込めない
yaml
で名前とイメージファイルのリンクが列挙されているのですが、このままではslack
に取り込めません。
そこで curl でいったん全部の画像をダウンロードします。
yaml
からJavaScript
オブジェクトに変換して、console.log
から curl
コマンドを吐き出しまくります。
const pokemons = [
{ name: 'フシギダネ', src: 'http://i.imgur.com/J9ynKU9.png' },
{ name: 'フシギソウ', src: 'http://i.imgur.com/2BmEJY1.png' },
{ name: 'フシギバナ', src: 'http://i.imgur.com/HyvH3iG.png' },
{ name: 'ヒトカゲ', src: 'http://i.imgur.com/jee6nD3.png' }
// --- 以下略 ---
]
// curlコマンドにする
const results = []
for (const p of pokemons) {
results.push(`curl -s ${p.src} > p-${p.name}.png`)
}
console.log(results.join('\n'))
ファイル名に p-
のプレフィックスを付けています。
ファイル名がそのまま絵文字に対応するので、:p-フシギダネ:
で呼び出せるようになります。
ログに吐かれたコマンドをコピーして、WSL で実行。
152 個の png ファイルがダウンロードされます。
Chrome 拡張を使ってアップロード
Neutral Face Emoji Tools という Chrome のアドオンツールでアップロードしました。
絵文字ファイルが 1 つもないと D&D アップロード用の領域が表示されません。
なんでもいいので、ひとつは画像ファイルをアップロードしておきましょう。
あとで消せばいいです。
ただ、一気にアップロードすると Web サーバの時間あたりアクセス制限に引っかかるため 152 個を一括で、というわけにはいきません。
20 ファイルくらいずつアップロードしてはリロード・・・を 8 回繰り返しました。
ふう。
やたらと時間がかかりましたが、ポケモン絵文字をアップロードできました。
チームにはまだ自分しかいないことは、この際すみに置いておきます。