Кнопка назад в телеграмм боте. Не инлайн. aiogram

Очень много времени потратил на поиск того как реализовать кнопку назад в многоуровневом меню. В итоге всё, что находил это совет использовать FSM, но вот как это сделать ни одного примера. В итоге понаписал сам, но хотелось бы совет от знающих, может что то можно сделать проще и красивее. В итоге сделал так. к примеру есть раздел неделя и там можно заходить в пункты день 1, день 2 и тд.

Создал набор состояний

class State(StatesGroup):
   day1 = State()
   day2 = State()

Создал функции

async def nedelya(message: types.Message):
    await message.answer('Неделя', reply_markup=nedelya)

async def day2_dz(message: types.Message, state: FSMContext):
    await message.answer('День 1', reply_markup=day1_dz)
    await state.set_state(day1)

async def day2_dz(message: types.Message, state: FSMContext):
    await message.answer('День 2', reply_markup=day2_dz)
    await state.set_state(day2)

и прописал что нужно выполнять функцию неделя при "назад" + состояние

dp.message.register(nedelya, State.day1,text=['Назад'])
dp.message.register(nedelya, State.day2,text=['Назад'])

Да, можно было бы присваивать одно и тоже состояние, но я разошёлся и сделал кнопку "Домашнее задание" которая в зависимости от текущего состояние открывает разные домашние задания по этому пришлось дни так дробить.

В общем если есть какие то варианты по оптимизации, то буду благодарен, если нет, то пусть висит как конкретный пример, может кому сгодится )


Ответы (0 шт):