@treketerer

Как вернуться к первому состоянию в Aiogram?

Делал "регистрацию" в Telegram-боте через Aiogram, под конец "опроса" уточняю всю информацию введённую пользователем, если он ответил "Нет" тогда возвращаюсь в началу опроса, стерев старые ответы, то-есть мне надо вернутся к Handler-у с командой "Start", но проблема в том, что я не знаю как вернутся к началу, по этому пришел сюда задать этот вопрос. Я думаю решение элементарное, но я не понимаю как это сделать... Заранее спасибо!

class reg(StatesGroup):
    name = State()
    yes = State()

@dp.message_handler(commands="start", state="*")
async def start(message: types.Message, state: FSMContext):
            <ТУТ ПОЛЬЗОВАТЕЛЯ СПРАВШИВАЮТ>
            await reg.name.set()

@dp.message_handler(state=reg.name, content_types=types.ContentTypes.TEXT)
async def name(message: types.Message, state: FSMContext):
            dat = await state.get_data()
            await message.reply(f"Вы {dat['fname']} {dat['sname']} родились {dat['day']} числа и {dat['month']} месяца?\nОтветьте Да\Нет)")
            await reg.yes.set()

@dp.message_handler(state=reg.yes, content_types=types.ContentTypes.TEXT)
async def res_step(message: types.Message, state: FSMContext):
    if (message.text.lower()) == "да":
        <<ТУТ ЗАНОСИТ ДАННЫЕ В БД>>
        await state.finish()
     elif (message.text.lower()) == "нет":
          ВОЗВРАТ К ПЕРВОМУ STATE (ТЕМА ВОПРОСА)
  • Вопрос задан
  • 1280 просмотров
Решения вопроса 1
У команды start нет состояния
await state.finish()
Либо назначайте состояние ввода имени
await state.set_state(reg.name)
Но не забудьте, что у пользователя должна быть возможность выйти из состояния самостоятельно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы