Проверка сообщения FSMContext

столкнулся с проблемой и не знаю как ее осуществить от слова совсем

Проблема вот какая получаю от пользователя сообщение и нужно сделать проверку на количество знаков (что бы было не меньше 12)

может кто сталкивался

aiogram 2.15

python 3.9

async def service_choice(message: types.CallbackQuery, state: FSMContext):
    async with state.proxy() as data:
        data['service_choice'] = message.data
        print(message.data)
    await FSMRegistration.next()
    await bot.send_message(message.from_user.id, '? Пожалуйста, введите БИН компании: (12 цифр)')


async def bin_number(message: types.CallbackQuery, stare: FSMContext):
    async with state.proxy() as data:
        print(len(message.data))
        while True:
            if len(message.data) < 12:
                bot.send_message(message.from_user.id, 'Неверно введён БИН!')
            else:
                data['bin_number'] = message.data
                break
    await bot.send_message(message.from_user.id, 'Выберите вид услуги:', reply_markup=service_selection)

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

Автор решения: Ben Puls

Для получения сообщения пользователя в Message существует атрибут text. Подробнее о FSM в aiogram 2.

async def service_choice(message: types.CallbackQuery, state: FSMContext):
    async with state.proxy() as data:
        data['service_choice'] = message.text
        print(message.text)
    await FSMRegistration.next()
    await bot.send_message(message.from_user.id, '? Пожалуйста, введите БИН компании: (12 цифр)')


async def bin_number(message: types.CallbackQuery, stare: FSMContext):
    async with state.proxy() as data:
        print(len(message.text))
        while True:
            if len(message.text) < 12:
                bot.send_message(message.from_user.id, 'Неверно введён БИН!')
            else:
                data['bin_number'] = message.text
                break
    await bot.send_message(message.from_user.id, 'Выберите вид услуги:', reply_markup=service_selection)
→ Ссылка
Автор решения: Святослав Ребров

Проблема в том, что сообщение уже падает в FSM, и как бы на этом затыкается, и уже какие-либо проверки бесполезны.

Решил таким способом:

async def bin_number(message: types.CallbackQuery, state: FSMContext):
    if not message.text.isdigit() or not (0 < int(message.text) < 12):
        await bot.send_message(message.from_user.id, 'Неверно введён БИН!')
        return
    await state.update_data(bin_number=(message.text))
    await FSMRegistration.next()
    await bot.send_message(message.from_user.id, 'прошли')

может, кому пригодится в будущем.

→ Ссылка