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

discord.py运行触发Embed对象无edit属性AttributeError报错求助

报错原因

edit()是discord.Message类的专属方法,你当前代码里的msg变量存储的是discord.Embed对象,该类本身没有edit属性,调用时自然触发属性报错。
你在定义消息时没有接收ctx.send()返回的消息实体实例,而是直接将Embed卡片对象赋值给了msg,是错误的核心诱因。

修复方案

1. 修改消息定义部分代码

修改后需要接收ctx.send()返回的Message实例作为后续编辑的操作对象:

# 单独定义初始Embed卡片
init_embed = discord.Embed(title=f"test1", description="test2", color=0x2f3136)
# 接收发送后返回的消息实例赋值给msg
msg = await ctx.send(embed=init_embed)

2. 循环编辑代码无需改动

原有编辑逻辑保持原样即可:

for q in scq:
    q = json.loads(q)
    embed2=discord.Embed(title=q["question"], description=q["desc"], color=0x2f3136)
    await msg.edit(embed=embed2)
    m = await bot.wait_for('message', timeout=60, check=check)
    alist.append(m.content)

注意事项

要注意区分两类对象的用途:

  • discord.Embed仅为消息内嵌卡片的内容载体,仅负责定义卡片的样式、内容
  • discord.Message是发送到频道中的消息实体,所有对已发送消息的编辑、删除、加反应等操作,都需要调用该类实例的对应方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:45:03