kuchuluk
@kuchuluk

Как сделать чтобы текстовое сообщение не реагировало в машинном состоянии aiogram3 python?

Здравствуйте!
У меня контроллеры подключены в таком порядке:
from aiogram import Bot, Dispatcher, types

from dotenv import find_dotenv, load_dotenv
load_dotenv(find_dotenv())
TOKEN = os.getenv('TOKEN')

from user_private.base_com_hand import user_private_bc_router
from admin_private.mailings_work_hand import mailings_work_router
from admin_private.fami_work_hand import familiarizations_work_router
from admin_private.base_admin_hand import admin_private_bc_router
from common.base_commands_list import private

bot = Bot(token=os.getenv('TOKEN'))
dp = Dispatcher()

dp.include_router(user_private_bc_router)
dp.include_router(mailings_work_router)
dp.include_router(familiarizations_work_router)
dp.include_router(admin_private_bc_router)


При отправке файла срабатывает mailings_work_router:
@mailings_work_router.callback_query(F.data.startswith('select_mailing_file_kb'))
async def confirm_to_send_mailing_f_handler(callback: types.CallbackQuery, state: FSMContext, bot: Bot):
    callback_values = callback.data.split('_')
    inserted_id = callback_values[-1]
    await state.update_data(inserted_id=inserted_id)
                
    text_mess = "Введите описание файла"
    await bot.send_message(chat_id=tg_id,
                                    text=text_mess,
                                    reply_markup=get_all_cancel_kb())
     await state.set_state(FileMailCaptGroup.file_mail_capt)

@mailings_work_router.callback_query(FileMailCaptGroup.file_mail_capt, F.text)
async def capt_mail_file_caption_send(message: types.Message, state: FSMContext, bot: Bot):
    await state.update_data(file_description=answer_text)
    data = await state.get_data()
    print(data)

    await state.clear()

Но переход в следующее состояние @mailings_work_router.callback_query(FileMailCaptGroup.file_mail_capt, F.text) не происходит, а вместо этого срабатывает функция, которая находится в admin_private_bc_router:
# Обработчик всех сообщений для отлова сообщений от админа для рассылки
@admin_private_bc_router.message(F.text)
async def search_mess_for_mailing(message: types.Message):
    mess_text = 'Вы отправили сообщение. Сделать рассылку или ознакомление?'
    await message.answer(text=mess_text,
                                    reply_markup=mail_or_fami_keyboard(inserted_id))


Хотя по иерархии admin_private_bc_router подключается в самом низу. Почему так может быть?
  • Вопрос задан
  • 29 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы