如何让漫游器在不同的反应中添加不同的角色?

时间:2020-08-07 23:59:11

标签: javascript discord discord.js

当前,机器人仅侦听单个反应。如果我添加其他反应,则不会触发。

bot.once('messageReactionAdd', (reaction, user) => {
  if(message.channel.id === "740513426631163945") {
    if (reaction.emoji.name === "\uD83C\uDDE7") {
      member.addRole("741434891157110795");
    }
    else if (reaction.emoji.name === "\uD83C\uDDF4") {
      member.addRole("741435543723835484");
    }
  }
});

我正在使用Discord.js v11。

1 个答案:

答案 0 :(得分:0)

我创建了一个名为!follow的命令,该命令可让您将角色作用功能添加到已发送的消息中。

将响应添加到消息中时,将进行一次检查以查看是否正在跟踪该消息,然后再次进行检查以查看所添加的响应是否为您要跟踪的响应(如果不是,则将其删除)。 。然后找到添加反应的成员,并根据他们选择的反应添加特定的角色。

const prefix = '!';

const polls = new Discord.Collection();

bot.on('message', message => {
  const args = message.content.slice(prefix.length).trim().split(/\s+/g);
  const command = args.shift().toLowerCase();

  switch (command) {
    case 'follow':
      if (!args[0]) return message.reply(`Please provide the ID of the message.\n**Usage:** \`${prefix}follow\``);
      
      const msg = message.channel.messages.get(args[0]);
      if (!msg) return message.reply('Could not find the specified message.');

      message.delete();

      polls.set(msg.id, true);
    default:
      message.reply(`The command \`${command}\` was not recognized.`);
  }
});

bot.on('messageReactionAdd', (reaction, user) => {
  if (!polls.has(reaction.message.id)) return;
  if (!['?', '?'].includes(message.reaction.name)) return reaction.remove();

  const member = reaction.message.channel.members.find(member => member.id === user.id);

  switch (message.reaction.name) {
    case '?':
      member.addRole('741434891157110795');
      break;
    case '?':
      member.addRole('741435543723835484');
      break;
});