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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:12:24