Можно в Aiogram в FSM реализовать вызов состояния, не попрядку?
в документации примера не нашел. в видео на youtube, примеры однотипные.
class Math_task(StatesGroup):
Math_task1=State()
Math_task2=State()
Math_task3=State()
@dp.message_handler(commands=['Choice_level'],state='*')
async def Choice_level_cmd(message:types.Message,state: FSMContext):
await bot.send_message(message.from_user.id,text='Выберите уровень',
parse_mode="HTML",
reply_markup=lkb)
await Math_task.next()
@dp.message_handler(commands=['math_task1'],state=Math_task.Math_task1)
async def math_task1(message: types.Message, state: FSMContext):
a = random.randrange(0, 100)
b = random.randrange(0, 100)
c=a+b
await message.answer(text=f'Найти сумму {a}, {b}',reply_markup=back_keyboard)
# await message.answer(reply_markup=back_keyboard)
print(c)
for q in range(3):
@dp.message_handler(state=Math_task.Math_task1)
async def math_task1_2(message: types.Message,state: FSMContext):
if str(message.text) == str(c):
await message.answer("Правильно")
a = random.randrange(0, 100)
b = random.randrange(0, 100)
await message.answer(text=f'Найти сумму {a}, {b}')
print(c)
if str(message.text) != str(c) and str(message.text)!='/BACK' and
str(message.text) not in alllevel and str(message.text)!='/start':
await message.answer('Неправильно, пробуй еще.')
a = random.randrange(0, 100)
b = random.randrange(0, 100)
print(c)
await message.answer(text=f'Найти сумму {a}, {b}')
if str(message.text)=='/start':
await state.finish()
if str(message.text)=='/BACK':
await state.finish()
для math_task2 такой практически код, но найти разность, для math_task3 найти произведение.
что нужно прописать вместо await Math_task.next()
Ответы (1 шт):
Автор решения: Brainless Politican
→ Ссылка
Вызов стейтов не по порядку реализуется
Ручным вызовом стэйта await state_name.set()