2017-10-14 1 views
1

Ich versuche, einen Slack Bot mit Python zu machen, und ich habe ein Problem, ich bin nicht in der Lage, die Benutzer von einem bestimmten Kanal zu bekommen, gelingt mir nur, wenn ich nehme alle Benutzer. Grundsätzlich will ich nur solche von (; zB zufälligen Kanal). Bis jetzt habe ich versucht, die ID des Teams von jedem Benutzer zu bekommen und sie mit einer Kanal ID zu vergleichen, aber das ist fehlgeschlagen, weil jeder die gleiche ID hat und ich kann nicht herausfinden warum. Hier ist der Ausschnitt aus dem Code:Holen Sie sich alle Benutzer von einem bestimmten Kanal Slack API

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']) 

Das Problem, das ich glaube, ist, dass, wenn ich initialisieren api_call Variable nenne ich die Funktion mit dem users.list Argumente habe ich versucht, mit usergroups.list und usergroups.users.list aber ohne Erfolg. Im Grunde um es kurz zu halten brauche ich die Liste mit den Benutzern von einem Kanal, und die Dokumentation hat mir nicht geholfen.

Antwort

2

users.list nimmt keine Kanal-ID als Eingabe, die Sie in Ihrem API-Aufruf bereitstellen.

Slack bieten verschiedene Bot-Token für verschiedene Teams. Rufen Sie einfach API mit Bot-Token des Teams, von denen Sie Benutzerliste benötigen, und Sie erhalten die Liste der Mitglieder.

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

Für weitere Informationen über optionale Argumente, die Sie mit API-Aufruf zur Verfügung stellen können, siehe Dokumentation (https://api.slack.com/methods/users.list).

Verwandte Themen