我有这段代码,但我必须添加一行,只允许具有某些角色的人使用它,例如角色"版主" 因为像这样普通成员可以禁止其他成员。
你能帮我吗?
或者它只能在 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));
}
如果成员没有审阅人角色,这将返回错误消息。