2 votes

La fonction catch de Discord.JS n'attrape pas les erreurs

J'essaie de créer une commande qui envoie à l'utilisateur une liste de commandes par DM, mais si elle ne peut pas le faire, elle envoie un message dans le canal disant à l'utilisateur de vérifier ses paramètres de confidentialité pour permettre aux membres du serveur de le faire.

Toutefois, lorsque j'essaie d'utiliser la fonction "catch", une erreur s'affiche ou la commande n'est pas prise en compte. Voici mon code actuel.

if(cmd=== `${prefix}test`){
    try {
    message.author.send("test")
    }
    catch(error){
    message.channel.send("Unable to send")
    }

  }

Cela ne fonctionne pas, et si je le change en

if(cmd=== `${prefix}test`){
    try {
    message.author.send("test")
    }.catch(error){
    message.channel.send("Unable to send")
    }

  }

il est écrit " SyntaxError: Missing catch or finally after try "

J'ai essayé plusieurs solutions et regardé plusieurs autres questions sur stackoverflow, mais je ne trouve pas de solution. Si vous avez besoin de plus de détails, commentez et je ferai de mon mieux pour vous répondre.

1voto

Zsolt Meszaros Points 8932

C'est parce que message.author.send() est une fonction asynchrone ; elle renvoie toujours une promesse. Cela signifie que send() retourne et quitte le try pour que votre catch Le bloc ne fonctionnera jamais.

Essayez d'attendre send() à résoudre (ou à rejeter) d'abord en utilisant le await mot-clé :

if (cmd === `${prefix}test`) {
  try {
    await message.author.send('test');
  } catch (error) {
    message.channel.send('Unable to send');
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X