При сохранении json файла возникают артефакты
Я пишу discord бота используя discord.py, но при сохранении json файла появляются артефакты. Код:
async def use(ctx, item=''):
with open('wallets.json', 'r+', encoding='utf-8') as f:
wallet = json.load(f)
with open('shop.json', 'r', encoding='utf-8') as t:
store = json.load(t)
for i in range(len(store["shop_items"])):
item_name = store["shop_items"][i]["name"]
item_answer = store["shop_items"][i]["answer"]
item_role = store["shop_items"][i]["role"]
if item_name == item:
for i in range(len(wallet["wallets"])):
wallet_owner_id = wallet["wallets"][i]["id"]
wallet_server_id = wallet["wallets"][i]["server_id"]
if wallet_owner_id == ctx.author.id and wallet_server_id == ctx.guild.id:
for j in range(len(wallet["wallets"][i]["inv"])):
if wallet["wallets"][i]["inv"][j] == item_name:
emb = discord.Embed(title=f'Использовать предмет {item_name}',
colour=discord.Color.purple())
emb.add_field(name=item_name, value=item_answer)
t.close()
del wallet["wallets"][i]["inv"][j]
if item_role is not None:
await ctx.author.add_role(role_id=item_role)
await ctx.reply(embed=emb)
f.seek(0)
json.dump(wallet, f, indent=4, ensure_ascii=False)
f.close()
return
emb = discord.Embed(title=f'У вас нету предмета {item_name}', colour=discord.Color.red())
emb.add_field(name=f'Купите {item_name}', value=f'Используйте o!store_buy '
f'{item_name} чтобы купить {item_name}!')
await ctx.reply(embed=emb)
f.close()
t.close()
return
emb = discord.Embed(title='Нет кошелька', colour=discord.Color.dark_red())
emb.add_field(name='Зарегистрируйте кошелёк', value='Используйте o!reg_wallet')
await ctx.reply(embed=emb)
f.close()
t.close()
return
emb = discord.Embed(title=f'Неправильное название предмета "{item_name}"', colour=discord.Color.red())
emb.add_field(name='Введите корректное название.', value=f'Предмета "{item_name}" не существует. Введите '
f'название из магазина предметов.')
f.close()
t.close()
shop.json:
{
"shop_items": [
{
"name": "Чай",
"price": 10,
"description": "Попейте чай, успокойтесь!",
"answer": "Вы выпили чай",
"role": null
}
]
}
wallets.json:
{
"wallets": [
{
"id": 982155399706857482,
"server_id": 1045689590947778581,
"money": 36992,
"last_time_worked": "08-12-2022 18:06:11",
"works_remaining": 0,
"inv": ["Чай"]
}
]
}
Если я использую функцию use из discord, то wallets.json станет таким:
{
"wallets": [
{
"id": 982155399706857482,
"server_id": 1045689590947778581,
"money": 36982,
"last_time_worked": "08-12-2022 18:06:11",
"works_remaining": 0,
"inv": []
}
]
}°Р№"
]
}
]
}
Ожидаемый результат:
{
"wallets": [
{
"id": 982155399706857482,
"server_id": 1045689590947778581,
"money": 36982,
"last_time_worked": "08-12-2022 18:06:11",
"works_remaining": 0,
"inv": []
}
]
}
Помогите, пожалуйста