【发布时间】:2022-01-01 08:18:33
【问题描述】:
const { Discord, MessageEmbed } = require("discord.js");
module.exports = {
name: "ban",
description: "bans user from guild",
execute(client, message, cmd, args, Discord) {
const member = message.mentions.users.first();
const user = message.mentions.members.first();
let admin = message.author.username;
let server = message.guild.name;
const memberTarget = message.guild.members.cache.get(member.id);
let reason = args.join(" ").slice(22);
if (!reason) reason = "No reason provided";
const embed = new MessageEmbed().setDescription("`Please remember to mention the user **(Members, UserID)**`").setColor("YELLOW");
const embed1 = new MessageEmbed().setDescription("You dont have enough permissions to execute this command!").setColor("RED");
const embed2 = new MessageEmbed().setDescription("`Sorry But this User is not Bannable`").setColor("RED");
const embed4 = new MessageEmbed().setTitle(`You have been banned from ${server}!`).setThumbnail(`${message.guild.iconURL()}`).addField("Reason:", `${reason}`).setFooter(`you were banned by ${admin}`).setTimestamp().setColor("RED");
const embed5 = new MessageEmbed().setDescription(`**${admin}**, You Cannot Ban Yourself`);
if (user.id === message.author.id) {
message.channel.send({ embeds: [embed5] });
}
if (
message.member.roles.cache.some((role) => role.name === "Administrator") ||
message.member.roles.cache.some((role) => role.name === "Admin") ||
message.member.roles.cache.some((role) => role.name === "Moderator") ||
message.member.roles.cache.some((role) => role.name === "Mod")
) {
message.channel.send(`Sorry I cannot ban Admins/Mods`);
} else {
if (!message.mentions.users.first()) return message.channel.send({ embeds: [embed] });
if (!message.member.permissions.has("KICK_MEMBERS")) return message.channel.send({ embeds: [embed1] });
if (!user.kickable) return message.channel.send({ embeds: [embed2] });
if (!!message.mentions.users.first() && message.member.permissions.has("KICK_MEMBERS")) {
const embed3 = new MessageEmbed()
.setColor("BLACK")
.setThumbnail(message.mentions.users.first().displayAvatarURL())
.setDescription(`<@${memberTarget.user.id}> has been banned!`)
.addField("Reason", `${reason}`)
.setFooter(`Banned by ${admin}`)
.setTimestamp();
user.send({ embeds: [embed4] });
setTimeout(function () {
user.ban()
.catch((err) => console.log(err))
.then(() => {
message.channel.send({ embeds: [embed3] });
message.channel.bulkDelete(1);
}, 20000);
});
}
}
},
};
所以我正在寻找一种方法让我的机器人不禁止管理员或 Mod 角色,但是,我目前的设置方式相信每个成员都说过角色。
我正在寻找是否有更好的方法来寻找角色,或者我是否必须四处移动。
非常感谢您的帮助,因为我正在尽最大努力尽快修复此补丁。提前致谢!
【问题讨论】:
-
if (message.member.roles.cache.some(role => role.name === 'Administrator') || message.member.roles.cache.some(role => role.name === 'Admin') || message.member.roles.cache.some(role => role.name === 'Moderator') || message.member.roles.cache.some(role => role.name === 'Mod'))不是检测一个人是否有角色的好方法... -
我之前的评论的意思是,您应该检测他们是否具有类似的 ADMINISTRATOR 权限或 MANAGE_MESSAGES 或可能 KICK_MEMBERS。
标签: javascript node.js discord discord.js