Skip to content
Advertisement

How to make bot send message to another channel after reaction | Discord.js

How do I make it so that when someone reacts with the first emoji in this command, the bot deletes the message and sends it to another channel?

Current Code:

const Discord = require("discord.js");

module.exports.run = async (bot, message, args) => {
  if (!message.member.hasPermission("MANAGE_MESSAGES"))
    return message.channel.send("You are not allowed to run this command.");
  let botmessage = args.join(" ");
  let pollchannel = bot.channels.cache.get("716348362219323443");
  let avatar = message.author.avatarURL({ size: 2048 });

  let helpembed = new Discord.MessageEmbed()
    .setAuthor(message.author.tag, avatar)
    .setColor("#8c52ff")
    .setDescription(botmessage);

  pollchannel.send(helpembed).then(async msg => {
    await msg.react("715383579059945512");
    await msg.react("715383579059683349");
  });
};
module.exports.help = {
  name: "poll"
};

Advertisement

Answer

You can use awaitReactions, createReactionCollector or messageReactionAdd event, I think awaitReactions is the best option here since the other two are for more global purposes,

const emojis = ["715383579059945512", "715383579059683349"];
pollchannel.send(helpembed).then(async msg => {
    
    await msg.react(emojis[0]);
    await msg.react(emojis[1]);

    //generic filter customize to your own wants
    const filter = (reaction, user) => emojis.includes(reaction.emoji.id) && user.id === message.author.id;
    const options = { errors: ["time"], time: 5000, max: 1 };
    msg.awaitReactions(filter, options)
        .then(collected => {
            const first = collected.first();
            if(emojis.indexOf(first.emoji.id) === 0) {
                msg.delete();
                // certainChannel = <TextChannel>
                certainChannel.send(helpembed);
            } else {
                //case you wanted to do something if they reacted with the second one
            }
        })
        .catch(err => { 
           //time up, no reactions 
        });
});
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement