Создание telegram-ботов с интерактивным меню

Однажды меня попросили провести ревью и рефакторинг одного telegram-бота. Увидев файл размером 2000 строк, рассчитанный только на обработку разных меню я понял, что это требует унификации и общих подходов. Так родилась библиотека aiogram-dialog
В этой статье я бы хотел обратить внимание на некоторые проблемы, которые мы встречаем при создании таких меню, предложить варианты их решения. А во второй половине статьи показать как это решается с помощью aiogram-dialog.
Мы не будем рассматривать архитектуру всего приложения, об этом вы можете прочитать у Фаулера или Мартина. Мы поговорим только про определенную часть UI ботов. Так же это не будет введением в разработку telegram-ботов с нуля. Я предполагаю, что читатель знаком с питоном, ООП и слышал о такой вещи как DRY.
Примеры выбраны так, чтобы проще было показать определенные проблемы, но это не единственные сценарии приводящие к ним.


В руководстве разработчика по работе с 
Для облегчения доступа к боковому меню, все экраны, которые соответствуют записям в этом меню, должны содержать индикатор бокового меню рядом с иконкой приложения в Action Bar. Нажатие на иконку приложения заставляет меню выехать с левого края экрана.
Если же мы запустим Evernote, то уже на главном экране мы увидим иконку «Вверх». Нажатие на нее, вызовет боковое меню. На других экранах, включая список записей в блокноте и даже экран просмотра записи, так же нарисована иконка «вверх» и вызывает она так же боковое меню, а не переход по иерархии экранов!