Estoy tratando de crear un sistema de manejo de errores en discord.js v12. En resumen, cuando se produce el error en el bot, enviará un DM al propietario del bot y le enviará el código de error. ¿Como podría hacerlo?
Si se necesita código para el bot, dígame (sí, todavía estoy aprendiendo JavaScript).
EDITAR: Aquí está mi código:
function catchErr (err, message) { client.users.cache.get("762267309661356042").send ("There was an error at channel " + message.channel + " in guild " + message.guild + ".") client.users.cache.get("762267309661356042").send ("ERROR``` " + err + "```") }Luego, cada vez que ocurre un error en el código, lo atraparía con try and catch (utilicé mi propio controlador de comandos):
try { command(client, 'test', (message) => { CatchThis }) } catch (err) { catchErr(err, message) }Pero el error aún ocurre y detiene el bot:
ReferenceError: CatchThis is not defined at PATH\index.js:42:3 at PATH\basic-command-handler.js:21:11 at Array.forEach (<anonymous>) at Client.<anonymous> (PATH\util\basic-command-handler.js:17:15) at Client.emit (node:events:406:35) at MessageCreateAction.handle (PATH\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14) at Object.module.exports [as MESSAGE_CREATE] (PATH\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32) at WebSocketManager.handlePacket (PATH\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31) at WebSocketShard.onPacket (PATH\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22) at WebSocket.onMessage (PATH\node_modules\ws\lib\event-target.js:132:16) at WebSocket.emit (node:events:394:28) at Receiver.receiverOnMessage (PATH\node_modules\ws\lib\websocket.js:983:20) at Receiver.emit (node:events:394:28) at Receiver.dataMessage (PATH\node_modules\ws\lib\receiver.js:517:14) at Receiver.getData (PATH\node_modules\ws\lib\receiver.js:435:17)Bueno, sobre el error que ves, solo tienes una variable CatchThis que no está definida. Acerca del manejo de errores, parece que debería funcionar para usted, el error ocurrirá solo cuando el bloque de código "intentar" no se ejecute o puede arrojar un Error con throw.
Desviarse del código que proporcionó; no ha definido CatchThis . Entonces recomiendo eliminar esa variable indefinida o editar su pregunta y proporcionar el código que tiene esa variable.
Después de eliminar la variable, su código debería verse así:
try { command(client, 'test', (message) => { // code to run }); } catch (err) { catchErr(err, message); } Pero actualmente; catchErr no podrá acceder al message . Entonces, después de eliminar la variable indefinida, vuelva a trabajar en el código para que se vea así:
command(client, 'test', (message) => { try { // code to run } catch (err) { catchErr(err, message); } });