Писал бота. Встала неприятная проблема: при удалении 1 переменной из json, код перестаёт корректно работать, тк не может найти этот ключ. Как можно решить это?
#магазин
@bot.command()
async def магазин(ctx):
with open("shop.json","r") as json_file:
a = json.load(json_file)
emb=discord.Embed(title='Магазин',description='.купить [пинг роли/айди роли] - купить роль',color=discord.Colour.blurple())
for i in range(len(a)):
with open("shop.json") as f:
b = json.loads(f.read())
number = int(list(b.keys())[-1])
if a[str(i+1)][2]["guild"] == str(ctx.guild.id):
role=a[str(i+1)][0]["role"]
price=a[str(i+1)][1]["price"]
emb.add_field(name=f'**Товар: **',value=f'**Роль: <@&{role}>, цена: {price}**',inline=False)
await ctx.send(embed=emb)
код в котором возникает ошибка
#удаление из магаза
@bot.command()
async def deleteshop(ctx, role:discord.Role):
with open("shop.json","r") as json_file:
a = json.load(json_file)
with open("shop.json") as f:
b = json.loads(f.read())
with open("db.json","r") as json_file:
c = json.load(json_file)
for i in range(len(a)):
if str(role.id) in a[str(i+1)][0]["role"]:
del a[str(i+1)]
emb = discord.Embed(title='**-Оповещение-**',description='**Роль успешно удалена из магазина.**',color=discord.Colour.green())
await ctx.send(embed=emb)
with open("shop.json","w") as json_file:
json.dump(a, json_file,indent=0)
код удаления из дб
spoiler{
"1": [
{
"role": "943923969856241674"
},
{
"price": "123"
},
{
"guild": "864466654091804682"
}
],
"2": [
{
"role": "944248827370700880"
},
{
"price": "10000"
},
{
"guild": "864466654091804682"
}
],
"3": [
{
"role": "944215477956268082"
},
{
"price": "13000"
},
{
"guild": "864466654091804682"
}
],
"4": [
{
"role": "938738379212865547"
},
{
"price": "100000"
},
{
"guild": "938718264874373170"
}
]
}
Сама база данных