I'm not very familiar with discord.js buttons and need help disabling a button after 5 seconds to avoid spam but I don't know how. Here is my code:
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);
When I try, it doesn't output any errors. I think I'm just missing something. Can someone help me?
CodePudding user response:
You're on the right track - you've done the first step, which is to change the button to be disabled after 5 seconds locally, but now you need to edit your message to reflect those changes online.
First, you have to store your sent message in a variable:
const sentMessage = await message.channel.send({ embeds: [newEmbed], components: [row] });
Then, in your setTimeout
, you can edit the sentMessage
like Dregg said in his comment:
// After you disable the button
sentMessage.edit({ embeds: [newEmbed], components: [row] });