不和谐.js禁止命令 - 角色受限



我有这段代码,但我必须添加一行,只允许具有某些角色的人使用它,例如角色"版主" 因为像这样普通成员可以禁止其他成员。

你能帮我吗?

或者它只能在 ID 定义的某个通道中使用


module.exports = {
    name: "ban",
    category: "moderation",
    description: "bans the member",
    usage: "<id | mention>",
    run: async (client, message, args) => {
        const logChannel = message.guild.channels.find(c => c.name === "logs") || message.channel;
        if (message.deletable) message.delete();
        // No args
        if (!args[0]) {
            return message.reply("Please provide a person to ban.")
                .then(m => m.delete(5000));
        }
        if (!message.member.hasPermission("BAN_MEMBERS")) {
            return message.reply("❌ You do not have permissions to ban members. Please contact a staff member")
                .then(m => m.delete(5000));
        }
        const toBan = message.mentions.members.first() || message.guild.members.get(args[0]);
        }
        if (!toBan.bannable) {
            return message.reply("I can't ban that person due to role hierarchy, I suppose.")
                .then(m => m.delete(5000));
        }

        await message.channel.send(promptEmbed).then(async msg => {
            // Await the reactions and the reactioncollector
            const emoji = await promptMessage(msg, message.author, 30, ["✅", "❌"]);
            if (emoji === "✅") {
                msg.delete();
                toBan.ban(args.slice(1).join(" "))
                    .catch(err => {
                        if (err) return message.channel.send(`didn't work`)
                    });
                logChannel.send(embed);
            } else if (emoji === "❌") {
                msg.delete();
                message.reply(`ban canceled.`)
                    .then(m => m.delete(10000));
            }
        });
    }
};

  

实际上,您的代码使用 Discord 权限来检测成员是否具有禁止权限。如果要通过角色进行检查,请删除实际系统(这些行:

if (!message.member.hasPermission("BAN_MEMBERS")) {
    return message.reply("❌ You do not have permissions to ban members. Please contact a staff member")
    .then(m => m.delete(5000));
}

( 并改为添加以下内容:

if (!message.member.roles.some((r) => r.name === "Moderator") {
    return message.reply("❌ You do not have permissions to ban members. Please contact a staff member")
    .then(m => m.delete(5000));
}

如果成员没有审阅人角色,这将返回错误消息。

最新更新