从特定通道Slack API获取所有用户

时间:2017-10-14 14:54:10

标签: python slack-api

我正在尝试使用python创建一个Slack Bot,我有一个问题,我无法从特定频道获取用户,我只有在接受所有用户时才会成功。基本上我只想要那些(例如随机通道)。 到目前为止,我试图从每个用户那里获取团队的ID并将其与频道ID进行比较,但由于每个人都拥有相同的ID并且我无法弄清楚原因,因此失败了。 以下是代码片段:

def users_of_the_channel():
    global slack_client
    #this is the variable which is initialized with SlackClient(BOT_TOKEN)
    api_call = slack_client.api_call( "users.list",channel="C0XXXXXXX") 
    if api_call.get('ok'):
        channels = api_call.get('members')
        for channel in channels:
            print ("this is cool : ", channel['team_id'])

我认为问题在于,当我初始化api_call变量时,我使用users.list参数调用该函数,我尝试使用usergroups.listusergroups.users.list,但没有成功。 基本上要保持简短,我需要通道中的用户列表,文档没有帮助我。

2 个答案:

答案 0 :(得分:2)

users.list不会将渠道ID作为您在API调用中提供的输入。

Slack为不同的团队提供不同的机器人令牌。 只需使用需要用户列表的团队的机器人令牌调用api,您将获得成员列表。

client = SlackClient(SLACK_BOT_TOKEN)
request = client.api_call("users.list")
if request['ok']:
    for item in request['members']:
        print item['name']

有关可以通过api调用提供的可选参数的更多详细信息,请参阅文档(https://api.slack.com/methods/users.list)。

答案 1 :(得分:0)

您可能可以使用新的conversations API来检索该API(特别是conversations.members端点): https://api.slack.com/methods/conversations.members