我对我的不和谐机器人 Kick 系统有疑问

问题描述 投票:0回答:2

我需要让不是每个人都可以踢成员,而只有有权限的人才能踢成员 这是我的踢球系统-

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!");
      }
    }
  });
javascript node.js discord discord.js searchkick
2个回答
1
投票

您可以使用

message.mentions.members.first()
跳过步骤并稍微简化代码。

如上所述,您需要使用

member.permissions.has()
来检查成员是否具有
MANAGE_MEMBERS
权限,或者您想要检查的任何其他权限。 (参见
Permissions.FLAGS

此外,如果可能的话,请考虑不再使用基于消息的命令。对于小型个人机器人来说,这并不是一个真正的问题,但 Discord 确实在推动新的

Interactions
(又名斜杠命令)系统,您可以在 here(discord.js 指南)和 here(官方,discord.com)。


-2
投票

为了让 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'],
这是处理用户权限的最简单方法

© www.soinside.com 2019 - 2024. All rights reserved.