如何仅对主持人(discord bot)发出清晰的命令

时间:2020-05-11 12:46:02

标签: discord.js

我的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;

感谢阅读,祝您有美好的一天!

2 个答案:

答案 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;

您可以查看有关权限herehere的更多信息。另外,我强烈建议您创建一个命令处理程序。

答案 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
}