It it possible to make a Discord bot send a message once a previous message has received a reaction? I was thinking about something like:
if(cmd === `${prefix}list`) {
var i = 0;
let embed = new Discord.RichEmbed()
.addField("List", "Content");
let anotherembed = new Discord.RichEmbed()
.addField("Message", "List has been completed!");
return message.channel.send(embed);
do {
message.channel.send(anotherembed + 1);
}
while (i !== 0) && (reaction.emoji.name === "β
");
}
That's not something you should do.
What you want is message.awaitReactions
.
There is a great guide by the DiscordJS team and community that has a great example for awaitReactions
.
Here is the link and an example they used:
message.react('π').then(() => message.react('π'));
const filter = (reaction, user) => {
return ['π', 'π'].includes(reaction.emoji.name) && user.id === message.author.id;
};
message.awaitReactions(filter, { max: 1, time: 60000, errors: ['time'] })
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === 'π') {
message.reply('you reacted with a thumbs up.');
}
else {
message.reply('you reacted with a thumbs down.');
}
})
.catch(collected => {
console.log(`After a minute, only ${collected.size} out of 4 reacted.`);
message.reply('you didn\'t react with neither a thumbs up, nor a thumbs down.');
});
You basically need a filter, that only allows for a range of emojis, and a user to "use" them.
And also somewhere on your code you have:
return message.channel.send(embed);
You should remove the return part, or else it will just return and don't do the rest of the code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With