Un lien d'invitation de bot Discord n'est qu'une URL d'autorisation OAuth2 : son paramètre scope indique le type d'accès demandé (un compte bot, des commandes slash, ou les deux), et son nombre de permissions définit ce que ce compte bot peut faire une fois présent sur le serveur. Un administrateur du serveur doit approuver l'ensemble avant que quoi que ce soit ne prenne effet. Comprendre ces deux paramètres fait la différence entre créer un lien d'invitation sûr et copier un lien dont vous ne maîtrisez pas entièrement le contenu.

An OAuth permission checklist gets reviewed, Administrator is unticked, and the bot joins online. Permissions Kick Members Manage Messages Administrator Authorize YourBot Online

Anatomie d'un lien d'invitation

Une invitation de bot classique ressemble à ceci :

https://discord.com/oauth2/authorize?client_id=123456789&permissions=268446800&scope=bot%20applications.commands

  • client_id - l'identifiant public de l'application, sans risque à partager : il figure dans chaque lien d'invitation de ce bot.
  • scope - le type d'accès demandé, séparé par des espaces (encodés en URL sous la forme %20).
  • permissions - un nombre unique représentant toutes les permissions de serveur demandées, additionnées.
  • guild_id et disable_guild_select (facultatifs) - présélectionnent un serveur précis et verrouillent le sélecteur dessus, pratique pour un bouton « m'ajouter ici » par serveur.

Le scope « bot »

C'est lui qui ajoute réellement le bot comme membre du serveur, l'entrée qui apparaît dans la liste des membres avec le badge bot à côté. Sans ce scope, rien ne rejoint le serveur : il n'y a aucun compte bot à autoriser.

Le scope « applications.commands »

Celui-ci enregistre les commandes slash, les commandes utilisateur et les commandes de message de l'application afin qu'elles puissent être utilisées sur ce serveur. Techniquement, un bot peut rejoindre avec le seul scope bot, mais aucune de ses commandes / n'apparaîtra quand quelqu'un tapera /, car le serveur n'a jamais autorisé l'enregistrement des commandes.

Pourquoi vous voulez presque toujours les deux

Un bot invité avec le seul scope bot peut toujours publier des messages, réagir aux boutons des messages qu'il a déjà envoyés, et répondre aux événements qui ne nécessitent pas de commande slash. Mais les utilisateurs de Discord s'attendent aujourd'hui à des commandes, et un bot qui ne peut pas les enregistrer semble cassé même lorsqu'il fonctionne parfaitement. C'est pour cette raison que chaque lien d'invitation généré par Noxyr, comme presque tous les bots légitimes, inclut les deux scopes ensemble.

Le nombre de permissions, décodé

Chaque permission Discord (envoyer des messages, gérer les rôles, expulser des membres) correspond à un seul bit dans un champ de bits : un drapeau en puissance de deux. Le nombre du lien d'invitation est la somme de tous les drapeaux demandés en même temps. Un lien demandant permissions égal à 8 demande exactement une chose : Administrateur, un accès complet et sans restriction au serveur. Un lien d'invitation bien conçu additionne seulement les drapeaux précis qu'utilise réellement le code du bot : gestion des salons pour créer les salons de ticket, gestion des rôles pour un rôle de vérification, actions de modération pour réagir à un raid, et non tout ce que Discord met à disposition.

Pourquoi Administrateur est un signal d'alerte, pas une exigence

La plupart des bots légitimes n'en ont pas besoin. La demander relève soit d'un besoin réel mais rare, pour quelque chose qui touche presque toutes les permissions à la fois, soit, bien plus souvent, d'un bot construit à la hâte avec permissions égal à 8 collé parce que c'était le nombre le plus facile à trouver. C'est aussi l'écran le plus effrayant que Discord montre au propriétaire d'un serveur pendant l'installation, ce qui en fait une raison fréquente de refus pur et simple de l'invitation, ou du retrait du bot plus tard par quelqu'un qui nettoie les permissions. Vous pouvez décoder le nombre de permissions de n'importe quel lien avec un calculateur de permissions Discord avant de cliquer sur Autoriser, pour voir exactement ce qui est demandé.

Comment le lien d'invitation de Noxyr est construit, à titre d'exemple

Plutôt que de demander Administrateur, l'invitation de Noxyr est construite à partir des permissions précises qu'utilisent réellement ses fonctionnalités : gestion des salons et des rôles pour les tickets et la vérification, permissions de messages et de modération pour les réactions anti-nuke, et rien au-delà de cette liste. Elle inclut toujours les scopes bot et applications.commands, si bien que ses commandes fonctionnent dès qu'il rejoint le serveur.

Autres scopes OAuth2 que vous rencontrerez

Discord définit des dizaines de scopes OAuth2 en plus de bot et applications.commands. La plupart, comme identify ou guilds.join, relèvent de l'authentification web de type « Se connecter avec Discord » et non des invitations de bot, et n'apparaissent pas du tout dans un lien d'invitation standard. Si un lien que vous examinez demande quelque chose d'inconnu en plus de bot, vérifiez ce que ce scope accorde réellement avant d'autoriser, car il est inhabituel qu'une invitation de bot ait réellement besoin de scopes d'authentification web supplémentaires, en dehors d'un service qui propose aussi la liaison de comptes.

Créer le lien d'invitation de votre propre bot personnalisé

Une fois l'application créée dans le portail des développeurs Discord, le générateur d'URL de l'onglet OAuth2 construit ce lien pour vous à l'aide de cases à cocher : cochez bot et applications.commands dans les scopes, cochez les permissions dont votre bot a besoin, puis copiez le résultat. Inutile d'assembler à la main l'URL et le nombre de permissions.

Questions fréquentes

À quoi sert disable_guild_select ? Il verrouille le sélecteur de serveur sur un seul serveur présélectionné, afin qu'un lien d'invitation destiné à une communauté précise ne puisse pas servir par erreur à ajouter le bot ailleurs.

Ai-je besoin de applications.commands si mon bot n'utilise que des boutons ? Pas strictement pour les boutons des messages qu'il a déjà envoyés, mais vous en avez besoin dès qu'une commande slash entre en jeu.

Modifier plus tard le nombre de permissions peut-il ajouter rétroactivement des accès ? Non. Un serveur qui a déjà approuvé une invitation conserve ce qui a été accordé à ce moment-là ; modifier le lien n'affecte que les futures invitations, et les installations existantes doivent être réinvitées et réapprouvées pour obtenir davantage.

Le scope bot suffit-il à lui seul ? Il suffit pour que le bot rejoigne le serveur, mais ses commandes slash n'apparaîtront pas sans applications.commands à côté.

Pourquoi Discord affiche-t-il un avertissement aussi important pour Administrateur ? Parce qu'il demande un accès sans restriction à l'ensemble du serveur, la permission la plus dangereuse qu'une invitation de bot puisse demander.

Vous préparez l'invitation de votre propre bot ? Consultez d'abord notre guide sur la création d'une application Discord, puis lisez la documentation Custom Bot si vous préférez ne pas écrire vous-même le code qui le fait fonctionner.