Почему не выводит сообщение о повышении уровня?

У меня есть такой код:

from discord.ext import commands
import pymongo as mg
import discord as ds
import config
import math

bot = commands.Bot(command_prefix='!', intents=ds.Intents.all())
client = mg.MongoClient(config.mongo_uri)
db = client.levelling

level_ratio = 50
levels = {
    5: '?Bronze?',
    10: '?Iron?',
    20: '?Gold?',
    30: '?Diamond?',
    50: '?Elite?',
}

def get_level(xp: int) -> float:
    return (math.sqrt(4*xp/level_ratio + 1) - 1) / 2

def get_current_level(xp: int) -> float:
    return (math.sqrt(4*xp/level_ratio + 1) - 1) // 2

def get_xp(level: int) -> int:
    return level_ratio*level*(level + 1)

@bot.event
async def on_ready():
    print('ready!')

@bot.event
async def on_message(message):
    if message.channel.id not in config.talk_channels:
        return
    
    if message.author.bot:
        return 

    if message.content.startswith(bot.command_prefix):
        return await bot.process_commands(message)

    user = db.levelling.find_one_and_update(
        {'_id': message.author.id}, {'$inc': {'xp': 27}},
        return_document=mg.ReturnDocument.AFTER
    )

    if user is None:
        new_user = {'_id' : message.author.id, 'xp' : 100}
        db.levelling.insert_one(new_user)
    else:
        level = get_level(user['xp'])
        if level.is_integer():
            await message.channel.send(
                f'У {message.author.mention} повысился уровень до **{int(level)}**!'
            )
            if rank := levels.get(level):
                await message.author.add_roles(ds.utils.get(message.author.guild.roles, name=rank))
                embed = ds.Embed(description=f'{message.author.mention} ты получил роль **{rank}**!')
                embed.set_thumbnail(url=message.author.avatar_url)
                await message.channel.send(embed=embed)

@bot.command()
async def ранг(ctx):
    if ctx.channel.id != config.bot_channel:
        return
    
    stats = db.levelling.find_one({'_id' : ctx.author.id})
    if stats is None:
        embed = ds.Embed(description='Вы не отправляли ни одного сообщения!')
        await ctx.channel.send(embed=embed)
    else:
        xp = stats['xp']
        lvl = get_current_level(xp)
        next_xp = get_xp(lvl + 1)
        rank = db.levelling.count_documents({'xp': {'$gt': xp}}) + 1

        length_bar = 20
        boxes = int(length_bar * xp / next_xp)
        
        embed = ds.Embed(title=f'{ctx.author.name} статистика уровней')
        embed.add_field(name='Имя', value=ctx.author.mention, inline=True)
        embed.add_field(name='XP', value=f'{xp}/{next_xp}', inline=True)
        embed.add_field(name='LvL', value=int(lvl), inline=True)
        embed.add_field(name='Ранг', value=f'{rank}/{ctx.guild.member_count}', inline=True)
        embed.add_field(
            name='Progress Bar [lvl]',
            value=boxes * ':blue_square:' + (length_bar-boxes) * ':white_large_square:',
            inline=False
        )
        embed.set_thumbnail(url=ctx.author.avatar_url)
        await ctx.channel.send(embed=embed)

@bot.command()
async def лидеры(ctx):
    if ctx.channel.id != config.bot_channel:
        return
    
    embed = ds.Embed(title='Рейтинг участнков:')
    rankings = db.levelling.find().sort('xp', mg.DESCENDING).limit(10)
    
    for rank, user in enumerate(rankings, start=1):
        xp = user['xp']
        lvl = get_current_level(xp)
        lvl = int(lvl)
        member = ctx.guild.get_member(user['_id'])
        embed.add_field(
   name=f'{rank}: {member.name}',
   value=f'Всего опыта: {xp} | Уровень: {lvl}',
   inline=False
)
    await ctx.channel.send(embed=embed)

bot.run(config.ds_token)

Но не работает эта строчка: await message.channel.send(f'У {message.author.mention} повысился уровень до **{int(level)}**!'). Тоесть не выводит это сообщение.

Почему не работает? Если что пишу на replit


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