Discord.py编辑消息时如何删除已有的Embed?
问题根因
你使用的embed=None是discord.py旧版单Embed接口的参数,Discord API现已支持单条消息挂载最多10个Embed,discord.py适配该特性后,单独传embed=None不会触发已有Embed的清除逻辑,API会默认保留消息原有的全部Embed内容。
解决方法
通用方案(适配discord.py v1.7及以上、v2.x全版本)
编辑消息时传入空列表给embeds参数,即可直接清空所有已有Embed:
await message.edit(content="New Message", embeds=[])
超老版本兼容方案(discord.py v1.7以下)
如果用的是未支持embeds参数的远古版本,可以传入空Embed对象覆盖原有内容:
import discord await message.edit(content="New Message", embed=discord.Embed())
注意事项
- 机器人默认仅有权限编辑自身发送的消息,编辑其他用户的消息需要拥有对应频道的
管理消息权限,部分场景下即使有该权限也无法编辑非自身发送的用户消息 - 如果需要保留部分Embed,只需将待保留的Embed对象放入
embeds参数的列表中即可,未出现在列表中的原有Embed会被自动删除
内容的提问来源于stack exchange,提问作者Mat12143
相关产品推荐
相关产品推荐

