channels.join
est non autorisé pour les utilisateurs de robots. Je voudrais que mon bot utilisant RTM écoute des canaux autres que celui répertorié dans la page d'intégration du bot.
Je ne vois pas de moyen de changer les canaux dans la page d'intégration du bot:
Est-ce juste une limitation des bots ou est-ce que je manque quelque chose de fondamental ici?
J'ai eu le même problème et je ne savais pas pourquoi mon bot n'écoutait que certaines chaînes.
Votre bot devra être invité sur chaque chaîne par un utilisateur. Exécutez cette commande dans le canal requis dans l'application Slack pour ce faire
/invite @<your_bot_name>
Une fois sur le canal, ils devraient pouvoir écouter les événements.
C'est toujours une limitation des bots à partir de mai 2017 en raison d'un bug qu'il introduit - voir la réponse de paulhammod sur https://github.com/slackapi/node-slack-sdk/issues/26 . La bonne façon d'ajouter un bot est la commande slash /invite @<bot.user> <channel_name>
Comme l'a souligné @MattGifford.
Cependant, @nafg a introduit une solution de contournement intéressante. Si vous générez un API_TOKEN personnel pour votre compte, vous pouvez l'utiliser pour inviter un bot. Par exemple, en python on pourrait exécuter:
import slackclient sc = slackclient.SlackClient(<PERSONAL_API_TOKEN>) sc.api_call('channels.invite', channel=<channel_id>, user=<user_id>)
Cela invitera le bot sur le canal. Si vous souhaitez automatiser l'invitation de votre bot à de nouvelles chaînes, vous pouvez consulter les écouteurs d'événements dans l'API trouvée à https://api.slack.com/rtm
Tant que vous autorisez votre API_TOKEN à être utilisé à cette fin, il semble que cela fonctionnerait selon les besoins, quoique moins pratique.
Je n'ai pas essayé, mais je m'attends à ce que vous puissiez d'abord appeler channels.join
au nom d'un utilisateur réel (par exemple, vous-même), puis appelez channels.invite
en tant qu'utilisateur pour ajouter le bot à cette chaîne. Je m'attends à ce que cela soit autorisé, et cela permettrait alors au bot d'interagir avec ce canal. De cette façon, vous pouvez tout automatiser.