提问者:小点点

试图创建React Roles系统时出现问题


我正在尝试创建一个反应角色系统,我很困惑,因为我找不到一种方法,当用户触发一个MessageReAction时,给他们一个角色。 我制作了一个嵌入式,该嵌入式应该根据用户被触发的命令为用户提供一个角色。

client.on("message", message => {
  let role = message.mentions.roles.first()
  let embed = new Discord.RichEmbed();
  embed.setTitle("Reaction Role");
  embed.setColor("BLUE");
  embed.setDescription("Tap the Reaction to get role" + role);
  if (message.content === `${prefix}reactionrole ${role}`)(message.channel.send(embed)).then(messageReaction => {
    messageReaction.react("✅")
  })
})

但我不知何故想把这个角色给任何以给定反应回复这个特定消息的用户。 我是来回答你的问题的,如果你有任何问题的话。


共1个答案

匿名用户

您可以使用ReactionCollector来执行您的请求。 在这里找到教程。

您的代码示例可以是:

client.on("message", message => {
  let role = message.mentions.roles.first()
  let embed = new Discord.RichEmbed();
  embed.setTitle("Reaction Role");
  embed.setColor("BLUE");
  embed.setDescription("Tap the Reaction to get role" + role);
  if (message.content === `${prefix}reactionrole ${role}`)(message.channel.send(embed)).then(messageReaction => {
    messageReaction.react("✅")
    const filter = (reaction, user) => {
      return reaction.emoji.name === '✅';
    };

    const collector = message.createReactionCollector(filter);

    collector.on('collect', (reaction, user) => {
      message.guild.members.cache.get(user.id).roles.add(role.id);
    });
  })
})

您还可以找到其他选项,例如JSON/SQLITE/SQL存储来存储消息id和角色id。 然后使用MessageReactionAdd事件触发系统并添加角色。