なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

Slackのメッセージを一括削除したいのでslack-cleaner2を使った話

Slackのメッセージを消したいのでslack-cleaner2を使った話

動機

  • Slackのbotなどを使っており、テストでbotが作ったメッセージを消したい
  • slack-cleanerを使ってメッセージ削除しようとしたらAPI変更とかの影響で削除できない

リポジトリ
github.com

Slack側の設定手順

https://github.com/sgratzl/slack_cleaner2#user-token-scopes-by-use-case

すると以下のように見えるはず

  • user oauth tokenとbot oauth tokenがあるのだが、普段botとして稼働させる方にはbotトークンを使用して、管理用のトークンにuser oauth tokenを使えばいいのではと思った

f:id:panzer-jagdironscrap1:20210327100744p:plain

インストール手順

$ python --version
Python 3.6.10
$ pip install slack-cleaner2

メッセージの削除

  • SlackCleanerのインスタンストークンを食わせると動作する。足りない権限があればメッセージが出る。
$ python
Python 3.6.10 (default, Aug 22 2020, 00:49:22) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from slack_cleaner2 import *
>>> 

// トークンを設定
>>> s = SlackCleaner('xoxp-***')
>>> 
>>> s.users
ワークスペースのユーザーを全て出す
[xxx, xxx...]

>>> [msg for msg in s.c['YOUR CHANNEL NAME'].msgs(with_replies=True)]
チャンネルのメッセージを全て出す

>>> for msg in s.c['YOUR CHANNEL NAME'].msgs(with_replies=True):
...   msg.delete()
... 
チャンネルのメッセージを全部消す
..........

素晴らしい