【发布时间】:2021-01-11 07:28:55
【问题描述】:
因此,每当我服务器上的版主使用禁令命令时,他们都可以禁止版主和管理员。有没有办法通过权限解决这个问题?基本上,我想要它,所以当版主使用禁止命令时,他们不能禁止管理员。有人告诉我一个解决方案是将角色向下移动,但我想将角色保持在我的管理员角色之上。这是我的禁令代码:
const { MODLOGCHANNELNAME, MUTEROLE, MAINROLE, PREFIX, BOTNAME} = require("../config.json");
var ms = require('ms');
var Discord = require('discord.js');
module.exports ={
name: 'ban',
aliases: ['b',],//'@Knife Guard 2.0'],
description: 'Bans a user from this server',
usage: 'ban [mention] [reason]',
category: "moderation",
execute: async (message, args, client) => {
const user = message.mentions.users.first();
if(!message.member.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send("You do not have permission to perform this command!");
let banMember = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
if(!banMember) return message.channel.send("Please provide a user to ban!");
var reason = args.splice(1).join(' ');
if(!reason) return message.reply('You need to give a reason!');
if(!message.guild.me.hasPermission(["BAN_MEMBERS", "ADMINISTRATOR"])) return message.channel.send("I dont have permission to perform this command");
//message.delete();
var bot_name = BOTNAME;
let dmEmbed = new Discord.MessageEmbed()
.setColor('#FF0000')
.setTitle('You Are Banned')
.addField('Reason:', reason, true)
// eslint-disable-next-line no-undef
.setFooter(bot_name)
.setTimestamp();
message.channel.send(`**${banMember.user.tag}** has been banned`);//.then(m => m.delete(5000));
banMember.send(dmEmbed).then(() => //dms the user they r banned
// banMember.send(`Hello, you have been banned from ${message.guild.name} for: ${reason}`).then(() => //dms the user they r banned
message.guild.member(banMember).ban(banMember, {reason: reason, days: 1})); //once DM done, Ban member
// eslint-disable-next-line no-undef
var banEmbed = new Discord.MessageEmbed()
.setColor('#FF0000')
.setAuthor(`${message.guild.name} Modlogs`, message.guild.iconURL)
.addField('Moderation:', "Ban")
.addField("Moderated On:", `${user.username} (${user.id})`)
.addField("Moderator", message.author.username)
.addField("Reason:", reason)
.setTimestamp()
// eslint-disable-next-line no-undef
.setFooter(bot_name, message.author.avatarURL());
let modlogchannel = (`${MODLOGCHANNELNAME}`);
var channel = message.guild.channels.cache.find(c => c.name === modlogchannel);
channel.send(banEmbed);
}
};
【问题讨论】:
标签: javascript discord.js