LoginSignup
6
9

More than 3 years have passed since last update.

Slack APIでメッセージ削除

Last updated at Posted at 2020-08-03

はじめに

他の方の作られた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を変換する方法が分からず削除するまで結構時間を要してしまいました。参考リンクに感謝です。

参考リンク

Slack API | メッセージのURLからメッセージ内容を取得する

6
9
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
6
9