ハマりどころ
conversations.listを利用してワークスペース内のチャンネル一覧を取得するため、types='public_channel,private_channel'
としてconversations_list
を実行したが、パブリックチャンネルしか取得できない
python
# 取得したトークン
token = os.environ.get('SLACK_BOT_TOKEN')
# Slack の WebClient を生成
client = WebClient(token=token)
# チャンネル一覧を取得
response = client.conversations_list(types='public_channel,private_channel')
channels = response['channels'] # <-パブリックチャンネルしか取得できない
pythonでのapiの呼び出し方の問題かと思い、slackのAPIページのテスターで実行してみたものの結果は変わらず
APIのexampleでもpublic_channel,private_channel
となってるのになんでだろう?と色々試してみるもののなかなか解決せず
解決法
types='public_channel,private_channel'
とするとpublic_channel
が1ページ目、public_channel
が2ページ目に出力されるので、以下のように各ページに対して処理を行ってあげる
python
# 取得したトークン
token = os.environ.get('SLACK_BOT_TOKEN')
# Slack の WebClient を生成
client = WebClient(token=token)
# チャンネル一覧を取得
response = client.conversations_list(types='public_channel,private_channel')
for page in response:
for channel in page['channels']:
# 個別の処理
(@seratch(Kazuhiro Sera)さんコメントありがとうございます!)