Les intents privilégiés de passerelle Discord sont trois autorisations à activer explicitement (Présence, Membres du serveur et Contenu des messages) que le propriétaire d'un bot doit activer dans le Portail développeur avant que Discord n'accepte d'envoyer ces données via la passerelle. Elles existent parce que les listes de membres et le texte des messages sont sensibles par défaut. Si vous en oubliez une, le bot ne génère pas d'erreur bruyante : il cesse simplement de recevoir les événements dont il a besoin. C'est pourquoi « mon bot est en ligne mais ne fait rien » se résout si souvent par un intent désactivé.
Ce qu'est réellement un intent de passerelle
Lorsqu'un bot se connecte à Discord, il ne reçoit pas automatiquement tous les événements qui surviennent sur chaque serveur où il se trouve. Il s'abonne à des catégories d'événements appelées intents : événements de messages, événements d'état vocal, événements de mise à jour du serveur, etc. La plupart des intents se déclarent librement dans le code, et Discord les accorde sans rien demander. Trois d'entre eux font exception. Discord les appelle intents privilégiés, car les données qu'ils donnent accès (qui exactement se trouve sur un serveur, et ce que les membres sont en train de taper) sont suffisamment sensibles pour que le propriétaire du bot doive les autoriser explicitement dans le Portail développeur, et non simplement dans le code.
Si le code d'un bot demande un intent privilégié que le propriétaire n'a pas activé pour cette application, Discord refuse purement et simplement la connexion. Le bot ne se connecte pas dans un état dégradé : il ne se connecte tout simplement pas, et la passerelle se ferme avec une erreur « disallowed intents » (intents non autorisés).
Les trois intents privilégiés
- Intent Présence. Statut en ligne, inactif ou hors ligne, ainsi que les activités personnalisées de chaque membre. Utilisé par les bots qui affichent des données de présence en direct. La plupart des bots de tickets, de modération et de commerce, Noxyr compris, n'en ont pas besoin.
- Intent Membres du serveur. La liste complète des membres, ainsi que les événements d'arrivée et de départ, les changements de rôle et les mises à jour de pseudo. C'est l'intent derrière les messages de bienvenue, les compteurs de membres et la détection des raids.
- Intent Contenu des messages. Le texte réel d'un message, et pas seulement le fait qu'un message a été envoyé. Sans lui, un bot peut voir que quelqu'un a publié dans un salon, mais pas ce qu'il a écrit.
Le code de Noxyr demande deux des trois : Intent Membres du serveur et Intent Contenu des messages. L'Intent Présence ne fait partie d'aucune fonctionnalité de Noxyr : il n'est donc jamais demandé et n'a jamais besoin d'être activé.
Ce qui casse sans l'intent Membres du serveur
L'intent Membres du serveur permet à un bot de recevoir les événements GUILD_MEMBER_ADD et GUILD_MEMBER_REMOVE, c'est-à-dire les événements d'arrivée et de départ dont dépend presque toute fonctionnalité liée aux membres.
- Messages de bienvenue. Un message de bienvenue se déclenche à l'arrivée. Sans l'intent, le bot ne reçoit jamais l'événement d'arrivée : rien ne s'affiche et aucun rôle automatique n'est attribué.
- Compteurs de membres. Un salon ou un widget de nombre de membres en direct se met à jour grâce aux mêmes événements d'arrivée et de départ. Sans l'intent, il reste figé au dernier nombre qu'il a vu.
- Protection anti-nuke et anti-raid. Détecter un raid par arrivées massives ou surveiller des changements suspects de rôles et de pseudos repose sur les événements des membres. Désactivez l'intent et toute cette détection tombe.
- Flux de vérification. Tout contrôle qui vérifie la date d'arrivée d'un membre, ses rôles ou l'ancienneté de son compte a besoin de l'objet membre fourni par l'intent.
Ce qui casse sans l'intent Contenu des messages
L'intent Contenu des messages donne accès au texte réel des messages. Sans lui, un bot peut toujours voir qu'un salon a reçu un message et qui l'a envoyé, mais il ne peut pas lire ce qui a été dit.
- Réponses automatiques. Repérer un mot déclencheur comme « remboursement » ou « comment payer » impose de lire le texte du message. Sans contenu, pas de correspondance, pas de réponse.
- Réponses du chat IA. Un assistant IA qui répond aux questions dans un salon, ou lorsqu'il est mentionné, a besoin de la question elle-même. Sans l'intent, il sait que quelqu'un a parlé, mais n'a rien à transmettre au modèle.
- Transcriptions de tickets. Une transcription qui enregistre ce que le staff et les membres ont réellement dit dans un ticket a besoin du contenu des messages. Sans lui, vous n'obtenez qu'une liste d'horodatages et de noms d'utilisateurs, sans contenu.
- Modération basée sur les préfixes. Tout ce qui analyse les messages à la recherche de mots interdits, de liens d'invitation ou de schémas de spam lit le contenu exactement comme le fait une réponse automatique.
Les commandes slash ne sont pas touchées dans tous les cas, car Discord transmet les saisies de commande séparément des messages ordinaires. Ce sont précisément les fonctionnalités qui lisent ce que les membres tapent dans leurs messages habituels qui dépendent de cet intent.
Comment activer les intents dans le Portail développeur
- Ouvrez le Portail développeur Discord et sélectionnez l'application du bot.
- Cliquez sur Bot dans la barre latérale gauche.
- Faites défiler jusqu'à Intents privilégiés de passerelle.
- Activez Intent Membres du serveur et Intent Contenu des messages (ajoutez Intent Présence uniquement si un bot a précisément besoin de données de présence en direct).
- Enregistrez les modifications, puis redémarrez ou reconnectez le bot afin qu'il prenne en compte les nouveaux intents à sa prochaine connexion.
Le réglage prend effet à la prochaine connexion à la passerelle, et non immédiatement pour un bot déjà connecté. Un bot en pleine session au moment où un intent est désactivé sera généralement déconnecté par Discord, et devra être reconnecté une fois l'intent réactivé.
La règle de vérification à partir de 100 serveurs
Activer l'interrupteur dans le portail suffit pour un bot présent sur moins de 100 serveurs. Une fois que le nombre d'installations d'un bot dépasse 100 serveurs, Discord exige que l'application passe la vérification du bot, un processus d'examen au cours duquel le propriétaire soumet le bot pour approbation, avant de l'autoriser à utiliser les intents privilégiés à cette échelle. Un bot non vérifié qui atteint ce seuil continue de fonctionner sur les serveurs qu'il a déjà, mais il ne peut plus en rejoindre de nouveaux tant que la vérification n'est pas accordée ou que les intents privilégiés dont il n'a pas strictement besoin ne sont pas retirés.
Il s'agit d'une règle de la plateforme Discord, et non d'un élément qu'un hébergeur de bots peut contrôler. Elle existe pour que les intents sensibles comme Membres du serveur et Contenu des messages ne soient pas distribués à grande échelle sans un examen de Discord sur l'usage que fait le bot de ces données.
Pourquoi Noxyr vérifie les deux intents avant d'accepter un token
La fonctionnalité Bot personnalisé de Noxyr fait fonctionner l'ensemble de ses fonctionnalités avec un token de bot que vous fournissez. Comme les messages de bienvenue, les compteurs de membres, le chat IA, les transcriptions de tickets et les réponses automatiques dépendent des deux intents ci-dessus, le tableau de bord vérifie que l'Intent Membres du serveur et l'Intent Contenu des messages sont activés avant d'accepter votre token. Un token collé alors que l'un de ces intents est désactivé est refusé immédiatement, plutôt que d'être accepté puis d'échouer silencieusement plus tard avec une erreur de passerelle déroutante.
Si un intent est désactivé alors que le bot fonctionne déjà (par exemple, quelqu'un le décoche dans le portail plusieurs mois plus tard), la passerelle Discord ferme la connexion avec les codes 4013 ou 4014. Les serveurs d'hébergement de Noxyr détectent ce code de fermeture précis, arrêtent le bot et publient un message de statut en langage clair qui vous indique exactement le réglage à corriger, plutôt que de le laisser coincé dans une boucle de reconnexion silencieuse. Le détail complet de cette erreur et des autres causes courantes de passage hors ligne est disponible dans notre guide de dépannage des erreurs de passerelle 4004/4014.
Questions fréquentes
Ai-je besoin de l'Intent Présence pour le Bot personnalisé de Noxyr ? Non. Noxyr ne demande que l'Intent Membres du serveur et l'Intent Contenu des messages. L'Intent Présence peut rester désactivé.
Pourquoi mon bot affiche-t-il « disallowed intents » alors que j'ai activé les interrupteurs ? La passerelle ne lit l'état actuel qu'à une connexion neuve. Redémarrez le bot après avoir enregistré les paramètres du portail afin qu'il se reconnecte avec les nouveaux intents appliqués.
Activer l'Intent Contenu des messages signifie-t-il que Discord partage l'historique des messages avec le bot ? Non. Cela ne concerne que les messages envoyés pendant que le bot est connecté et a accès au salon. Cela n'accorde pas rétroactivement l'accès aux anciens messages auxquels le bot n'était pas présent.
Mon bot risque-t-il d'être banni pour avoir demandé des intents privilégiés ? Non. Les demander et les utiliser pour les fonctionnalités qui en ont besoin (messages de bienvenue, réponses automatiques, réponses IA) est précisément leur raison d'être. La vérification existe pour les bots à grande échelle, et non comme sanction.
Consultez le guide de configuration complet dans la documentation Bot personnalisé, ou ajoutez Noxyr gratuitement et évitez complètement les intents en utilisant le bot principal au lieu d'un bot personnalisé basé sur un token.