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

