🖥

#Slack API を叩いて全メンバーを一個のチャンネルに招待する #python スクリプトの例 (雑バージョン)

2019/05/29に公開

ATTENTION

  • チャンネルIDの取得方法は適当にググる (チャンネル名ではない)
  • Slack App を登録して Tokenを得て、適切な Permission を設定しておく
  • メンバー数が多い場合には対応していない、ページングに対応していない
  • 重複招待でエラーが返ってくる問題にも対応していない
  • API制限に引っかかったら適当に sleep 入れるなりして対処してください
  • 例では無意味に jq コマンドかましてます

all-member-list.py

#!/usr/bin/env python3

# https://api.slack.com/methods/users.list

import requests, os, json

url = "https://slack.com/api/users.list"

params = {
  "token" : os.environ.get('SLACK_TOKEN'),
}

headers = {
  'Content-type': 'application/json'
}

res = requests.get(url, headers=headers, params=params)

print(json.dumps(res.json()))

invite-to-channel.py

#!/usr/bin/env python3

# https://api.slack.com/methods/channels.invite
# https://slack.com/api/channels.invite

import requests, os, json, sys

url = "https://slack.com/api/channels.invite"

members = json.loads(sys.stdin.read())

for member in members:
  params = {
    "token" : os.environ.get('SLACK_TOKEN'),
    "channel" : os.environ.get('CHANNEL'),
    "user" : member.get('id'),
  }
  
  headers = {
    'Content-type': 'application/json'
  }

  res = requests.post(url, headers=headers, params=params)

  print(json.dumps(res.json()))

exe

export SLACK_TOKEN=xxxxxxxxxxxxxxxx && ./all-member-list.py | jq -r '.members' | CHANNEL=xxxxxxx ./invite-to-channel.py

ワークスペースのデフォルトチャンネルを設定

一度全員招待しても、WorkSpaceのメンバーが増えたらやり直しなので、admin設定でデフォルトチャンネルも設定しておくと良いかも

https://example.slack.com/admin/settings

image

有料プランなら

  • 全メンバーをSlackグループに入れておく
  • グループに対して invite する

っていう手順で、API叩かなくてもできるかもしれません。

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2067

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-05-29

Discussion