Telegram-бот работа с чужим кодом без переписывания с нуля
Проект, который уже работал и который нельзя было остановить. Отдельная история про состояние, терявшееся при каждом перезапуске.
Доработка бота с административной частью и хранением данных
ГотовоЗадача
Первый опыт с ботами — собственный бот для VPN-сервиса. Позже пришла задача другого рода: доработать чужой, уже работающий проект.
Требовалось изменить логику, поправить тексты, добавить административную часть и разобраться с тем, как бот хранит данные.
Что было не так
Код изначально не был рассчитан на рост. Внести изменение в логику или поправить текст означало каждый раз лезть в исходники и рисковать задеть соседнее.
Главная проблема нашлась в хранении: состояние жило только в памяти процесса. Любой перезапуск бота — обновление, сбой, перезагрузка сервера — стирал его. Пользователи теряли прогресс в диалоге и начинали заново.
Что выяснилось
Симптом выглядел как случайные сбои, а причина была архитектурной: данные, которые обязаны переживать перезапуск, нигде не сохранялись.
Переписывать проект с нуля при этом было нельзя: бот работал, им пользовались, и остановка означала бы простой.
Решение
Изменил способ хранения так, чтобы состояние сохранялось вне процесса и переживало перезапуск.
Сделал административную часть, через которую тексты и настройки меняются без правки кода. Поправил логику и сами тексты, работая с существующей архитектурой, а не вместо неё.
Результат
Бот продолжает работу после перезапуска, не теряя данные пользователей.
Тексты и настройки редактируются через админ-часть, без разработчика и без выкладки новой версии.
Ограничения
Работа велась внутри существующей архитектуры. Это осознанный компромисс: полное переписывание дало бы более чистый результат, но потребовало бы остановки работающего проекта.
Похожая задача?
Расскажите, что происходит сейчас. Разберу и скажу, что с этим можно сделать.