邀请用户组访问空闲公共通道

2024-04-19 08:56:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python3.7和slackversion4.1.2(生产)。我想邀请一个已经存在并且有很多用户的用户组。你知道吗

我在Python3中的尝试:

def invite_user(scid):
    # invite_url = 'https://slack.com/api/channels.invite'
    # invite_url = 'https://slack.com/api/groups.invite'
    invite_url = 'https://slack.com/api/usergroups.update'
    invite_url_data = {
        'token': auth_token,
        'channel': scid,
        'usergroup': 'SPXXXXXX',
        'name': 'testing'
    }
    r = requests.post(url=invite_url, data=invite_url_data, headers=header)
    print(r.json())

有人能帮我找到合适的API来邀请用户组加入频道吗?你知道吗


Tags: 用户httpscomtokenapiurldatadef
2条回答

这不是它在松弛状态下的工作方式。你知道吗

您可以通过https://api.slack.com/methods/groups.info获得组的成员

然后,您可以从group_data["group"]["members"]中为您想要邀请用户的组提取用户id列表。你知道吗

完成相同的操作后,可以在组中添加它们。 每个组有2个用户列表后,可以合并它们,然后发出请求:

    invite_url = 'https://slack.com/api/usergroups.update'
    invite_url_data = {
        'token': auth_token,
        'channel': scid,
        'usergroup': 'SPXXXXXX',
        'name': 'testing',
        'users': [
            "U060R4BJ4", # here are your users from a merged lists
            "U060RNRCZ"
        ],
    }
    r = requests.post(url=invite_url, data=invite_url_data, headers=header)

邀请用户组的用户到专用通道实际上只是一个API调用。在此之前,您需要获取usergroup的用户,这是另一个API调用。而且你不能邀请自己,所以你需要另一个API调用来获取你当前的用户ID

下面是一个使用官方python库的示例脚本。请注意,这将适用于多达1000个用户。如果你的用户组比较大,你需要把它们分块添加。你知道吗

import slack
import os

# init slack client with access token
slack_token = os.environ['SLACK_TOKEN']
client = slack.WebClient(token=slack_token)

# get my own user ID
response = client.auth_test()
assert response['ok']
my_user_id = response['user_id']

# get members of usergroup excluding myself
response = client.usergroups_users_list(usergroup='S12345678')
assert response['ok']
users = [x for x in response['users'] if x != my_user_id]

# add members to private channel
response = client.conversations_invite(
    channel='G12345678',
    users = users
)
assert response['ok']
print(response)

相关问题 更多 >