Telegram-бот работа с чужим кодом без переписывания с нуля

Проект, который уже работал и который нельзя было остановить. Отдельная история про состояние, терявшееся при каждом перезапуске.

Доработка бота с административной частью и хранением данных

Готово

Задача

Первый опыт с ботами — собственный бот для VPN-сервиса. Позже пришла задача другого рода: доработать чужой, уже работающий проект.

Требовалось изменить логику, поправить тексты, добавить административную часть и разобраться с тем, как бот хранит данные.

Что было не так

Код изначально не был рассчитан на рост. Внести изменение в логику или поправить текст означало каждый раз лезть в исходники и рисковать задеть соседнее.

Главная проблема нашлась в хранении: состояние жило только в памяти процесса. Любой перезапуск бота — обновление, сбой, перезагрузка сервера — стирал его. Пользователи теряли прогресс в диалоге и начинали заново.

Что выяснилось

Симптом выглядел как случайные сбои, а причина была архитектурной: данные, которые обязаны переживать перезапуск, нигде не сохранялись.

Переписывать проект с нуля при этом было нельзя: бот работал, им пользовались, и остановка означала бы простой.

Решение

Изменил способ хранения так, чтобы состояние сохранялось вне процесса и переживало перезапуск.

Сделал административную часть, через которую тексты и настройки меняются без правки кода. Поправил логику и сами тексты, работая с существующей архитектурой, а не вместо неё.

Результат

Бот продолжает работу после перезапуска, не теряя данные пользователей.

Тексты и настройки редактируются через админ-часть, без разработчика и без выкладки новой версии.

Ограничения

Работа велась внутри существующей архитектуры. Это осознанный компромисс: полное переписывание дало бы более чистый результат, но потребовало бы остановки работающего проекта.

Похожая задача?

Расскажите, что происходит сейчас. Разберу и скажу, что с этим можно сделать.