Как реализуешь очередность вопросов в Telegram боте на Python
Для реализации очередности вопросов в Telegram боте можно использовать FSM (Finite State Machine) из библиотеки aiogram. Пример с базовым сценарием:
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)
FSM автоматически сохраняет текущее состояние и проверяет его перед обработкой ответа. Для более сложных сценариев можно использовать RedisStorage.
офферы быстрее!
Следующий вопрос
Это единственный вопрос по вашему фильтру