Из того, что бросается в глаза сразу же
Слишком много кода в cmd
Обычно в cmd - это только main, может еще какой вспомогательный файл.
А непосредственно сама логика должна лежать в другом месте. То есть, то, что у вас зовется application, может спокойно лежать в своем собственном пакете
Потом там много глобальных переменных в main
Ну и зависимость сервисов надо делать через интерфейсы.
То есть,
application должен зависеть не от tg.Bot, а от BotInterface, а tg.Bot - реализовывать интерфейс