我正试图通过将代码放入齿轮来清理代码。出于某种原因,每当我尝试调用函数时,都会出现以下错误:
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]}')
在类中访问方法和属性需要使用
self
所以使用
await self.get_bank_data()
在
get_bank_data
函数中不需要client
参数,请删除该参数相关问题 更多 >
编程相关推荐