まずは、tokenをゲットせよ。
次に、slackclientパッケージに入れる
pip install slackclient
クライアントのインスタンスを作る。pythonってインスタンスって言葉使うんだっけ?
from slackclient import SlackClient slack_token = 'xoxp-**-**-**-****' client = SlackClient(slack_token)
ファイルのリストを得る。
all_files = [] for p in range(1,1000): files = client.api_call("files.list",page=p) all_files.extend(files["files"]) if len(files["files"]) == 0: break
こんな鮮やかじゃないコードなんていらないっていう人は、回れ右で帰ろう。もっとうまく書く方法はあるはずである。
client.api_call("files.list",page=p)
ここが重要である。戻り値は辞書型になってるので、読めば分かる。あるユーザーのファイルだけ得たい場合は、 user="XXXXXXX"
とかを引数に入れれば良い。
最後に、ファイルを削除してみよう
for file in all_files: ret = client.api_call("files.delete", file=file["id"]) if ret["ok"]: print("OK")
これはテストではない。本当に削除される。だから、試しに・・・っていう人は本当に気をつけてね(泣)。
ハマったところとしては page
と username
の扱い。
削除する前にページを走査して、ファイルリストを全て取得おこう。 files.list
は非同期なので、削除しながらリストを得るとハマる。
username
。現代のSlackで username
は存在しない。名無しの権兵衛ではなく、IDで管理されている。管理社会なのである。だから、特定のユーザーのファイルを削除したい時は file["user"]
のユーザーIDで振り分けよう。
ユーザーリストは次のように得る。
users = client.api_call("users.list") print(users)
pythonなんか分からないっていう人は、pythonぐらい勉強しろよと言いたいところだが、便利なリンクを用意しておく。ここではpythonを使わなくてもAPIが叩ける。
- https://api.slack.com/methods/users.list/test
- https://api.slack.com/methods/files.list/test
- https://api.slack.com/methods/files.delete/test
削除のAPIを叩くと警告なしで削除されるから本当に気をつけろよ。