使用discord.py时interaction.response.send_message()返回None,无法获取消息ID
解决discord.py中interaction.response.send_message返回None无法获取消息ID的问题
问题原因
interaction.response.send_message() 方法的设计返回值就是None,它仅负责向Discord服务器发送交互响应,不会直接返回创建的Message对象,这是discord.py交互系统的既定行为。
解决方案
要获取这条响应消息的对象,需在发送响应后调用 await interaction.original_response() 方法,该方法会返回对应响应的Message实例,之后即可从中提取消息ID。
修改后的关键代码如下:
# 先发送响应,此时不返回Message对象 await interaction.response.send_message(view=view, embed=embed) # 获取刚发送的响应消息对象 message = await interaction.original_response() # 给view的属性赋值消息ID view.original_message_id = message.id
注意事项
- 必须在调用
interaction.response.send_message()之后再调用original_response(),否则会因响应未创建而抛出错误。 - 如果后续需要发送额外的跟进消息,可使用
interaction.followup.send(),该方法会直接返回对应的Message对象。
内容的提问来源于stack exchange,提问作者GaGex
相关产品推荐
相关产品推荐

