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

为什么discord.js的slash command斜杠命令无法正常完成注册?

discord.js 斜杠命令注册失败排查方案
  • 修正REST API版本:Discord 已正式废弃 v9 版本的REST接口,将REST实例初始化代码改为 const rest = new REST({ version: '10' }).setToken(token);,同时将 discord.js、@discordjs/builders 依赖升级到最新正式版,避免新旧接口字段不兼容问题。
  • 调整注册逻辑位置:你当前把注册请求的立即执行异步函数写在了命令文件遍历的循环内部,每加载1个命令就会发起1次注册请求,不仅会反复覆盖已提交的命令列表,还极易触发Discord的速率限制导致请求被拦截。正确逻辑是等所有命令全部加载完成、全部push到commandsList数组之后,再统一执行1次注册请求。
  • 校验机器人邀请权限:邀请机器人进服务器时,必须同时勾选 bot 和 applications.commands 两个权限项,缺少后者会直接导致命令注册无权限。
  • 优先用单服务器命令测试:全局命令注册后最多存在1小时的缓存延迟,多数时候不是注册失败,只是还没同步到所有服务器。测试阶段建议使用单服务器命令,将注册路由改为 Routes.applicationGuildCommands("你的应用客户端ID", "测试服务器ID"),这类命令注册后即时生效,可快速验证逻辑是否正常。
  • 清理请求体无效字段:你打印的commandsList中存在default_permission: undefined字段,该字段在新版API中已被废弃,要么升级builder依赖自动适配新字段,要么手动过滤掉请求体中值为undefined的字段后再提交。
  • 核对ID参数准确性:确认你传入Routes.applicationCommands的应用ID参数和你当前机器人对应的应用客户端ID完全一致,填错ID会直接返回404错误。
  • 查看错误日志定位问题:你代码的catch块已经配置了错误打印,根据返回的状态码可快速定位问题:403代表权限不足,400代表请求体格式错误,429代表触发速率限制,404代表ID参数错误。

内容的提问来源于stack exchange,提问作者nutza tv ch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:08