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

如何在Discord.py v2中通过Interaction对象编辑机器人发送的多条消息

如何在Discord.py v2中通过Interaction对象编辑机器人发送的多条消息

嗨,我来帮你搞定这个问题!你遇到的核心问题是:interaction.response.send_message()不会返回Message对象,所以直接把它的返回值赋值给msg然后调用edit()肯定会报错——因为这个方法返回的是None,自然没有edit()方法啦。

要编辑第一条初始消息,你需要用interaction.fetch_response()来获取这条消息的对象。下面是修正后的完整代码示例:

import discord, asyncio

async def test(interaction: discord.Interaction):
    # 发送第一条初始响应消息
    await interaction.response.send_message("Hi! This is the first message.")
    # 关键步骤:获取初始响应对应的Message对象
    first_msg = await interaction.fetch_response()
    
    await asyncio.sleep(1)
    # 发送第二条跟进消息,这里followup.send()会直接返回Message对象
    second_msg = await interaction.followup.send("This is the second message.")
    
    # 现在可以自由编辑两条消息了!
    await first_msg.edit(content="嘿,我被编辑成第一条新消息啦!")
    await second_msg.edit(content="我是第二条被编辑后的消息~")

给你拆解一下逻辑:

  • 发送初始响应后,调用fetch_response()会从Discord服务器拉取你刚才发送的那条初始消息,拿到完整的Message实例,这样就能调用edit()方法修改内容了。
  • 而interaction.followup.send()本身就会返回对应的Message对象,所以第二条消息可以直接用返回值来编辑,不用额外操作。

你之前的尝试之所以失败,就是因为误解了interaction.response.send_message()的返回值——它只是用来确认响应发送成功,不会返回消息对象,必须用fetch_response()来主动获取。

备注:内容来源于stack exchange,提问作者xNick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:54:31