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

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_con PostgreSQL连接是否已经正确初始化,参数配置有没有问题
  • users数据库表是否已经创建,并且包含user_id和guild_id这两个字段
  • 目标成员是否已经有对应的数据库记录,不然fetch会返回空列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:22:46