You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Discord服务器全员踢出命令出现allMembers.kick is not a function错误如何解决

错误原因

message.guild.members返回的是GuildMemberManager类型的集合管理器对象,并非单个成员实例,只有单个GuildMember实例才具备kick()方法,直接对集合调用该方法自然会触发allMembers.kick is not a function的报错。

修复步骤
  1. 前置配置:前往Discord开发者平台的Bot管理页,开启Server Members Intent权限开关,同时给你的Bot在对应服务器分配Kick Members管理权限,缺少权限会导致后续踢出操作失败。
  2. 代码逻辑调整:你需要先拉取所有服务器成员的列表,再遍历列表对每个成员单独执行踢出操作,同时建议跳过服务器所有者和Bot自身,避免操作中断。

修复后的参考代码如下(适配discord.js v13+版本):

client.on("messageCreate", async message => {
  // 过滤Bot自身发送的消息,避免死循环
  if (message.author.bot) return;
  if (message.content.startsWith(prefix + "amstronglikeabullinapool")) {
    message.channel.send("ok i dont care");
    // 校验操作者权限,可根据需求删除该判断
    if (!message.member.permissions.has('KickMembers')) {
      return message.channel.send("你没有执行该命令的权限");
    }
    try {
      // 拉取服务器所有成员列表
      const allMembers = await message.guild.members.fetch();
      // 遍历成员逐个执行踢出
      for (const member of allMembers.values()) {
        // 跳过服务器所有者和Bot自身,避免操作中断
        if (member.id === message.guild.ownerId || member.id === client.user.id) continue;
        // 执行踢出,catch捕获单个成员踢出失败的异常避免整体流程中断
        await member.kick("批量踢出操作").catch(err => console.log(`踢出成员${member.user.tag}失败:`, err));
      }
      message.channel.send("oki 操作完成");
    } catch (err) {
      console.error("批量操作失败:", err);
      message.channel.send("操作执行失败,请检查Bot权限和意图配置");
    }
  }
})
  • 注意:批量踢出成员属于违反Discord服务条款的滥用行为,仅可在个人所有的测试服务器内验证功能,违规使用会导致Bot账号甚至个人Discord账号被平台封禁。

内容的提问来源于stack exchange,提问作者TheCoolDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:00:02