如何检查成员是不是可以在 discord.js v12 中被踢/禁止?
Posted
技术标签:
【中文标题】如何检查成员是不是可以在 discord.js v12 中被踢/禁止?【英文标题】:How to check if a member can be kicked/banned in discord.js v12?如何检查成员是否可以在 discord.js v12 中被踢/禁止? 【发布时间】:2021-02-10 15:41:08 【问题描述】:我创建了一个可以正常工作的禁止命令,除非你试图踢出比机器人更高角色的人。有没有一种简单的方法来检查用户是否可以被踢?我尝试检查客户端是否具有比此人更高的角色,但是当您尝试踢服务器的所有者(如果他没有角色)时它会失败。我的代码在这里:
var User = message.guild.member(message.mentions.members.first()) || message.guild.members.cache.get(args[0]);
if (!User) return message.reply("please mention the one who should be banned")
if(User.id === message.author.id)
return message.reply('can not allow self-harm')
;
if (message.member.roles.highest.comparePositionTo(User.roles.highest) <= 0)
return message.reply('you can not ban a user with the same (or higher) permissions as you')
;
var banReason = args
banReason.shift()
banReason = banReason.toString()
banReason = banReason.replace(/,/g, ' ')
if (!banReason)
banReason = "No reason provided"
;
var banReason2 = `Banned by $message.author.tag -` + ' ' + banReason
User.ban(reason: banReason2).catch(error =>
message.channel.send(`Failed to ban <@$User.id>`)
return console.log(error)
)
message.reply(`you have succesfully banned <@$User.id> with the reason **$banReason** <a:excitedwave:758043553573372117>`);
const embed = new Discord.MessageEmbed()
.setColor('#FF0000')
.setTitle(`You have been banned from $message.guild.name`)
.setDescription(`**Banned by:** <@$message.author.id>\n**Ban reason:** $banReason`)
.setTimestamp()
User.user.send(embed).catch(error =>
message.channel.send(`Failed to DM <@$User.id> the info about this action`)
console.log(error)
)
提前致谢
【问题讨论】:
【参考方案1】:您应该尝试使用bannable 或kickable 属性。
如果结果是FALSE
,则不能踢或禁止用户。
用法:
mentionnedUser.bannable // Should return TRUE or FALSE
mentionnedUser.kickable // Should return TRUE or FALSE
【讨论】:
以上是关于如何检查成员是不是可以在 discord.js v12 中被踢/禁止?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查我的机器人是不是可以在 discord.js v12 中添加角色?
如何添加一种方法来检查某人是不是已经在部落中/或者他们是不是是 Discord 中的部落所有者 - Discord.JS