Ahora intento en vano eliminar botones de un mensaje de bot. He creado un comando para este propósito. Al ejecutarlo, en el mejor de los casos debería eliminar un botón específico, el último o al menos todos los botones que se encuentran en un mensaje específico.
He probado varias cosas, pero en todos los intentos no se quitan los botones.
module.exports = { category: 'Utilities', description: 'Delete Buttons', permissions: ['ADMINISTRATOR'], callback: async ({ client, message }) => { const channel = client.channels.cache.get('the channel id') channel.messages.fetch('the message id').then(msg => msg.edit({components: []})); console.log(msg) } }Cuando trato de hacer esto, aparece el siguiente error de consola:
TypeError: no se pueden leer las propiedades de undefined (leyendo 'mensajes')
Cuando intento esto, no obtengo un registro de la consola, ni el bot hace nada...
const { Client, Message } = require("discord.js"); module.exports = { category: 'Utilities', description: 'Delete Buttons', permissions: ['ADMINISTRATOR'], callback: async ({ client, message }) => { client.on('ready', async () => { const channel = client.channels.cache.get('the channel id') channel.messages.fetch('the message id').then(msg => { msg.edit({ components: [] }) }); }, )} }Tal vez uno de ustedes sepa una solución o una idea. :) ¡Muchas gracias!
Cuando intento esto, no obtengo un registro de la consola ni el bot hace nada.
El segundo ejemplo no hace nada porque está creando un controlador de eventos listo para ejecutar su comando. Es decir, está esperando que el bot vuelva a estar "listo", es decir, el estado de haber iniciado sesión en la API como lo hace al inicio. Pero su bot ya está listo y no volverá a estarlo hasta la próxima vez que se reinicie, por lo que no pasará nada.
En cuanto al primer ejemplo, el error que está recibiendo sugiere que el channel no está undefined , lo que significa:
A) Tienes el ID de canal incorrecto
- O -
B) El canal especificado ya no está en el caché del canal
Si está 100% seguro de que la identificación es correcta, podemos suponer que el problema que tiene es el último (el canal no está en el caché). Hay muchas maneras de resolver esto, pero una forma simple es simplemente obtener el canal de manera similar a cómo está tratando de obtener el mensaje. Aquí hay un ejemplo:
const channel = await client.channels.fetch('the channel id'); const msg = await channel.messages.fetch('the message id'); msg.edit({components: []}); Eso debería solucionar el problema. Si no es así, entonces el problema es mucho más complicado y no se ha proporcionado suficiente información. También tenga en cuenta que en el ejemplo anterior, cambié la sintaxis de Promise por async/await ya que de todos modos está utilizando una función async ; Hice esto solo para que esta respuesta sea más legible, puede elegir el formato que prefiera.