Как происходи переход между состояниями в Aiogram
В Aiogram переход между состояниями реализуется через FSMContext (Finite State Machine). Для этого используется декоратор @dp.message_handler(state=SomeState), где SomeState — текущее состояние.
Пример:
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher import FSMContext
class Form(StatesGroup):
name = State()
age = State()
@dp.message_handler(commands=['start'])
async def start(message: types.Message, state: FSMContext):
await Form.name.set() # Устанавливаем состояние `name`
await message.answer("Введите ваше имя:")
@dp.message_handler(state=Form.name)
async def process_name(message: types.Message, state: FSMContext):
await state.update_data(name=message.text) # Сохраняем данные
await Form.next() # Переход к следующему состоянию (age)
await message.answer("Введите ваш возраст:")
@dp.message_handler(state=Form.age)
async def process_age(message: types.Message, state: FSMContext):
data = await state.get_data() # Получаем сохраненные данные
await message.answer(f"Имя: {data['name']}, Возраст: {message.text}")
await state.finish() # Завершаем FSM
**Ключевые моменты:**
- `await SomeState.set()` — установка состояния.
- `await state.next()` — переход к следующему состоянию в порядке объявления.
- `await state.finish()` — завершение FM и очистка данных.
- Данные сохраняются через `update_data()` и извлекаются через `get_data()`.
офферы быстрее!
Следующий вопрос
Это единственный вопрос по вашему фильтру