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

Disnake获取interaction.send消息ID遇401错误,求原因及可靠方案

问题分析与解决方案

关于Discord侧的变更

Discord的交互响应Webhook Token本身就存在有效期限制,并非近期突然变更——你之前的调用场景是短时间内获取消息ID,未触发这个限制;而当你在发送消息几天后再调用inter.original_message()时,该交互对应的Webhook Token已失效,因此返回401 Unauthorized错误(错误码50027)。

更可靠的获取消息ID方法

方法1:直接接收inter.send()的返回值

inter.send()方法本身会返回发送成功后的Message对象,无需额外调用original_message(),这是最直接且可靠的方式:

# 发送Embed并直接获取消息对象
msg = await inter.send(embed=my_embed)
# 提取需要存储的ID
message_id = msg.id
channel_id = msg.channel.id

方法2:通过频道ID和消息ID直接获取消息(延迟编辑场景)

如果需要在几天后编辑消息,只需提前存储好频道ID和消息ID,后续通过机器人实例直接获取频道和消息即可,完全不依赖交互的Webhook Token:

# 存储阶段(发送消息时)
msg = await inter.send(embed=my_embed)
saved_channel_id = msg.channel.id
saved_message_id = msg.id

# 几天后编辑时
# 获取频道对象
channel = await bot.get_channel(saved_channel_id)
# 获取目标消息
target_message = await channel.fetch_message(saved_message_id)
# 编辑Embed
await target_message.edit(embed=updated_embed)

注意:使用此方法时,确保机器人拥有目标频道的读取消息和编辑消息权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:18:24