Кнопка назад в телеграмм боте. Не инлайн. 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=['Назад'])
Да, можно было бы присваивать одно и тоже состояние, но я разошёлся и сделал кнопку "Домашнее задание" которая в зависимости от текущего состояние открывает разные домашние задания по этому пришлось дни так дробить.
В общем если есть какие то варианты по оптимизации, то буду благодарен, если нет, то пусть висит как конкретный пример, может кому сгодится )