我刚刚开始创建我的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')
}
}
}
答案 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')
}
}
}