Техническое задание: Автоматизация бэкапа Telegram-чатов
Цель проекта - создание единого скрипта, который последовательно обрабатывает несколько портативных аккаунтов Telegram, выполняя для каждого полный цикл операций по резервному копированию и синхронизации данных.
Основная логика работы для одного аккаунта
Скрипт должен выполнять действия строго в указанном порядке:
- Запуск портативного клиента Telegram с использованием заданных прокси-настроек.
- Автоматический экспорт истории чатов (диалогов) в файлы.
- Сохранение экспортированных файлов в указанную целевую папку внутри рабочего каталога.
- Выполнение операций Git: pull, add, commit, push для загрузки изменений в удаленный репозиторий GitLab.
- Отправка уведомления о результате операции (успех/ошибка) в заданный Telegram-чат через бота.
- Корректное завершение работы клиента Telegram.
- Переход к обработке следующего аккаунта из списка.
Входные данные и конфигурация
Параметры для каждого аккаунта
- Путь к исполняемому файлу портативного клиента Telegram.
- Путь к рабочему каталогу (сессии) для данного аккаунта.
- Настройки прокси (тип, адрес, порт, учетные данные при необходимости).
- Список чатов (диалогов) для экспорта.
- Путь к папке внутри локального репозитория Git, куда будут сохраняться файлы экспорта для этого аккаунта.
Общие параметры
- Токен Telegram-бота для отправки уведомлений.
- Идентификатор чата (chat_id), в который должны поступать уведомления.
- Корневая папка репозитория, относительно которой будут создаваться папки для каждого аккаунта.
Требования к реализации
- Скрипт должен быть написан на Python.
- Необходима устойчивость к ошибкам: проблемы с сетью, недоступность прокси, ошибки Git должны обрабатываться с отправкой соответствующего уведомления.
- Логирование ключевых этапов выполнения для последующего анализа.
- Конфигурация (список аккаунтов, параметры) должна выноситься в отдельный файл (например, JSON или YAML).
- Код должен быть документирован и готов к запуску в автоматическом режиме (например, по расписанию через cron или планировщик задач).