Python Discord Bot报错:'tuple'对象无'add_field'属性求助
问题排查与解决
错误根源
你在创建discord.Embed对象的代码行末尾多写了一个逗号:
embed=discord.Embed(title=f"**Статистика пользователя - {ctx.author.name}**"),
这个逗号会让embed变量变成单元素元组,而非discord.Embed类的实例,元组没有add_field方法,因此触发AttributeError。
修复后的代码
同时注意,原代码用f-string拼接SQL存在SQL注入风险,建议改用参数化查询优化安全性:
@bot.command(name='stats') async def stats(ctx): # 参数化查询避免SQL注入 cursor.execute('SELECT balance FROM users WHERE id = ?', (ctx.author.id,)) resultbalance = cursor.fetchone() # 移除末尾逗号,正确创建Embed对象 embed = discord.Embed(title=f"**Статистика пользователя - {ctx.author.name}**") embed.add_field(name='**Баланс:**', value=resultbalance[0]) # 发送生成的嵌入消息到频道 await ctx.send(embed=embed)
关键修正点
- 移除
embed=discord.Embed(...)行末尾的逗号,确保embed是合法的Embed实例 - 替换SQL拼接方式为参数化查询,杜绝SQL注入漏洞
- 补充
await ctx.send(embed=embed)语句,完成消息发送流程
内容的提问来源于stack exchange,提问作者klamsy
相关产品推荐
相关产品推荐

