我的clear命令可以在服务器上运行,但是每个人都可以使用它,我怎么只能让主持人使用它?这是我的代码:
case 'clear':
if(!args[1]) return message.reply('Error please define how many messages you wanna delete, ***Ex: !clear 10*** ')
message.member.hasPermission("MANAGE_CHANNELS");
message.channel.bulkDelete(args[1]);
break;
感谢阅读,祝您有美好的一天!
答案 0 :(得分:1)
您需要检查成员是否具有权限。您所需要做的就是创建一个IF语句。
case 'clear':
if(!args[1]) return message.reply('Error please define how many messages you wanna delete, ***Ex: !clear 10*** ')
if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply(`You can't use this command.`);
message.channel.bulkDelete(args[1]);
break;
答案 1 :(得分:0)
我有2种主要方法来执行此操作,将其限制为角色或将其限制为权限。
如果用户具有角色
这样做的好处是您不需要分配权限,但是,如果您有多个角色,则需要使用&&
进行多次检查
这是一种方法:
if (message.member.roles.cache.some(role => role.name === 'admin')) {
// success code
}
但是我会这样做:
if (!message.member.roles.cache.some(role => role.name === 'admin')) {
// They don't have permission
return
}
因为添加多个角色更容易
if (!message.member.roles.cache.some(role => role.name === 'admin') && !message.member.roles.cache.some(role => role.name === 'moderator')) {
// They don't have permission
return
}
权限
此方法的优点是简单得多,它们的作用无关紧要。
这是最简单的方法
if (!message.member.hasPermission("MANAGE_MESSAGES")) {
// They don't have permission
return
}
就像在拥有多个权限之前一样
if (!message.member.hasPermission("MANAGE_MESSAGES") && !message.member.hasPermission("KICK_MEMBERS")) {
// They don't have permission
return
}