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

使用Discord.js发送Modal时遭遇Interaction Already Replied错误求助

问题原因

你遇到的Interaction Already Replied错误,是因为**interaction.deferReply()会将交互标记为已回复状态**,而Discord规则里,showModal()要求交互处于未处理状态——这两个操作属于同一层级的交互响应,不能先后触发。

解决方案

直接移除await interaction.deferReply()这一行,同时调用sendModal时要加上await确保异步操作完成:

修改后的interactCreate.js代码:

const DC = require("../methods/discord_methods")

module.exports = {
    name: 'interactionCreate',
    async execute(interaction) {
         // 移除deferReply调用
         await DC.sendModal(interaction)
    },
};
补充说明

如果你的需求是在用户提交模态框内容后需要延迟回复,逻辑应该放在模态框的interactionCreate事件处理分支里(监听自定义ID为myModal的交互),而非触发模态框前调用deferReply。示例:

// 在interactCreate.js的execute函数中补充
if (interaction.isModalSubmit()) {
    if (interaction.customId === 'myModal') {
        await interaction.deferReply({ ephemeral: true });
        // 后续处理模态框提交的数据逻辑
        await interaction.editReply('已收到你的提交内容');
    }
}

内容的提问来源于stack exchange,提问作者Dummy Cron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:25:22