检查提及内容是否是用户-不和谐

时间:2019-10-11 21:28:33

标签: javascript discord discord.js

我想制作一个简单的踢球功能,以提起踢球的球员。 但是我首先要检查提及内容是否是用户。我不知道怎么办。

let member = message.mentions.members.first();
if ("member.something") {  //if member is a user in the server.
            member.kick().then((member) => {
                channel.send(`${member} has been kicked! :wave:`)
            });
        } else {
            channel.send(`Error: ${member} can't be kicked!`)
        }

2 个答案:

答案 0 :(得分:1)

您可以通过多种方式执行此操作。 您可以检查具有哪些权限以禁止他人踢他们(例如KICK_MEMBERS)。看起来像这样:

let member = message.mentions.members.first();
if (member.hasPermission("KICK_MEMBERS)) return message.channel.send("That member can also kick!")

您还可以检查他们是否具有某种角色,从而不允许他们被踢。 (可以是主持人角色,可以是受保护角色)

//Get role by ID (Allows you to later change its name, ID will remain the same)
let modRole = message.guild.roles.get("MODROLE_ID");
if (member.role.has(modRole.id)) return message.channel.send("This member is a moderator")

//Find role by name. Means if you change the name of this, you need to change code too.
let protectedRole = message.guild.roles.find(r => r.name === "Protected from kicking")
if (member.role.has(protectedRole.id)) return message.channel.send("This member is protected")

最后(我知道),您可以检查它们是否可踢。但是所有要做的就是说,如果他们上方的某个人试图踢他们,它将做到这一点。 因此,例如,如果管理员正在测试或进行其他测试,则只要kickable = true,它就会踢用户

if (member.kickable) {
member.kick()
} else {
message.channel.send("This member is above you!)"
}

如果您只想检查他们是否是实际用户,请将此行放在顶部:

if (!member.bot) {
//If they're a user
} else {
//If they're a bot
}

显然,您可以做很多有趣的事情。但这是基础。 希望我能有所帮助,对于这个较晚的回复感到抱歉,我几乎只是在论坛中滚动并找到了这个未回答的问题。

答案 1 :(得分:0)

以下是我可以想到的选项:

User.bot Documentation

if (!member.user.bot)

要检查用户是否不是机器人

GuildMember.kickable Documentation

if (member.kickable)

检查成员是否可踢

要首先检查成员是否存在,请签出: https://stackoverflow.com/a/53284678/11425141