#python #python-3.x #discord.py
Вопрос:
Мой код:
reps = {}
with open("reps.json", "r") as f:
reps = json.load(f)
@client.command()
async def rep (ctx, member: discord.Member):
try:
count = reps[f'{ctx.guild.id}'][f'{member.id}']
reps[f'{ctx.guild.id}'][f'{member.id}'] = count 1
with open('reps.json', 'w') as f:
json.dump(reps, f)
await ctx.message.add_reaction('<a:check12:810961073746345985>')
except:
reps[f'{ctx.guild.id}'] = {}
reps[f'{ctx.guild.id}'][f'{member.id}'] = 1
with open('reps.json', 'w') as f:
json.dump(reps, f)
await ctx.message.add_reaction('<a:check12:810961073746345985>')
Проблема в том, что когда я использую эту команду, мой файл json выглядит так:
{"GUILD_ID": {"MEMBER_ID": 1}}
Это выглядит нормально, но когда я пытаюсь использовать эту команду для другого участника, файл json не добавляет другой словарь, он просто изменяет имя диктатора на идентификатор другого участника, поэтому файл выглядит следующим образом:
{"GUILD_ID": {"ANOTHER_MEMBER_ID": 1}}
И чего я ожидаю, так это:
{"GUILD_ID": {"MEMBER_ID": 1}}
И после использования команды на другом участнике:
{"GUILD_ID": {"MEMBER_ID": 1, "ANOTHER_MEMBER_ID": 1}}
Комментарии:
1. У вас есть эта строка
reps[f'{ctx.guild.id}'] = {}
, которая удаляет предыдущий дикт, сохраненный в этом ключе2. Я вижу, но я все еще не знаю, как заставить май диктовать только добавление другого ключа без удаления предыдущих ключей.
3. Просто удалите эту строку
4. Проверьте, есть ли
guild_id
ключ уже в диктанте, если он там, добавьте нового участника, иначе создайте пустой диктант, как вы делаете в этой строке.5. @Pietro Спасибо, это сработало ;П.