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

@router.message()
async def reg_step1(message: Message):
    async with (lock):
        name = message.text
    await message.answer(f"Приятно познакомиться, {name}. Подскажи, хочется сразу перейти к урокам или посмотреть бесплатный урок «Управление первым впечатлением»?",
                         reply_markup=kb)

надо чтобы после выполнения этой функции она больше не реагировала. Помогите, как это сделать?


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

Автор решения: max best

Как вариант использовать FSM. Присвойте состояние, когда ожидаете имя от пользователя, после очистите.

class reg_states(StatesGroup):
    reg = State()

@router.message(CommandStart())
async def command_start_handler(message: Message, state: FSMContext):
    await message.answer("Добрый день, напишите Ваше имя")
    await state.set_state(reg_states.reg)

@router.message(reg_states.reg)
async def reg_step1(message: Message, state: FSMContext):
    async with (lock):
        name = message.text
    await message.answer(f"Приятно познакомиться, {name}. Подскажи, хочется сразу перейти к урокам или посмотреть бесплатный урок «Управление первым впечатлением»?",
                         reply_markup=kb)
    await state.clear()

Если правильно конечно понял, что это код регистрации или чего-то подобного. В блоке с стартовым хендлером пропишите проверку на уже зарегистрированных пользователей.

→ Ссылка