Discord.js注册斜杠命令报错50035:应用命令名称需唯一
Discord.js 斜杠命令注册报50035 Invalid Form Body 修复方案
该报错和线上已有全局命令无关,冲突来自本次提交的待注册命令列表本身,结合贴出的代码和目录结构,按以下步骤排查修复:
1. 修复路径大小写不匹配问题
命令存储文件夹名为大写开头的Commands,但部署脚本中写的读取路径为全小写的commands:
// 原错误代码 const commandsPath = path.join(__dirname, 'commands');
- Windows、macOS默认文件系统大小写不敏感,该行代码不会直接抛路径不存在的错误,但可能出现重复加载文件、命令数据异常的问题
- 部署到Linux环境(大小写敏感)时会直接抛出路径不存在错误
直接修改路径和实际文件夹名完全一致即可:
const commandsPath = path.join(__dirname, 'Commands');
2. 排查待提交命令列表内部重名/非法项
查询到线上全局命令返回为空,说明重名冲突出现在本地待提交的8个命令数据中,排查方式:
- 在命令加载循环中增加日志打印,直接输出所有待注册命令的名称和来源文件,快速定位重复项:
for (const file of commandFiles) { const filePath = path.join(commandsPath, file); const command = require(filePath); const cmdJson = command.data.toJSON(); // 新增打印逻辑 console.log(`已加载命令:${cmdJson.name},来源文件:${file}`); commands.push(cmdJson); }
- 逐文件检查命令配置,确保符合Discord命令规则:
- 所有命令的
name字段全局唯一,无重复 - 命令名全为小写、无空格、无特殊符号,长度在1-32字符范围内
- 子命令、子命令组的名称不与主命令或其他子命令重名
- 所有命令的
- 如果打印出的命令总数超过Commands文件夹下的js文件总数,说明存在重复加载,修复路径大小写问题后即可解决。
验证步骤
修复后先执行脚本查看打印日志,确认命令数量和文件数一致、无重名,再执行部署请求即可正常注册。
提示:全局斜杠命令注册后Discord侧有最长1小时的缓存延迟,如果需要即时调试,可改用公会命令路由
Routes.applicationGuildCommands(clientId, 测试服务器ID),公会命令更新后即时生效。
内容的提问来源于stack exchange,提问作者boomcreeper11
相关产品推荐
相关产品推荐

