web-dev-qa-db-fra.com

Obtenir la liste des chaînes dont un utilisateur est membre

Écrire un bot mou et j'aimerais pouvoir obtenir une liste de toutes les chaînes dont mon bot est membre. Pour ce faire, vous pouvez appeler https://slack.com/api/channels.list, obtenez une liste (potentiellement longue) de tous les canaux, puis recherchez les canaux dont l'utilisateur (bot) actuel est membre. Cela fonctionne bien, mais semble très lourd.

Y a-t-il une meilleure façon? Pour obtenir uniquement les canaux dont un utilisateur donné est membre?

6
Matt Burland

Non, il n'y a pas de moyen plus court d'obtenir ces informations.

En fait, Slack recommande d'utiliser les nouvelles méthodes conversations pour cette tâche, car la propriété members dans toutes les autres méthodes, par exemple canaux.list a récemment été modifié pour ne renvoyer qu'une liste d'utilisateurs tronquée. Voir ici pour plus de détails.

Avec conversations, vous devez effectuer un appel supplémentaire par canal pour obtenir tous les canaux dont un utilisateur est membre. Cependant, cela fonctionnera avec tous les types de chaînes (par exemple, les chaînes publiques, les chaînes privées) en même temps.

L'approche de base est la suivante:

  1. Obtenez la liste de toutes les conversations de conversations.list

  2. Obtenez la liste des membres par formulaire de conversation conversations.members .

Donc, si vous voulez que votre application Slack soit à l'épreuve du temps et fonctionne également avec un grand nombre d'utilisateurs, utilisez mieux les méthodes conversations pour votre tâche.

4
Erik Kalkoken

Je pense users.conversations est ce que vous recherchez. Sans paramètres supplémentaires, il renverra tous les canaux publics dont l'utilisateur appelant est membre.

7
Nico Durstewitz