Я делаю приватного бота для разногласий и новичок в программировании. Каждый раз, когда я пытаюсь запустить эту команду .balance, она выдает ошибку: TypeError: 'bool' object is not subscriptable. Я не знаю, что это значит, и мне нужна помощь. Вот мой код:
#balance
@client.command(aliases=['bal', 'b'])
async def balance(ctx):
await open_account(ctx.author)
users = await get_bank_data()
user = ctx.author
wallet_amt = users[str(user.id)]['wallet']
bank_amt = users[str(user.id)]['bank']
embedbalance = discord.Embed(title = f'''{ctx.author.name}'s balance''',color = 0x00ff00)
embedbalance.add_field(name = 'Wallet balance:',value = wallet_amt)
embedbalance.add_field(name = 'Bank balance:',value = bank_amt)
await ctx.send(embed = embedbalance)
Обновление: когда я пытаюсь сделать .beg, я получаю ту же ошибку. И он также не загружает файл .json. Вот этот код:
#beg
@client.command()
async def beg(ctx):
await open_account(ctx.author)
user = ctx.author
users = await get_bank_data()
earnings = random.randrange(100)
embedbeg = discord.Embed(title = f'''Someone gave you {earnings} coins!''',color = 0x00ff00)
await ctx.send(embed = embedbeg)
users[str(users)]['wallet'] += earnings
with open('mainbank.json', 'w') as f:
json.dump(users,f)
Вот код данных банка gat:
async def open_account(user):
with open('mainbank.json', "r") as f:
users = json.load(f)
if str(user.id) in users:
return False
else:
users[str(user.id)] = {}
users[str(user.id)]['wallet'] = 100
users[str(user.id)]['bank'] = 0
with open('mainbank.json', 'w') as f:
json.dump(users,f)
return True
async def get_bank_data():
with open('mainbank.json', "r") as f:
users = json.load(f)
return True
@RoadieRich Я обновил его! Я до сих пор не могу понять, что не так,...






Проблема в том, что вы используете return True в get_bank_data. Итак, когда вы говорите
users = await get_bank_data()
Вы устанавливаете users значение True, что затем выдает ошибку, когда вы запрашиваете users[str(user.id)].
Замените этот оператор возврата на
return users
И ваш код должен работать.
Это исправлено, я сделал опечатку в функции open_account. Он не использовался.
Похоже, проблема в вашей функции
get_bank_data(). Пожалуйста, разместите это.