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

discord.py开发中定义变量后仍出现name not defined报错求助

问题排查与解决方案

首先根据报错提示的未定义名称,对应排查以下场景:

场景1:报错提示 name 'get_prefix' is not defined

按优先级排查:

  • 检查函数作用域:如果你的get_prefix函数定义在条件分支、其他函数、类内部,全局作用域下初始化Bot的代码无法访问到该函数。需将get_prefix的定义移动到全局作用域,且放在初始化Bot代码的前面。
    错误示例:
    if __name__ == '__main__':
        def get_prefix(client, message):
            # 函数逻辑
            pass
    
    # 此处位于全局作用域,无法访问if块内定义的get_prefix
    client = commands.Bot(command_prefix = get_prefix)
    
  • 检查拼写:Python大小写敏感,确认函数定义的名称与调用时的名称拼写、大小写完全一致。
  • 检查循环导入:如果get_prefix定义在其他独立py文件中,确认两个文件不存在互相导入的情况,循环导入会导致命名空间加载失败。

场景2:报错提示 name 'json' is not defined

你的get_prefix函数中使用了json.load()方法,需在文件顶部导入json模块:

import json
# 后续再写get_prefix定义与Bot初始化代码

附加优化建议

你当前的前缀读取逻辑缺少异常处理,当prefixes.json中不存在对应服务器ID时会触发KeyError,建议补充默认值逻辑:

def get_prefix(client, message):
    with open('prefixes.json', 'r') as f:
        prefixes = json.load(f)
    # 不存在对应服务器配置时返回默认前缀$
    return prefixes.get(str(message.guild.id), '$')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:24:01