我需要让不是每个人都可以踢成员,而只有有权限的人才能踢成员 这是我的踢球系统-
client.on('message', message => {
if (!message.guild) return;
if (message.content.startsWith('+kick')) {
const user = message.mentions.users.first();
if (user) {
const member = message.guild.members.resolve(user);
if (member) {
member
.kick({
reason: 'They were bad!',
})
.then(() => {
message.channel.send(`Successfully kicked ${user.tag}`);
})
.catch(err => {
message.channel.send('I was unable to kick the member');
console.error(err);
});
} else {
message.channel.send("That user isn't in this guild!");
}
} else {
message.channel.send("You didn't mention the user to kick!");
}
}
});
message.mentions.members.first()
跳过步骤并稍微简化代码。
member.permissions.has()
来检查成员是否具有 MANAGE_MEMBERS
权限,或者您想要检查的任何其他权限。 (参见Permissions.FLAGS
)
此外,如果可能的话,请考虑不再使用基于消息的命令。对于小型个人机器人来说,这并不是一个真正的问题,但 Discord 确实在推动新的
Interactions
(又名斜杠命令)系统,您可以在 here(discord.js 指南)和 here(官方,discord.com)。
为了让 mod 仅使用命令,我建议您使用
message.member.permissions.has()
,它允许机器人检查运行命令的人是否在公会中拥有一定的权限。然后返回,如果该人没有权限,您可以在 if
语句中使用它,如下所示:
if (!message.member.permissions.has("KICK_MEMBERS")) {
return message.reply({content: `You need permissions to use command`})
}
当然,您始终可以在
messageCreate
事件中添加用户权限以添加到命令顶部。
因此事件文件将具有:
if (!message.member.permissions.has(<command>.userPermissions || [])) return message.channel.send({content: 'You need permissions to run this command'})
然后您可以在名称或描述下添加命令
userPermissions: ['KICK_MEMBERS'],
这是处理用户权限的最简单方法