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

时间:2019-03-26 17:20:53

标签: node.js discord discord.js

我想检查用户对消息的反应是否起作用,以便如果用户没有等级,该机器人将忽略其余命令,但我不知道怎么做。

示例:如果具有管理员级别的用户对:eggsa:emoji作出反应,则该机器人将继续执行该命令,但是如果我只有成员级别,则该机器人将忽略我。

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

此代码在此阶段有效,只有所有人都可以使用

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

1 个答案:

答案 0 :(得分:0)

如果您查看messageReactionAdd docs,则可以看到它与反应一起,还可以找到添加了反应的用户。所以代替

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);找到正确的成员。

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