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
相关产品推荐
相关产品推荐

