Не работает система начисления опыта в discord.py

У меня есть код который работал и после добавления системы варнов на его основе(в плане я скопировал нужные строки и переименовал их) перестал начислять опыт. Т.е. добавляет в json файл но не добавляет опыт.(про лвл-up не знаю)

Код лвл-ов:

json_file_path = "users.json"


@bot.event
async def on_member_join(member):
    if message.channel.id == 885939833166512198:
        return
    if message.author.bot == False:
        with open('users.json', 'r') as f:
            users = json.load(f)

        await update_data(users, message.author)
        await add_experience(users, message.author, 5)
        await level_up(users, message.author, message)

        with open('users.json', 'w') as f:
            json.dump(users, f)

    await bot.process_commands(message)


@bot.event
async def on_member_join(member):
    with open('users.json', 'r') as f:
        users = json.load(f)

    await update_data(users, member)

    with open('users.json', 'w') as f:
        json.dump(users, f)


@bot.event
async def on_message(message):
    if message.channel.id == 885939833166512198:
        return
    if message.author.bot == False:
        with open('users.json', 'r') as f:
            users = json.load(f)

        await update_data(users, message.author)
        await add_experience(users, message.author, 5)
        await level_up(users, message.author, message)

        with open('users.json', 'w') as f:
            json.dump(users, f)

    await bot.process_commands(message)


async def update_data(users, user):
    if not f'{user.id}' in users:
        users[f'{user.id}'] = {}
        users[f'{user.id}']['experience'] = 0
        users[f'{user.id}']['level'] = 1


async def add_experience(users, user, exp):
    users[f'{user.id}']['experience'] += exp


async def level_up(users, user, message):
    with open('users.json', 'r') as g:
        levels = json.load(g)
    experience = users[f'{user.id}']['experience']
    lvl_start = users[f'{user.id}']['level']
    lvl_end = int(experience**(1 / 4))
    if lvl_start < lvl_end:
        await message.channel.send(
            f'Поздравляю {user.mention}! Теперь у тебя {lvl_end} уровень')
        users[f'{user.id}']['level'] = lvl_end



@bot.command(aliases=['level', 'уровень', 'лвл'])
async def lvl(ctx, member: discord.Member = None):
    await ctx.channel.purge(limit = 1)
    if not member:
        id = ctx.message.author.id
        with open('users.json', 'r') as f:
            users = json.load(f)
        lvl = users[str(id)]['level']
        exp = users[str(id)]['experience']
        emb = discord.Embed(title=f'Меню Уровней {ctx.author}',timestamp=ctx.message.created_at)
        emb.add_field(name='> **Уровень:** ', value=f'`{lvl}`')
        emb.add_field(name='> **Опыта:** ', value=f'`{exp}`')
        await ctx.send(embed = emb)
    else:
        id = member.id
        with open('users.json', 'r') as f:
            users = json.load(f)
        lvl = users[str(id)]['level']
        exp = users[str(id)]['experience']
        emb = discord.Embed(title=f'Меню Уровней {member}',timestamp=ctx.message.created_at)
        emb.add_field(name='> **Уровень:** ', value=f'`{lvl}`')
        emb.add_field(name='> **Опыта:** ', value=f'`{exp}`')
        await ctx.send(embed = emb)

Код системы уровней даже не хочет читать изменения в файле которые я сделал в ручную. Помогите пожалуйста заставить читать и писать в файле.

Код системы варнов:

@bot.event
async def on_message(message):
    if message.author.bot == False:
        with open(json_file_path_warn, 'r') as f:
            warn = json.load(f)

        await update_data_warn(warn, message.author)

        with open(json_file_path_warn, 'w') as f:
            json.dump(warn, f)

    await bot.process_commands(message)


async def update_data_warn(warn, user):
    if not f'{user.id}' in warn:
        warn[f'{user.id}'] = {}
        warn[f'{user.id}']['warn'] = 0

Система варнов отлично работает и с ней нареканий нет. Добавление варнов сделано пока что в ручную.


Ответы (0 шт):