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

Discord货币机器人报错get_bank_data()未定义该如何解决?

问题原因及解决方案

核心错误原因

  • 函数定义顺序错误:Python解释器按从上到下的顺序加载代码,你代码中balance、beg、open_account三个调用get_bank_data的函数,定义位置在get_bank_data的完整有效定义之前,调用时函数还未被注册,因此触发未定义报错。你开头写的半截无返回值的get_bank_data属于无效冗余代码,实际生效的函数定义在所有调用逻辑之后,直接导致报错。
  • 装饰器语法缺失:balance函数上方的client.command()前缺少@符号,会导致命令注册失败同时引发语法异常。
  • JSON读写模式错误:你写入JSON文件时统一使用了只读模式r,运行到写入逻辑时会直接报错,需要改为写入模式w。
  • 字符串插值语法缺失:beg命令中发送收益的字符串前缺少f前缀,会导致变量earnings无法正常解析输出。

修正后的代码结构

import json
import random
import discord
from discord.ext import commands

# 工具函数统一放在所有命令逻辑之前定义
async def get_bank_data():
    with open("kromerbank.json", "r") as f:
        users = json.load(f)
    return users

async def open_account(user):
    users = await get_bank_data()
    if str(user.id) in users: 
        return False
    else:
        users[str(user.id)] = {}
        users[str(user.id)]["wallet"] = 0
        users[str(user.id)]["bank"] = 0
    # 写入文件使用w模式
    with open("kromerbank.json", "w") as f:
        json.dump(users,f)
    return True

# 命令函数放在工具函数之后定义
@client.command()
async def balance(ctx):
    await open_account(ctx.author)
    user = ctx.author
    users = await get_bank_data()

    wallet_amt = users[str(user.id)]["wallet"]
    bank_amt = users[str(user.id)]["bank"]

    em = discord.Embed(title = f"{ctx.author.name}'s balance",color = discord.Color.red())
    em.add_field(name = "wallet balance",value = wallet_amt)
    em.add_field(name = "bank balance",value = bank_amt)
    await ctx.send(embed = em)

@client.command()
async def beg(ctx):
    await open_account(ctx.author)
    users = await get_bank_data()
    user = ctx.author
    earnings = random.randrange(101)
    # 字符串前加f前缀解析变量
    await ctx.send(f"Someone gave you {earnings} kromer!")

    users[str(user.id)]["wallet"] += earnings
    # 写入文件使用w模式
    with open("kromerbank.json", "w") as f:
        json.dump(users,f)

验证操作

删除开头冗余的半截get_bank_data代码,按上述顺序调整代码结构后重启机器人即可解决未定义报错,同时修复其他隐藏逻辑问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:45:00