首页 > 解决方案 > 检查添加反应的用户是否有角色

问题描述

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

示例:如果具有管理员级别的用户对 :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});
    }
});

代码在这个阶段有效,只有每个人都可以使用它

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

标签: node.jsdiscorddiscord.js

解决方案


如果您查看messageReactionAdd 文档,您可以看到与反应一起,您还可以获得添加反应的用户。所以而不是

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

你会有

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

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

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

现在您有了公会成员,您可以访问他/她的角色,从而检查他/她是否具有特定角色


推荐阅读