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

Не могу понять как работает машина состояние в aiogram?

Всем привет! Не давно начел изучать aiogram и столкнулся с проблемой , что нужно создать систему регистрация. Я уже написал код но он прекращает свою работу на одном месте в коде покажу где именно (делаю ради теста , а так буду использовать для того чтоб узнать , что написал пользователь) узнал про машину состояний , но не могу понять почему не работает код . Вопще писал по туториалу , но автор как по мне рассказал все очень плохо
код:

class Register (StatesGroup):  #создаю класс где буду хранить данные 
    Q1 = State()
    Q2 = State()

@dp.message_handler(Command('reg'), state = None)
async def Stert_Reg(message: types.Message):
    await message.answer('Введите пароль:')
# код заканчивается здесь
    await Register.Q1.set() #даю понят програме на какой стадии она должна находиться  (1 стадия)

@dp.message_handler(state = Register.Q1) #первая стадия
async def answer_q1(message:types.Message , state: FSMContext):
    answer = message.text #добавляю текст от пользователя в переменную
    await state.update_data(answer1 = answer)#добавляю полученную инфу в класс выше
    await message.answer('Введи логин:') 
    await Register.next()

@dp.message_handler(state = Register.Q2)
async def answer_q2(message:types.Message , state: FSMContext):
    answer20 = message.text #добавляю текст в переменную
    await state.update_data(answer2 = answer20)#добавляю полученную инфу в класс выше
    await message.answer('Спасибо!')
    await state.finish() #конец
  • Вопрос задан
  • 7302 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
dark_firewall
@dark_firewall
Программист C#
Есть класс и у него объекты через декоратор, ты даёшь знать пользователь что бот ждет, и указать await msg.reply("введите что-нибудь")
await ваш_класс.его_обьект.set()

А затем через декоратор указываете в каком состоянии исполнять код
@dp.message_handler(state=ваш_класс._обьект)
Ответ написан
Комментировать
@zaharovmail
Комментировать
Ваш ответ на вопрос

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

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