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

Как реализуешь очередность вопросов в Telegram боте на Python

Для реализации очередности вопросов в Telegram боте можно использовать FSM (Finite State Machine) из библиотеки aiogram. Пример с базовым сценарием:

python
from aiogram import Dispatcher, types
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup

class Form(StatesGroup):
    question1 = State()
    question2 = State()
    question3 = State()

async def start_questions(message: types.Message):
    await Form.question1.set()
    await message.answer("Вопрос 1: ...")

async def process_q1(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['answer1'] = message.text
await Form.next()
await message.answer("Вопрос 2: ...")

async def process_q2(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['answer2'] = message.text
await Form.next()
await message.answer("Вопрос 3: ...")

async def process_q3(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['answer3'] = message.text
await state.finish()
await message.answer("Спасибо за ответы!")

def register_handlers(dp: Dispatcher):
dp.register_message_handler(start_questions, commands=['start'])
dp.register_message_handler(process_q1, state=Form.question1)
dp.register_message_handler(process_q2, state=Form.question2)
dp.register_message_handler(process_q3, state=Form.question3)

text

FSM автоматически сохраняет текущее состояние и проверяет его перед обработкой ответа. Для более сложных сценариев можно использовать RedisStorage.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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