如何检查用户是否具有特定角色discord.js v12?

时间:2020-09-06 18:34:20

标签: javascript discord.js

我刚刚开始创建我的discord机器人,我想发出警告命令,但我只希望具有主持人角色的人能够使用它。有没有一种方法可以检查用户是否具有特定角色?谢谢。到目前为止,我的代码:

module.exports = {
    name: 'warn',
    description: "The bot will warn the mentioned user",
    execute(message, args){
        var warnedone = message.mentions.first()
        if(author doesnt have a role with ID 712229762742878321) {
             return message.reply('can not use this command')
        }
    }
}

2 个答案:

答案 0 :(得分:2)

如果要检查角色,可以执行以下操作:

if (!message.member.roles.cache.has('712229762742878321')) {
    return message.reply('can not use this command')
};

但是,我建议您检查权限,因为这会使该命令不适用于具有admin角色的人员。您可以像这样检查权限:

if (!message.member.permissions.has('MANAGE_ROLES')) {
    return message.reply(`you don't have manage roles permissions that are required to execute this command.`);
}

这样,它将使所有具有Manage Roles权限(通常是mods及更高版本)的人都可以使用该命令。 另外,我建议您更改

var warnedone = message.mentions.first()

var warnedone = message.mentions.members.first()

此外,如果您想这样做,则可以通过其ID警告人们,您可以执行以下操作:

var warnedone = message.mentions.members.first() || message.guild.members.cache.get(args[0]);

让我知道这是否可行:)

答案 1 :(得分:0)

你在这里。

module.exports = {
    name: 'warn',
    description: "The bot will warn the mentioned user",
    execute(message, args){
        var warnedone = message.mentions.first()
        if(!message.member.roles.cache.find(r => r.id === "712229762742878321")) {
             return message.reply('can not use this command')
        }
    }
}