Discord.py индексы списка должны быть целыми числами или срезами, а не str

#string #discord.py

Вопрос:

Поэтому я сталкиваюсь с этой ошибкой: индексы списка должны быть целыми числами или срезами, а не str

Вот код:

 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"] = 1000
    
    with open("mainbank.json", "w") as f:
        json.dump(users, f, indent=4)
    return True 
 

Ошибка заключается в строке «пользователи[str(user.id)] = {}»

Вот код get_bank_data.

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

    return users
 

Комментарии:

1. get_bank_data возвращает список, вы, кажется, ожидаете dict . Вам следует изучить эту функцию

2. discord.py это не вызывает ошибку, это основная ошибка python. Как сказал Патрик, вам нужно сначала получить пункт из этого списка, который является диктатом.

3. Я обновил вопрос, поэтому я предполагаю, что возвращающиеся пользователи исправляют ошибку?

Ответ №1:

Попробуйте сделать это в get_bank_data:

 users = json.loads(f)
 

Вместо этого: json.load(f)

Честно говоря, я не знаю, есть ли в этом какие-то различия, потому что я не какой-то эксперт, но это меня устраивает.