如何设置无法踢出具有更高角色的成员 - Discord.js
Posted
技术标签:
【中文标题】如何设置无法踢出具有更高角色的成员 - Discord.js【英文标题】:How do I set an unable to kick members with higher role - Discord.js 【发布时间】:2020-12-28 13:19:30 【问题描述】:我需要使用 Discord.js 的朋友对这段代码的帮助。我似乎无法编写此代码,我想要的是:
当人/成员角色高于机器人时,机器人会发送消息,机器人无法踢出角色更高的成员,但当角色低于机器人的人会被踢出时
错误是: 机器人无法踢出高于或低于机器人角色的所有成员
有什么解决办法吗?也许我错过了什么
const rolepositionerror = new Discord.MessageEmbed()
.setDescription('You can\'t kick members with equal or higher position!')
.setColor("FF0000")
const targetMember = message.mentions.members.first() || message.guild.members.cache.get(args[0])
const authorHighestRole = message.member.roles.highest
const targetHighestRole = targetMember.roles.highest
if(targetHighestRole = authorHighestRole) return message.channel.send(rolepositionerror)
if(targetMember)
targetMember.kick()
message.channel.send(userkicked)
【问题讨论】:
【参考方案1】:Discord.js 的 GuildMember
有一个名为 GuildMember#kickable
的属性,如果用户可以被踢,它将返回 true,您要做的就是将其添加到您的代码中:
const targetMember = message.mentions.members.first()
|| message.guild.members.cache.get(args[0]);
if(targetMember)
if (targetMember.kickable)
// If you can kick the member, then...
targetMember.kick()
message.channel.send(userkicked)
else
// If you can't kick the member, then...
const roleError = new Discord.MessageEmbed()
.setDescription(
"This member can't be kicked!\n" +
"Check if they have a higher role than the bot and if the bot has permissions!"
)
.setColor("FF0000");
return message.channel.send(roleError)
有关更多信息,请查看以下链接:
Discordjs.guide - Guide - Kicking a member Discordjs.guide - Guide - Permissions Discord.js - Docs -GuildMember
property
Discord.js - Docs - GuildMember#kickable
property
【讨论】:
以上是关于如何设置无法踢出具有更高角色的成员 - Discord.js的主要内容,如果未能解决你的问题,请参考以下文章