#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)
Честно говоря, я не знаю, есть ли в этом какие-то различия, потому что я не какой-то эксперт, но это меня устраивает.