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

Discord.js注册斜杠命令报permissions长度不得超过10错误如何修复

问题根因

Discord API 对服务器级斜杠命令的权限配置有硬性限制:单个命令关联的权限规则条目数最大为10,超出限制就会触发 Invalid Form Body 报错。你当前传入fullPermissions参数中存在至少一个命令的权限配置条目数超过10,才会导致该接口调用失败。

修复方案

方案1:精简权限规则(优先推荐)

  • 优先用角色权限替代单独的用户权限,把相同权限需求的用户归集到同一个Discord服务器角色下,只给角色配置权限,大幅减少单命令的权限条目数
  • 合并同类权限规则,相同允许/禁用状态、相同权限类型的规则尽量合并,避免重复配置
  • 如果没有特殊权限限制,可以直接把命令设为默认允许全部成员使用,不用额外配置权限条目

方案2:拆分权限配置调用(如果确实需要超过10条规则)

  • 不要一次性传入所有命令的fullPermissions,改为按单条命令逐个配置,若单条命令确实需要超过10条规则,可拆分权限列表为每10条一组分批调用接口配置,示例代码如下:
// 替换原来的全量设置逻辑
// await guild.commands.permissions.set({ fullPermissions });

// 分批设置逻辑
for (const permConfig of fullPermissions) {
  const targetCommand = await guild.commands.fetch(permConfig.id);
  // 拆分当前命令的权限列表为每10条一组
  const permChunks = permConfig.permissions.reduce((chunks, perm, index) => {
    const chunkIndex = Math.floor(index / 10);
    if (!chunks[chunkIndex]) chunks[chunkIndex] = [];
    chunks[chunkIndex].push(perm);
    return chunks;
  }, []);
  // 分批写入权限
  for (const chunk of permChunks) {
    await targetCommand.permissions.add({ permissions: chunk });
  }
}

方案3:使用应用级权限配置

  • 权限规则固定的场景可以直接在Discord开发者后台的机器人应用设置页,针对服务器统一配置命令可用权限,不需要通过代码动态配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:45:03