chapterjs, et vous pouvez les distinguer avec instanceof.
Ce qui se passe quand votre fonction lève une erreur sans l’attraper est dans Répondre pour les commandes et dans Événements pour les événements : le bot ne s’arrête jamais, vous recevez l’erreur dans votre terminal avec le fichier et la ligne.
DiscordApiError
Discord a répondu à une requête par une erreur. Elle est levée quand Discord refuse ce que le bot a demandé : une permission manquante, quelque chose qui n’existe plus, une valeur qu’il n’accepte pas. La requête a été reçue et comprise ; la relancer donne la même réponse tant que rien ne change.Ce qui s’est passé, avec la raison donnée par Discord et les champs qu’il a refusés :
Discord refused POST /channels/{channel.id}/messages: Missing Permissions (50013)., puis ce que cela veut dire en mots simples pour les codes qu’un bot rencontre le plus (une permission qui manque, quelque chose de supprimé, des messages privés fermés), et une ligne par champ refusé quand il y en a.Le code d’erreur JSON de Discord (50013 pour « Missing Permissions »…), ou 0 quand la réponse n’en avait pas.
Les champs de la requête que Discord a refusés, quand il dit lesquels.
Codes que vous rencontrerez
Testezerror.code, jamais error.message : le texte peut changer, le code non.
La liste complète est dans la documentation de Discord.
DiscordFieldError
Un problème que Discord a trouvé dans un champ de la requête.DiscordUnavailableError
Une requête n’a pas pu atteindre Discord, ou Discord a échoué à répétition. Elle est levée quand il n’y a aucune réponse à obtenir : pas de connexion internet, une panne de Discord, une erreur serveur qui a persisté. Le bot a déjà réessayé avant de la lever ; réessayer plus tard peut fonctionner.Discord could not be reached for GET /guilds/{guild.id}. Check your internet connection and https://discordstatus.com, then try again.InvalidTokenError
Le token du bot a été refusé : aucune requête ne peut réussir tant que ce n’est pas corrigé. Elle est levée par chaque requête une fois que Discord a refusé le token : le bot cesse d’envoyer quoi que ce soit, donc un mauvais token n’inonde jamais Discord. Rien dans votre code ne peut la corriger ;chapterjs dev vérifie le token avant de se connecter, donc vous la voyez normalement là (voir Dépannage).
Discord refused the bot token. Copy it again from the Developer Portal (your application → Bot → Reset Token) into BOT_TOKEN in your .env file.Attraper
N’attrapez que ce que vous attendez, et laissez passer le reste : une erreur que vous ne gérez pas est signalée avec son fichier et sa ligne, ce qui est ce que vous voulez pour un bug.src/commands/kick.ts
Ce que voit la personne
Quandrun lève une erreur que vous n’avez pas attrapée, la personne qui a utilisé la commande reçoit une réponse courte et privée, jamais les détails techniques :
DiscordApiError avec le code 50013 ou 50001, la réponse dit ce qui manque à la place :