当前位置: 首页 > 知识库问答 >
问题:

尝试仅为管理员创建kick功能

胡飞舟
2023-03-14

我正在尝试创建一个kick功能,如果AdminRole类型/kick@user,它就会踢他们,但是如果MemberRole中的某个人试图说/kick@user它会回复对不起,你没有使用此功能的权限

client.on("message", (message) => 
{
if (message.content.startsWith("/kick")) 
    //checking if user is an admin role
    if (message.member.roles.find('AdminRole'))
        {
            var member= message.mentions.members.first();
             // Kick
    member.kick().then((member) => {
        // Successmessage
        message.channel.send(":wave: " + member.displayName + " has been successfully kicked :point_right: ");
    }).catch(() => {
         // Failmessage
        message.channel.send("Sorry, command failed");
    });
}

  if (message.member.roles.find('MemberRole'))
    {
        message.reply("Sorry, you don't have permissions to use this!");
    }

});

这是它抛出的错误,请记住,它只在有人键入/kick命令时抛出此错误,而不考虑角色

如果(typeof value==='未定义')抛出新的错误('value必须指定.');^

错误:值必须指定。在Map.find(/用户/主用户/桌面/机器人/node_modules/discord.js/src/util/Collection.js: 499:45)在Client.client.on(/用户/主用户/桌面/机器人/index.js:12: 34)在Client.emit(events.js:198: 13)在MessageCreateHandler.handle(/用户/主用户/桌面/机器人/node_modules/discord.js/src/client/websocket/packets/handlers/MessageCreate.js: 9:34)在WebSocketPacketManager.handle(/用户/主用户/桌面/机器人/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js: 105:65)在WebSocketConnection.on包(/用户/主用户/桌面/机器人/node_modules/discord.js/src/client/websocket/WebSocketConnection.js: 333:35)在WebSocketConnection.on消息(/用户/主用户/桌面/机器人/node_modules/discord.js/src/client/websocket/WebSocketConnection.js: 296:17)在WebSocket.on消息(/用户/主用户/桌面/机器人/node_modules/ws/lib/event-target.js:120: 16)在WebSocket.emit(events.js:198: 13)在Receiver.receiverOnMessage(/用户/主用户/桌面/机器人/node_modules/ws/lib/websocket.js:789: 20)


共有1个答案

庞彬
2023-03-14

您的错误来自您当前使用的Collection.find()

不正确:Collection.find('属性')
弃用:Collection.find('属性','值')
正确:Collection.find(元素=

const prefix = '/';

client.on('message', async message => {
  if (!message.content.startsWith(prefix) || message.author.bot) return;

  const [cmd, ...args] = message.content.trim().slice(prefix.length).split(/\s+/g);

  switch(cmd.toLowerCase()) {
    case 'kick':
      try {
        if (!message.guild) return await message.channel.send(':x: Guilds only.');
        if (!message.member.roles.find(r => r.name === 'Admin')) return await message.channel.send(':x: No permission.');
        if (!args[1] || !message.mentions.members.first()) return await message.channel.send(':x: No member provided.');

        const toKick = message.mentions.members.first();
        const reason = args.slice(2).join(' ') || 'No Reason';

        if (!toKick.kickable || toKick.roles.find(r => r.name === 'Admin')) return await message.channel.send(':x: No permission.');

        await toKick.kick(reason);
        await message.channel.send(`:wave: ${toKick.user.displayName} has been kicked.`);
      } catch(err) {
        console.error(err);
      }

      break;
  }
});

 类似资料:
  • 仅企业版可用 请求header PUT /v1/account/createActManager Authorization:Bearer {ACCESS TOKEN} 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 请求payload { "username" : "管理员A", "cost_type" : "1", "cost_limi

  • 我从用户模型中继承了三个用户,即Admin、Employee和Relative。 models.py 管理派克 管理员将是超级用户。管理员将前往管理站点,对员工和亲属执行CRUD。在表单中,我只希望管理员输入员工/亲属的用户名(PAN_ID)、密码和电子邮件。单击保存后,应发送邮件的相应信号,并发送电子邮件,以便在邮件功能中访问密码。密码应由make_password自动生成。我得到以下错误。 内

  • 一、简介 添加和管理管理员。 二、功能演示 1.添加管理员 2,管理管理员 对不需要或过期的管理员进行编辑和删除操作。如下图所示:

  • 一、简介 角色定位了拥有此角色的所有管理员权限,管理员可以为不同的角色成员分配不同的权限配置。 二、功能演示 1.成员管理 对该角色下所有管理员进行管理 2.角色编辑 编辑和添加操作相同,不做详述。 3.口令卡 V9系统集成了口令卡功能,使用户信息更见保密。下面我们做详细介绍。如下图: 点击“申请口令卡”后会提示申请成功.如下图: 注:申请口令卡成功后,请一定妥善保管生成的图片;如丢失,您将不能登

  • 我对Liquibase(最新版本3.2.2)有一个奇怪的问题。 它没有检测到DATABASECHANGELOG已经存在,因此尝试创建它但失败。 如您所见,创建了表和元数据表: 但当我再次运行时,不是没有任何操作,而是得到一个错误:

  • 问题内容: 我想创建一个供个人使用的简单堆叠窗口管理器,主要用于学习和挑战自我。 我浏览了的源代码,它的花样少,但由于它不是基于小部件工具箱的,因此它的级别似乎很低。1使用GTK +之类的工具箱会更好吗?恐怕其中的某些代码和库可能过于陈旧( 编辑: 已弃用),我希望窗口管理器使用相对较新的库。为了理解,我也将对如何从头启动窗口管理器的建议感兴趣-为此目的的教程并不多。 更新: 对于那些考虑类似项目