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

