Estoy tratando de hacer un comando que le envíe al usuario una lista de comandos, pero si no puede enviarlos, envía un mensaje en el canal que le dice al usuario que verifique su configuración de privacidad para permitir que los miembros del servidor los envíen.
Sin embargo, cuando trato de usar la función "atrapar", arroja un error o no detecta el comando. Aquí está mi código actual.
if(cmd=== `${prefix}test`){ try { message.author.send("test") } catch(error){ message.channel.send("Unable to send") } }
Esto no funciona, y si lo cambio a
if(cmd=== `${prefix}test`){ try { message.author.send("test") }.catch(error){ message.channel.send("Unable to send") } }
dice " SyntaxError: Missing catch or finally after try
"
Probé muchas soluciones y revisé varias otras preguntas de stackoverflow pero no puedo encontrar una solución. Si se necesitan más detalles, comente y haré todo lo posible para responder.
Es porque message.author.send()
es una función asíncrona; siempre devolverá una promesa. Significa que send()
regresa y sale del bloque de try
para que su bloque de catch
nunca se ejecute.
Intente esperar a que send()
resuelva (o rechace) primero usando la palabra clave await
:
if (cmd === `${prefix}test`) { try { await message.author.send('test'); } catch (error) { message.channel.send('Unable to send'); } }