Перейти к содержанию

StateFilter

Фильтр по текущему FSM-состоянию.

class StateFilter(Filter):
    def __init__(
        self,
        *states: str | State | StatesGroup | type[StatesGroup] | None,
    ) -> None: ...

Принимает одно или несколько состояний для проверки.

Варианты использования

from maxgram.filters import StateFilter
from maxgram.fsm.state import State, StatesGroup

class Form(StatesGroup):
    name = State()
    age = State()

# Конкретное состояние
@router.message(StateFilter(Form.name))

# Несколько состояний
@router.message(StateFilter(Form.name, Form.age))

# Вся группа (любое состояние из группы)
@router.message(StateFilter(Form))

# Любое состояние (не None)
@router.message(StateFilter("*"))

# Без состояния (по умолчанию)
@router.message(StateFilter(None))

Использует raw_state из данных middleware для сравнения.

Исходный файл

maxgram/filters/state.py