Discord模态框提交报错‘Something went wrong. Try again.’求助
解决Discord机器人模态框提交报错问题
问题根源分析
你的代码存在几个关键错误,导致提交模态框时触发超时错误:
- 在模态提交处理函数内重复绑定
interactionCreate监听器,逻辑混乱且会导致多次触发 - 错误使用原选择菜单的
interaction对象获取模态输入值,而非模态提交的交互对象 - 错误地在执行过程中重新导出模块,破坏模块结构
- 未正确响应模态提交交互,导致Discord判定超时
修复后的代码
Submit File 修正版
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); module.exports = { data: { name: `GeneralTicket`, }, async execute(modalSubmit, client) { if (!modalSubmit.isModalSubmit()) return; // 从模态提交交互对象中获取输入值 const a1 = modalSubmit.fields.getTextInputValue("a1"); const a2 = modalSubmit.fields.getTextInputValue("a2"); const a3 = modalSubmit.fields.getTextInputValue("a3"); const embed = new EmbedBuilder() .setColor(0x0099ff) .setFooter({ text: `${modalSubmit.user.tag}`, iconURL: modalSubmit.user.displayAvatarURL() }) .setTitle("ClixMC General Support Ticket ") .setTimestamp() .addFields( { name: "IGN:", value: `${a1}` }, { name: "What is your Ticket related to:", value: `${a2}` }, { name: "Brief summary:", value: `${a3}` } ); const row = new ActionRowBuilder().addComponents( new ButtonBuilder() .setCustomId("GT1") .setLabel(`Submit`) .setStyle(ButtonStyle.Success) .setDisabled(false) ); // 及时响应模态提交交互 await modalSubmit.update({ embeds: [embed], ephemeral: true, components: [row], content: "To submit your ticket click `Submit` to cancel click `Dismiss Message`.", }); }, };
关键修复点
- 移除多余的
client.on("interactionCreate")监听,直接使用传入的modalSubmit交互对象处理逻辑 - 将获取输入值的
interaction.fields改为modalSubmit.fields,确保获取的是模态框中的用户输入 - 删除错误的
module.exports = embed;语句,避免破坏模块结构 - 用
await处理modalSubmit.update(),保证交互响应在Discord要求的超时时间内完成
额外注意事项
- 确保机器人已正确注册
GeneralTicket模态提交的处理程序,在主文件中通过对应机制加载该模块 - 检查
Questions File是否正确导入Discord.js的ModalBuilder、TextInputBuilder等组件,避免隐性错误
内容的提问来源于stack exchange,提问作者A_person
相关产品推荐
相关产品推荐

