Discord.js斜杠命令突发Error 50035无效表单主体报错
报错原因
Discord 斜杠命令注册接口要求命令选项的type字段必须传入整数类型的枚举值,当前代码里直接传了字符串'STRING',接口无法完成类型转换,直接返回400参数错误,对应报错码50035。
报错核心提示翻译:
0.options[0].type[NUMBER_TYPE_COERCE]: Value "STRING" is not int.即提交的第一个命令的第一个选项的type字段值为字符串"STRING",不符合接口要求的整数类型。
这类问题突然出现通常是两个诱因:
- 项目依赖的discord.js版本、自定义的Command基类近期做过升级,移除了自动把字符串类型名转换为对应数字枚举的逻辑
- 本地存储的命令注册缓存失效,机器人重启后重新向Discord服务器提交全量命令注册请求,触发了接口的严格参数校验
修复方案
任选一种方式修改即可,优先选第一种官方推荐写法:
- 引入discord.js内置的
ApplicationCommandOptionType枚举,用枚举值替换字符串类型定义,后续版本升级兼容性最好 - 直接传入对应类型的数字值,字符串类型(STRING)对应的枚举值为3
修复后的完整代码如下,仅修改了导入项和选项type字段,原有交互逻辑不需要改动:
const Command = require('../../structures/Command') //../ Sinaliza quantas pastas pular // 新增导入内置的命令选项类型枚举 const { MessageEmbed, ApplicationCommandOptionType } = require('discord.js') module.exports = class extends Command { constructor(client) { super(client, { name: 'wildcat', description: 'Insira o código do Bundle indicado.', options:[ { name: 'codigowildcat' , // 替换原有的字符串'STRING',如果不想导入枚举也可以直接写 type: 3 type: ApplicationCommandOptionType.String , description: 'Código do bundle.' , required: true } ] }) } run = (interaction) => { const wildcat = interaction.options.getString('codigowildcat') let apostos = "```" const embed = new MessageEmbed() .setThumbnail("https://cdn.discordapp.com/attachments/694959159199793236/987371688444428309/Wildcat.png") .setDescription(`<:confetes:985241046197882950>** ・__ Parabéns, você acabou de comprar: <:Wildcat:910010235505233981> WILDCAT!__** **Segue abaixo o seu \`CÓDIGO\` exclusivo:** ${apostos}${wildcat}${apostos} :100: | Lembre-se de deixar uma PRINT em <#909845324858798131> para nos ajudar.`) .setColor('#0eb2ee') .setFooter('💙 ・ TB STORE Agradece a preferência e confiança.') return interaction.reply({ embeds: [embed] }) .catch(() => interaction.reply({content: `Erro | Erro ao tentar enviar a mensagem.`, ephemeral: true })) } }
后续注意事项
- 修改完成后重启机器人,触发命令重新注册:如果是公会命令,修改后即时生效;如果是全局命令,最长需要等待1小时Discord端缓存更新才能正常使用
- 如果是自定义Command基类原本自带字符串转枚举的逻辑,可检查基类代码确认转换逻辑是否被误删,补回逻辑也可修复问题,但仍推荐直接使用官方枚举值,避免后续版本升级出现同类兼容问题
内容的提问来源于stack exchange,提问作者Victor Silva
相关产品推荐
相关产品推荐

