はじめに
他の方の作られたSlack APPで作ったAPI Tokenを使ってBotの開発していたところ、会社のgeneralチャネルに大量にメッセージを投稿してしまい、対処に焦ったのでcurlを使った削除手順を残します。
自分の作成したSlack APPが投稿したメッセージはUI上から自分で削除できるのですが、他の方の作られたSlack APPが投稿したメッセージはUI上から削除することができない(多分)ので、Slack APIを使って削除する必要があります。
メッセージ削除APIについて
メッセージ削除のAPIはSlack APIの公式ドキュメントに記載してあります。
https://api.slack.com/methods/chat.delete
削除に必要な情報は削除対象のメッセージが投稿されているchannelとts(timestamp)の2つ(+メッセージを誤爆したToken)。
{
"channel": "PARENT_CHANNEL_ID",
"ts": "MESSAGE_TO_DELETE"
}
特定のメッセージのtsはどこから参照できるかドキュメントからでは読み取れない。。
手順で説明します。
手順
1.channel id, tsを取得
削除したいメッセージのメニューから「Copy link」をクリックして、URLをクリップボードにコピーする。
下記のURLがコピーされます。
https://xxxxxx.slack.com/archives/<channel id>/<ts>
-
channel id
はそのままリクエストの値に設定 -
ts
はSlack API上のtsの形式に書き換える- 先頭の
p
を削除 - 末尾6桁のところで
.
で区切る
- 先頭の
p1596432722002300 → 1596432722.002300 (これをAPIのリクエストに使用する)
2.curlコマンドを叩く
curl -XPOST "https://slack.com/api/chat.delete?token=<token>&channel=<channel id>&ts=<ts>"
成功すると以下のようなレスポンスが返ってきます。
{"ok":true,"channel":"<channel id>","ts":"<ts>"}
以上です。
最後に
メッセージ削除APIの情報自体はすぐに見つけられましたが、tsを変換する方法が分からず削除するまで結構時間を要してしまいました。参考リンクに感謝です。