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

Discord交互响应重复发送Embed消息报错,求修复方法

问题分析与修复方案

错误原因

Discord的interaction.response对象只能被一次性使用,调用它的任何发送方法(比如send)后,这个响应就被标记为已处理,重复调用会触发交互已确认的错误。你代码里连续两次调用interaction.response.channel.send,这就是报错的根源。

修复方案

方案1:使用后续跟进消息(followup)

先通过interaction.response发送首次响应,之后用interaction.followup.send发送后续消息:

async def callback(self, interaction: discord.Interaction):
    embed = discord.Embed(title="Modal Results")
    embed.add_field(name="test", value=self.children[0].value)
    embed.add_field(name="test", value=self.children[1].value)
    # 首次响应
    await interaction.response.send_message(embed=embed)
    # 发送后续消息
    await interaction.followup.send(embed=embed)

方案2:直接使用获取到的频道对象发送

既然你已经通过client.get_channel拿到了目标频道,完全可以绕过interaction.response,直接调用频道的send方法多次:

async def callback(self, interaction: discord.Interaction):
    embed = discord.Embed(title="Modal Results")
    embed.add_field(name="test", value=self.children[0].value)
    embed.add_field(name="test", value=self.children[1].value)
    channel = client.get_channel(1201684034531368994)
    # 直接发送多次
    await channel.send(embed=embed)
    await channel.send(embed=embed)

注意:如果需要让用户看到交互已处理的反馈,方案1更合适;如果只是单纯往指定频道发消息,方案2更直接。

内容的提问来源于stack exchange,提问作者Kian Mythic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:57:02