Telegram-бот для сбора и проверки MTPROTO-прокси из публичных репозиториев. Самовосстанавливается при потере связи с Telegram API через публичные SOCKS5/HTTP-прокси.
git clone <repo>
cd TGProxyBot
uv sync
cp .env.sample .env # заполнить BOT_TOKEN
python bot.pydocker build -t tgproxybot .
docker run -d --env-file .env tgproxybotВсе переменные окружения — в .env. Пример:
BOT_TOKEN=123456:ABCdef
MTPROXY_SOURCES=["url1","url2"]
PROXIES_SOURCES=["url1","url2"]
CHECK_TIMEOUT=5
HEALTH_CHECK_INTERVAL=30| Команда | Описание |
|---|---|
/start |
Приветствие |
/check |
Скачать списки MTPROTO-прокси из GitHub, асинхронно проверить, выдать кнопками |
-
/check→fetch_proxy_sources()качает raw-файлы с GitHub (без прокси, напрямую) -
check_mtproxies()параллельно проверяет TCP-доступность каждого черезasyncio.gather() -
Результат возвращается inline-кнопками (ссылки
tg://proxy?...) -
Health monitor → фоновая задача раз в 30 сек пингует
api.telegram.orgчерезbot.get_me() -
При обрыве →
check_proxies()ищет первый рабочий SOCKS5/HTTP из публичных списков -
Нашёлся →
core.bot.sessionзаменяется на новуюAiohttpSession(proxy=...) -
Параллельно
fill_proxies_pool()пополняет пул из 5 прокси на будущее
TGProxyBot/
├── bot.py # Хендлеры, health_monitor, main()
├── core.py # Bot, Dispatcher, proxy_pool
├── config.py # Pydantic-settings
├── proxy_fetcher.py # Загрузка списков из GitHub
├── proxy_checker.py # Проверка MTPROTO и SOCKS5/HTTP
├── Dockerfile # Docker-образ
├── .dockerignore
├── pyproject.toml # Зависимости
└── .github/workflows/ci.yml