Discord ModalBuilder报错:components[1][TAG_FIELD_MISSING]类型字段缺失
错误原因及解决方法:
components[1][TAG_FIELD_MISSING]: Field "type" is required 错误原因
你直接向ModalBuilder.addComponents()传入了普通JSON对象,但Discord.js的组件系统要求使用官方提供的构建器类(如ActionRowBuilder、TextInputBuilder)创建组件,而非原始JSON结构。尽管你手动指定了type字段,库内部仍无法通过普通对象识别对应的模型类型,因此触发该错误。
解决方法
改用Discord.js提供的组件构建器类构建模态框组件,确保类型被库正确识别:
const { ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } = require('discord.js'); const ticketModal = new ModalBuilder() .setTitle('test') .setCustomId('test') .addComponents( new ActionRowBuilder() .addComponents( new TextInputBuilder() .setCustomId('test') .setStyle(TextInputStyle.Short) .setLabel('test') .setMinLength(1) .setMaxLength(4000) .setPlaceholder('test') ) );
说明
- 用
ActionRowBuilder包裹文本输入组件,符合Discord模态框的结构要求 TextInputBuilder负责创建文本输入框,通过链式调用设置各项属性,库能自动处理类型识别逻辑,避免手动指定type带来的解析问题
内容的提问来源于stack exchange,提问作者Justman10000
相关产品推荐
相关产品推荐

