检查添加反应的用户是否有角色

Check if the user adding a reaction has a role

我想检查对消息做出反应的用户是否有角色,这样如果用户没有等级,机器人将忽略命令的其余部分,但我不知道如何。

示例:如果具有管理员级别的用户对 :eggsa: 表情符号做出反应,机器人将继续执行命令,但如果我只有会员级别,机器人将忽略我。

client.on('messageReactionAdd', reaction => {
    const eggsa = client.emojis.find(emoji => emoji.name === "eggsa");
    if (reaction.emoji.name === 'eggsa') {
        const message = reaction.message;
        const kanal = reaction.message.guild.channels.find('name', 'sitater');
        var embed = new Discord.RichEmbed()
        .setAuthor(reaction.message.content)
        .setTimestamp()
        .setFooter(reaction.message.author.username, reaction.message.author.avatarURL)
        kanal.send({embed});
    }
});

现阶段代码有效,仅供大家使用

如果有人能帮助我,我将不胜感激 >:)

如果您查看 messageReactionAdd docs,您可以看到除了反应之外,您还可以获得添加反应的用户。所以而不是

client.on('messageReactionAdd', reaction => {

你会

client.on('messageReactionAdd', (reaction, user) => {

那么您就有了 User 类型的用户。因为 user 不是 GuildMember 类型,您首先需要获取正确的 Guild 成员,然后才能检查 his/her 角色。

最简单的方法是获取添加了 const msg = reaction.message; 反应的消息。然后你可以从const guild = msg.guild;的消息中获取公会。现在您可以使用 const guildMembers = guild.members; 访问公会成员。最后,您需要使用 const guildMember = guildMembers.get(user.id);.

找到正确的成员

现在你有了你的公会成员,你可以访问 his/her Roles 从而检查 he/she 是否有某个角色