Задать вопрос

Как сбросить состояние при начале опроса?

есть бот который раз в день проводит опрос.

На данный момент существует проблема - если пользователь не завершил опрос, то новый опрос начнётся не с первого вопроса, а с того на который он не ответил в прошлый раз. Никак не пойму как это исправить, куда в коде поставить сброс состояния await state.clear()

К примеру если на вопрос Emails не ответили, то при новом опросе после фразы How many calls today? будет не High Priority Leads а Emails . Как это поправить, чтобы не зависимо от того на каком пользователе вопросе забил отвечать, при новом опросе вопросы шли по порядку?

await bot.send_message(users_chat_id, f'Hi, {name}. How many calls today?')

                @dp.message_handler()
                async def answer1(message: types.Message, state: FSMContext):           
                    if await check_compleate(message.chat.id) :
                        print(f'принимаю ответ {message.chat.id} на первый вопрос')
                        await Questions.Q1.set()
                        async with state.proxy() as data:
                            data['answer1'] = message.text
                        await Questions.next()
                        await bot.send_message(message.chat.id, 'High Priority Leads')

                @dp.message_handler(state=Questions.Q2)
                async def answer2(message: types.Message, state: FSMContext):
                    if await check_compleate(message.chat.id) :
                        async with state.proxy() as data:
                            data['answer2'] = message.text
                        await Questions.next()
                        await bot.send_message(message.chat.id, 'Emails')

                @dp.message_handler(state=Questions.Q3)
                async def answer2(message: types.Message, state: FSMContext):
                    if await check_compleate(message.chat.id) :
                        async with state.proxy() as data:
                            data['answer3'] = message.text
                        await Questions.next()
                        await bot.send_message(message.chat.id, 'LI')
  • Вопрос задан
  • 724 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 1
вообще-то все просто. перед отправкой вопроса и делаем сброс состояния
await state.clear()
await bot.send_message(users_chat_id, f'Hi, {name}. How many calls today?')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы