下記のようなコードを作って実行してみたけど、削除できなかった。理由は権限不足だった。 解決策をちょっと調べたけど分からなかったのであきらめた。
const {webClient, WebClient} = require('@slack/web-api'); require('dotenv').config(); const token = process.env.SLACK_TOKEN const web = new WebClient(token); const channelName = 'general'; const timeInterval = 1000; const main = async () => { const channelId = await getChannelId(); deleteMessages(channelId); } const getChannelId = async () => { const result = await web.conversations.list(); const channel = result.channels.find(channel => channel.name === channelName); return channel.id; } const getMessages = async channelId => { const result = await web.conversations.history({channel: channelId}); return result.messages; } const deleteMessages = async (channelId) => { const messages = await getMessages(channelId); console.log('messages length:', messages.length); if (messages.length <= 0) return; await _delete(channelId, messages); setTimeout(function(){deleteMessages(channelId)}, timeInterval); } const _delete = async (channelId, messages) => { const message = messages.pop(); if (!message) return false; await web.chat.delete({channel: channelId, ts: message.ts}); setTimeout(function(){_delete(channelId, messages)}, timeInterval); } main();
下記は、Slack APIのchat.delete
のドキュメントです。
日本語訳すると、下記が書いてあった。
一般的なユーザートークンと共に使用すると、そのユーザーが投稿したメッセージのみが削除される場合があります。 管理ユーザーのユーザートークンと共に使用すると、ワークスペースに投稿されたほとんどのメッセージが削除される可能性があります。 ボットユーザーのトークンと共に使用すると、そのボットユーザーが投稿したメッセージのみが削除される場合があります。
最初はボットユーザ使ってたからダメだったのだと思って、管理ユーザでやってみたつもりだったのですが、今度はmissing scope的なメッセージ出てきたよく分からないからやめた。今度調べるかも。