反应后如何使机器人将消息发送到另一个频道? Discord.js

时间:2020-07-07 01:46:44

标签: javascript node.js bots discord discord.js

我如何做到这一点,以便当有人对该命令中的第一个表情符号做出反应时,机器人将其删除并将其发送到另一个频道?

当前代码:

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"
};

1 个答案:

答案 0 :(得分:1)

您可以使用awaitReactionscreateReactionCollectormessageReactionAdd事件,我认为awaitReactions是最好的选择,因为其他两个是出于更全球化的目的,

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 
        });
});