Discord机器人货币系统报错:'amounts'未定义问题求助
Discord机器人货币系统NameError问题解决办法
直接把amounts改成amounts.json没用,问题根源是你只创建了json文件,但没在代码里把文件内容加载到amounts变量中,Python找不到这个变量才触发NameError。解决步骤如下:
导入必要模块
先引入json和os模块,用于读写json文件和检查文件状态:import json import os初始化并加载数据到amounts变量
在机器人启动时执行这段代码,确保amounts变量被正确赋值:# 检查amounts.json是否存在,不存在就创建空文件 if not os.path.exists('amounts.json'): with open('amounts.json', 'w') as f: json.dump({}, f) # 读取文件内容到amounts变量 with open('amounts.json', 'r') as f: amounts = json.load(f)在bal命令中正确使用amounts变量
调用bal命令时,要处理用户未在记录中的情况,并且修改数据后要写回文件避免丢失:@bot.command() async def bal(ctx): user_id = str(ctx.author.id) # 若用户无余额记录,初始化为0 if user_id not in amounts: amounts[user_id] = 0 await ctx.send(f"你的余额是 {amounts[user_id]} 货币") # 将更新后的余额保存回文件 with open('amounts.json', 'w') as f: json.dump(amounts, f)
内容的提问来源于stack exchange,提问作者user19932233
相关产品推荐
相关产品推荐

