Встречается на собеседованиях • сегодня

Как происходи переход между состояниями в Aiogram

В Aiogram переход между состояниями реализуется через FSMContext (Finite State Machine). Для этого используется декоратор @dp.message_handler(state=SomeState), где SomeState — текущее состояние.

Пример:

python
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

text

**Ключевые моменты:**  
- `await SomeState.set()` — установка состояния.  
- `await state.next()` — переход к следующему состоянию в порядке объявления.  
- `await state.finish()` — завершение FM и очистка данных.  
- Данные сохраняются через `update_data()` и извлекаются через `get_data()`.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы