В чем причина остановки бота и невызова второй функции?

Рейтинг: 0Ответов: 0Опубликовано: 07.08.2023

Бот останавливается после выполнения первой функции и не вызывает вторую.

В чем причина?

@dp.message_handler()
async def mess_data(message: types.Message):
    if not db.user_exists(message.from_user.id):
        db.add_user(message.from_user.id, message.from_user.first_name)

@dp.message_handler()
async def mess_handler(message: types.Message):
    text = message.text.lower()
   
    if str(message.from_user.id) != cfg.ADMIN_ID:
        for word in cfg.WORDS:
            if word in text:
                await message.delete()

Подумал, что это из-за идентичных декораторов, т.е. после обработки одного и того же события первой функцией. Но аналогично происходит при объединении функций под один декоратор:

@dp.message_handler()
async def mess_data(message: types.Message):
    if not db.user_exists(message.from_user.id):
        db.add_user(message.from_user.id, message.from_user.first_name)

async def mess_handler(message: types.Message):
    text = message.text.lower()
    if str(message.from_user.id) != cfg.ADMIN_ID:
        for word in cfg.WORDS:
            if word in text:
                await message.delete()

После добавления в код третьей функции, вторая игнорируется:

@dp.message_handler()
async def check_database(message: types.Message):
    if not db.user_exists(message.from_user.id):
        db.add_user(message.from_user.id, message.from_user.first_name)
        await check_bans(message)
        await mess_handler(message)
 
async def check_bans(message: types.Message):
    if db.user_bans(message.from_user.id):
        await message.delete()            
 
async def mess_handler(message: types.Message):
    text = message.text.lower()
    if str(message.from_user.id) != cfg.ADMIN_ID:
        for word in cfg.WORDS:
            if word in text:
                await message.delete()

Ответы

Ответов пока нет.