为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

胡子哥哥 2021-11-18 10:14:20
我想制作一个简单的踢球功能,用提及踢球员。但我首先想检查提及是否是用户。我不知道如何。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 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

以下是我能想到的选项:

User.bot 文档

if (!member.user.bot)

检查用户是否不是机器人

GuildMember.kickable 文档

if (member.kickable)

检查成员是否可以踢

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


查看完整回答
反对 回复 2021-11-18
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

您可以通过多种方式执行此操作。您可以检查具有哪些权限以禁止其他人踢他们(例如,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

}

显然,你可以用它做很多有趣的事情。但这些是基础。希望我有所帮助,对于这么晚的回复,我很抱歉,我几乎只是在论坛中滚动并发现了这个未回答的问题。


查看完整回答
反对 回复 2021-11-18
  • 2 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信