Техническое задание на разработку Telegram userbot для ретрансляции контента
Общее описание
Необходимо разработать программный комплекс на языке Python, представляющий собой юзербота Telegram. Основное назначение - мониторинг публикаций в заданном канале и их пересылка в несколько открытых чатов с настраиваемыми таймерами и обязательной адаптацией форматирования под специфику каждого принимающего чата.
Ключевые функции и требования
1. Механизм ретрансляции
- Пересылка постов (текст, изображения, документы) из исходного канала.
- Индивидуальная настройка таймеров для каждого чата-получателя.
- Автоматическая адаптация контента: удаление некорректных символов, переформатирование ссылок, обработка эмодзи и форматирования при несовместимости в целевом чате.
2. Управление множеством аккаунтов (сессий)
- Поддержка одновременного пула userbot-аккаунтов.
- Интеллектуальное переключение между ними.
- Логика выбора свободного аккаунта для отправки.
3. Обработка ошибок и лимитов
- Fallback-логика: если отправка с одного аккаунта не удалась (ошибка сети, бан чата, сбой), система должна автоматически повторить попытку через другой доступный аккаунт или после паузы.
- Реакция на ограничения Telegram (FloodWait) и временные баны. Автоматическая расстановка приоритетов и повторная отправка при разблокировке.
- Комплексное логирование всех действий, включая успешные отправки и все типы ошибок, с детализацией по аккаунтам и чатам.
4. Система хранения данных
- База данных MySQL для хранения списка разрешений (каналов и чатов), истории всех отправок с таймстемпами, статусами и кодами ответов.
- Возможность чтения ID аккаунтов и их конфигураций для быстрого переключения.
Требования к реализации
- Язык разработки: Python 3.8+.
- Библиотеки: Telethon, aiomysql (или pymysql с event loop), стандартный комплект.
- Внутренняя архитектура на асинхронных циклах для многопоточности/многоконтекстности с аккаунтами.
- Код должен быть структурирован в виде модулей (рекламинщик, таймеры, adapter для форматирования, database manager, error-handler).
Логика работы (опционально)
Аспект бекапа (floodwait)
При обнаружении FLOOD WAIT от одного юзербота, система принудительно переключается на другой сессионный файл, ставя текущий в очередь ожидания. Как только таймаут истекает пользователь снова становится в активный пул исполнителей но с пониженным приоритетом, чтобы избежать повторения сбоя.
Тематика: код на Python / автоматизация Telegram (псевдо email, сайты и названия не указаны).