javascript - 检查提及是否是用户 - 不和谐
问题描述
我想做一个简单的踢球功能,用提及踢球员。但我首先要检查提及是否是用户。我不知道怎么做。
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!`)
}
解决方案
您可以通过多种方式执行此操作。您可以检查具有哪些权限以禁止其他人踢他们(例如,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")
最后(据我所知),您可以检查它们是否可踢。但这只是说,如果他们上面的人想踢他们,它就会踢他们。因此,如果管理员说正在测试或其他什么,它只会踢用户 if 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
}
显然你可以用这个做很多有趣的事情。但这些是基础。希望我能帮上忙,对于这么晚的回复感到抱歉,我几乎只是在浏览论坛并发现了这个未回答的问题。
推荐阅读
- c# - Unity 使功能在特定时间段内工作
- javascript - 如果满足两个条件之一,则启用按钮
- python - 无法通过多处理加速 Python DEAP
- c++ - 如何修复 Visual Studio 的 qt 扩展?
- haskell - 难以通过 UTF8Builder 为 RIO.Logger 编写日志消息
- r - ggplot 手动图例 scale_fill_manual 用于单独的颜色因子
- firebase-cloud-messaging - Firebase FCM 协议
- javascript - jQuery AJAX 似乎没有触发
- javascript - 异步函数的问题,JS。我可以使用 Promise 吗?
- javascript - 连接 AlpineJS x-text 和 HREF 属性的问题