让管理员不要互相踢

时间:2020-06-12 10:12:45

标签: discord discord.js

发出踢球命令。
我正在尝试发出命令,以使管理员不能互相踢。

if(message.author.hasPermission('KICK_MEMBER', 'ADMINISTRATOR') && message.member.hasPermission('KICK_MEMBER', 'ADMINISTRATOR'))
    return ('You cant kick another admin!')

但是我得到一个错误。

TypeError:message.author.hasPermission不是函数

2 个答案:

答案 0 :(得分:2)

因此,基本上,您正在尝试使用message.author.hasPermission('permission')。消息对象的属性author是一个User,它是Discord用户。您需要使用GuildMember来引用message.member.hasPermission('permission')

此外,您似乎正在尝试比较同一个人(message.authormessage.member是同一个人,只有一个是User,另一个是{{1 }}。您需要将GuildMembermessage.member.hasPermission()进行比较。

答案 1 :(得分:0)

如果您不希望管理员踢其他管理员,则应检查

if(user.member.hasPermission("KICK_MEMBERS")) {  return message.channel.send("msg here"); }

假设您没有定义“用户”,那么您可以这样做

let user = message.mentions.users.first() || message.guild.members.cache.get(args[0]);

如果已定义,则可以使用来检查用户

if(!user) { return message.channel.send("member not found") } 

如果您要添加原因,则可以

let user = message.mentions.users.first() || message.guild.members.cache.get(args[0]);
let reason = args.slice(1).join(' ')
if(message.member.hasPermission("KICK_MEMBERS") { return message.channel.send("You do not have permission to kick members") }
if(!user) { return message.channel.send("member not found") }
if(!reason) { return reason = "No reason supplied" }
if(user.member.hasPermission("KICK_MEMBERS")) { return message.channel.send("You cannot kick that member") }
if(user.id = message.author.id) { return message.channel.send("you should not kick yourself")

message.mentions.users(user).kick()
message.mentions.users(user).send("You were kicked from " + message.guild + ", Reason: " + reason)

message.channel.send(`${message.author.username} Kicked ${user}#{user.discriminator}`)

这是假设您已定义“消息”和“ args”,但这是一个简短的示例,说明了如果您使用“ Discord.JS V12”可以阻止管理员互相踢对方,它将非常正常