No estoy muy familiarizado con los botones discord.js y necesito ayuda para deshabilitar un botón después de 5 segundos para evitar el spam, pero no sé cómo hacerlo. Aquí está mi código:
const newEmbed = new Discord.MessageEmbed() .setColor('#2ACAEA') .setTitle("Commands") .setDescription("Page 1 of 2") .addFields( {name: '!jn help', value: 'This command'}, {name: '!jn ping', value: 'Ping the bot.'}, {name: '!jn coinflip', value: 'Flip a coin :D'}, {name: '!jn amiadmin', value: 'Are you an admin? We can see!'} ) .setFooter('Need more help? Join the support discord server.') .setImage('https://i.imgur.com/Ta0yst7.png'); const row = new Discord.MessageActionRow() .addComponents( new Discord.MessageButton() .setCustomId('2') .setLabel('>>') .setStyle('SUCCESS'), ); message.channel.send({embeds: [newEmbed], components: [row]}); setTimeout(function () { row.components[0].setDisabled(true); }, 5000);Cuando lo intento, no arroja ningún error. Creo que me estoy perdiendo algo. ¿Alguien me puede ayudar?
Está en el camino correcto: ha dado el primer paso, que es cambiar el botón para que se deshabilite localmente después de 5 segundos, pero ahora necesita editar su mensaje para reflejar esos cambios en línea.
Primero, debe almacenar su mensaje enviado en una variable:
const sentMessage = await message.channel.send({ embeds: [newEmbed], components: [row] }); Luego, en su setTimeout , puede editar el sentMessage como dijo Dregg en su comentario:
// After you disable the button sentMessage.edit({ embeds: [newEmbed], components: [row] });