发出踢球命令。
我正在尝试发出命令,以使管理员不能互相踢。
if(message.author.hasPermission('KICK_MEMBER', 'ADMINISTRATOR') && message.member.hasPermission('KICK_MEMBER', 'ADMINISTRATOR'))
return ('You cant kick another admin!')
但是我得到一个错误。
TypeError:message.author.hasPermission不是函数
答案 0 :(得分:2)
因此,基本上,您正在尝试使用message.author.hasPermission('permission')
。消息对象的属性author
是一个User
,它是Discord用户。您需要使用GuildMember
来引用message.member.hasPermission('permission')
。
此外,您似乎正在尝试比较同一个人(message.author
和message.member
是同一个人,只有一个是User
,另一个是{{1 }}。您需要将GuildMember
与message.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”可以阻止管理员互相踢对方,它将非常正常