函数未在cog discord.py中定义

2024-10-02 20:37:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过将代码放入齿轮来清理代码。出于某种原因,每当我尝试调用函数时,都会出现以下错误:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NameError: name 'get_bank_data' is not defined

即使是这样。这是我的代码(我删去了其他命令以使其更易于阅读)

class RpgCog(commands.Cog):
  def __init__(self, client):
    self.client = client
  async def open_account(self, user):

     users = await get_bank_data()

     if str(user.id) in users:
        return False
     else:
        users[str(user.id)] = {}
        users[str(user.id)]["hp"] = 20
        users[str(user.id)]["bank"] = 100
        users[str(user.id)]["leather_armour"] = 0
        users[str(user.id)]['stone_sword'] = 0
        users[str(user.id)]['health_potion'] = 5
        users[str(user.id)]['maxhp'] = 20
        users[str(user.id)]['kingdom'] = 1
        users[str(user.id)]['max_damage'] = 5
        users[str(user.id)]['min_damage'] = 1
        users[str(user.id)]['xp'] = 0
        users[str(user.id)]['agility'] = 20
        users[str(user.id)]['hermes_boots'] = 0
        users[str(user.id)]['leather_armour_equipped'] = 0
        users[str(user.id)]['stone_sword_equipped'] = 0
        users[str(user.id)]['no_sword'] = 1
        users[str(user.id)]['no_armour'] = 1
        users[str(user.id)]['fishing_rod'] = 0
        users[str(user.id)]['fishing_luck'] = 0
        users[str(user.id)]['fishing_rod_equipped'] = 0
        users[str(user.id)]['no_rod'] = 1

         with open('mainbank.json', 'w') as f:
            json.dump(users, f)

        return True

    async def get_bank_data(self, client):
       with open('mainbank.json', 'r') as f:
        users = json.load(f)

   @commands.command(name='bal')
   async def print_bal(self, ctx):
     user = ctx.author
     await RpgCog.open_account(self, user)
     users = await RpgCog.get_bank_data(self)
      
     bank_amt = users[str(user.id)]['bank']

     await ctx.channel.send(bank_amt)


def setup(client):
  client.add_cog(RpgCog(client))
  

下面是我用来在main.py中调用cog的代码

for filename in os.listdir('./cogs'):
  if filename.endswith('.py'):
    client.load_extension(f'cogs.{filename[:-3]}')

Tags: 代码selfclientidjsondatagetdef