Проблема с сохранением идентификаторов пользователей в файле json - PullRequest
0 голосов
/ 06 мая 2020

Итак, я пытаюсь сохранить идентификаторы пользователей и добавлять их оценки, когда они выполняют команду. Но проблема, которую я получаю, заключается в том, что пользователь дважды входит в систему и не добавляет очков. Вот что происходит в файле json:

{"272356126391238536": {"experience": 1}, "272356126391238536": {"experience": 1}}

Это часть моего кода, которая определяет обновление и добавляет:

async def update(amount, user):
   if not user.id in amount:
       amount[user.id] = {}
       amount[user.id]['experience'] = 0

async def add(amount, user, exp):
amount[user.id]['experience'] += exp

Это часть команды что счет обновляется с:

await update(buffer, ctx.message.author)
await add(buffer, ctx.message.author, 1)

Когда я меняю «.id» на «.name», он работает нормально, но проблема с именем заключается в том, что если пользователь меняет свое имя, его старый счет будет потерян .

1 Ответ

0 голосов
/ 07 мая 2020

Убедитесь, что вы используете переменную ctx, поэтому:

async def update(ctx, amount):
   if not str(ctx.message.author.id) in amount:
       amount[str(ctx.message.author.id)] = {}
       amount[str(ctx.message.author.id)]['experience'] = 0

async def add(amount, user : discord.Member, exp):
    amount[user.id]['experience'] += exp

Это должно сработать.

...