discord.py报错UnboundLocalError:member_id未赋值即引用求助
解决discord.py level命令的UnboundLocalError问题
嘿,这个错误其实是个很典型的小笔误问题!咱们直接来拆解原因:你在代码里写了member_id = str(member_id),但这时候member_id还完全没被定义过,Python自然会报错说你引用了一个未赋值的局部变量——你本来是想获取目标成员的ID,结果写错变量名啦。
修复后的完整代码
@commands.command() async def level(self, ctx, member: discord.Member = None): # 确定查询目标:没指定成员就用命令发起者 member = ctx.author if not member else member # 正确获取成员ID并转为字符串 member_id = str(member.id) guild_id = str(ctx.guild.id) # 执行数据库查询 user = await self.bot.pg_con.fetch("SELECT * FROM users WHERE user_id = $1 AND guild_id = $2", member_id, guild_id)
核心修复说明
把member_id = str(member_id)改成member_id = str(member.id):member是discord.Member对象,它的id属性才是用户的唯一标识,你之前的写法相当于用一个还不存在的变量给自己赋值,这肯定会触发错误呀。
额外小提示
如果后续运行还有问题,可以检查这几点:
- 你的
pg_conPostgreSQL连接是否已经正确初始化,参数配置有没有问题 users数据库表是否已经创建,并且包含user_id和guild_id这两个字段- 目标成员是否已经有对应的数据库记录,不然
fetch会返回空列表
内容的提问来源于stack exchange,提问作者miks
相关产品推荐
相关产品推荐

