Bueno, los eventos messageUpdate y messageDelete no "funcionan" después de reiniciar el bot
Es decir, no responden a los mensajes que se enviaron antes del reinicio.
Agregué MENSAJE a parciales
Ahora los eventos funcionan, pero hay un problema con el retorno if (message.author.bot) return if (newMessage.author.bot) return si (mensaje.autor.bot) y, en general, con message|newMessage.author|member etc.
Aquí están los errores:
TypeError: Cannot read properties of null (reading 'bot') at module.exports.run (C:\Users\ALL\Desktop\Slodziak\Slodziak13vCanary\events\messageDelete.js:14:28) at Slodziak.<anonymous> (C:\Users\ALL\Desktop\Slodziak\Slodziak13vCanary\aslodziak.js:40:43) at Slodziak.emit (node:events:527:28) at Slodziak.emit (node:domain:475:12) at MessageDeleteAction.handle (C:\Users\ALL\Desktop\Slodziak\Slodziak13vCanary\node_modules\discord.js\src\client\actions\MessageDelete.js:24:16) at Object.module.exports [as MESSAGE_DELETE] (C:\Users\ALL\Desktop\Slodziak\Slodziak13vCanary\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_DELETE.js:4:32) at WebSocketManager.handlePacket (C:\Users\ALL\Desktop\Slodziak\Slodziak13vCanary\node_modules\discord.js\src\client\websocket\WebSocketManager.js:346:31) at WebSocketShard.onPacket (C:\Users\ALL\Desktop\Slodziak\Slodziak13vCanary\node_modules\discord.js\src\client\websocket\WebSocketShard.js:478:22) at WebSocketShard.onMessage (C:\Users\ALL\Desktop\Slodziak\Slodziak13vCanary\node_modules\discord.js\src\client\websocket\WebSocketShard.js:317:10) at WebSocket.onMessage (C:\Users\ALL\Desktop\Slodziak\Slodziak13vCanary\node_modules\ws\lib\event-target.js:199:18)¿Alguien puede ayudar? Necesito estos MENSAJES parciales para actualizar el mensaje porque el bot no respondió a los mensajes que se enviaron después del reinicio. Más concretamente al automod, es decir, que borre las invitaciones si alguien ha editado el mensaje y no tiene permisos.
messageUpdate
module.exports = class { constructor(client) { this.client = client; } async run(oldMessage, newMessage) { const data = {}; const client = this.client; data.config = client.config; if (newMessage.author.bot) return; if (!newMessage.editedAt) return; code that deleted invites if member has not permissions } }; messageDelete
module.exports = class { constructor(client) { this.client = client; } async run(message) { const data = {}; const client = this.client; data.config = client.config; if (message.author.bot) return; Code that snipes deleted message } }El error significa que newMessage.author es null . Ya sabía que necesitaría usar los parciales de MESSAGE .
El problema es que no verifica si el mensaje recibido es solo parcial.
Un mensaje parcial no contendrá todos los parámetros del Message original. El id , el channelId y el guildId estarán presentes, pero otros, como author , pueden ser null .
Para resolver esto, deberá verificar si su mensaje es solo parcial, y si lo es, puede fetch y usarlo como de costumbre:
module.exports = class { constructor(client) { this.client = client; } async run(oldMessage, newMessage) { const data = {}; const client = this.client; data.config = client.config; if (oldMessage.partial) oldMessage = await oldMessage.fetch(); if (newMessage.partial) newMessage = await newMessage.fetch(); if (newMessage.author.bot) return; if (!newMessage.editedAt) return; // code that deleted invites if the member has no permissions } };