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

DiscordJS v13.8.0设置斜杠命令权限报405 Method Not Allowed错误

Discord.js v13.8.0 调用命令权限接口返回405错误解决方案

问题根因

  • 报错的核心原因是你调用的MainGuild.commands.permissions.set()方法对应Discord API v9版本的全服应用命令批量权限设置端点,该端点已经被Discord官方正式废弃并下线,所有发往该路径的PUT请求都会直接返回405 Method Not Allowed响应,和你传入的参数内容没有直接关联。
  • 从报错日志里的requestData: { json: [], files: [] }可以看出,你代码构造的fullPermissions本身就是空数组,属于逻辑缺陷:你在遍历命令生成权限配置时,只要命令没有配置自定义permission字段就直接跳过累加,如果你所有命令都没定义该字段,最终生成的配置就是空数组,即便端点可用也不会产生任何实际效果。
  • 你当前的权限配置逻辑本身就属于冗余操作:Discord斜杠命令默认会继承服务器的角色权限体系,只要用户在服务器内拥有对应权限,默认就能调用匹配权限要求的命令,不需要你手动遍历所有带对应权限的角色逐一添加允许规则,这种写法不仅会在服务器角色变动时失效,还额外触发了已废弃的接口。

修复步骤

  1. 直接废弃全量批量设置所有命令权限的写法,不要再调用MainGuild.commands.permissions.set()这个方法。
  2. 优先用命令自带的defaultMemberPermissions字段配置命令所需的基础权限,不需要额外拼接角色权限列表。示例命令定义:
    const commandsarray = [
      {
        name: "ban",
        description: "封禁用户",
        // 直接配置需要的权限,Discord会自动做权限校验
        defaultMemberPermissions: ['BAN_MEMBERS'],
        // 其他命令参数...
      }
    ]
    
  3. 如果确实需要给单条命令配置特殊的权限覆盖(比如给某个没有管理员权限的角色开放管理员命令),针对单条命令调用权限设置方法,不要走批量接口。修正后的ready事件代码如下:
    client.on("ready", async () => {
      const MainGuild = client.guilds.cache.get(process.env.GUILDID);
      if (!MainGuild) throw new Error("无法获取目标服务器数据,请检查GUILDID配置");
    
      // 注册全量斜杠命令
      const registeredCommands = await MainGuild.commands.set(commandsarray);
    
      // 仅给需要自定义权限覆盖的命令单独配置
      for (const [, cmd] of registeredCommands) {
        const cmdConfig = commandsarray.find(item => item.name === cmd.name);
        // 只有配置了自定义权限覆盖的命令才执行设置
        if (cmdConfig?.permissionOverwrites?.length) {
          await cmd.permissions.set({
            permissions: cmdConfig.permissionOverwrites
          });
        }
      }
    });
    
  4. 如果后续需要更稳定的API适配,可以将discord.js升级到v14版本,v14已经完全适配Discord API v10的接口规则,不会再出现旧端点调用的问题。

注意:不要继续使用遍历服务器角色匹配权限再批量写入的逻辑,这种写法会大幅增加API请求次数,很容易触发Discord的速率限制,实际权限校验效果和直接配置defaultMemberPermissions完全一致,没有任何额外收益。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:39:16