Production Telegram bot for selling, issuing, renewing, and operating AFZVPN subscriptions through 3X-UI.
AFZVPN Bot - продовая сборка Telegram-бота для VPN-сервиса. Он связывает витрину тарифов, оплаты, 3X-UI, Happ-подключение, подписку обхода БС, админку, уведомления, бэкапы и операционные сценарии в один управляемый сервис.
Проект вырос из open-source базы 3xui-shop, но текущий репозиторий поддерживается как кастомная production-версия AFZVPN: с собственным онбордингом, web cabinet, защитой runtime, multi-server логикой, релизным процессом и версионируемой wiki.
| Зона | Что уже есть |
|---|---|
| Продажи | тарифы, сроки, валюты, пробный период, промокоды, апгрейд на тариф с обходом БС |
| Оплаты | Telegram Stars, YooKassa, YooMoney, Cryptomus, Heleket |
| VPN | создание и продление клиентов в 3X-UI, multi-server profile, проверка активной подписки |
| Подключение | Happ для iOS, Android и Windows, deep-link /connection, основной профиль /sub/{vpn_id} |
| РФ-сценарий | отдельная настройка Happ: РФ-сервисы напрямую, остальное через VPN |
| Обход БС | рекомендуемая подписка /wl-filtered/{vpn_id} и запасная /wl/{vpn_id} |
| Админка | пользователи, серверы, статистика, промокоды, уведомления, health, бэкапы, техрежим, рестарт |
| Операции | Docker Compose, Redis FSM, SQLite, Alembic, CI, Dependabot, release archive |
- Пользователь открывает Telegram-бота.
- Выбирает тариф, срок и способ оплаты.
- После оплаты бот создает или продлевает клиента в 3X-UI.
- Пользователь открывает Профиль -> Подключиться -> Выбор платформы.
- Бот показывает одинаково понятный путь для iOS, Android и Windows:
- Подключить основную подписку;
- РФ-сервисы напрямую, остальное через VPN;
- Подписка обхода БС - рекомендуется;
- Подписка обхода БС - запасной вариант;
- Скачать Happ.
Основная подписка и подписка обхода БС - разные подключения. БС означает "белые списки"; это устоявшийся термин в тарифах и поддержке.
Telegram user
-> aiogram bot
-> Subscription / Payment / Admin services
-> SQLite + Redis
-> 3X-UI panels
-> aiohttp public endpoints
-> Happ / payment gateways / web cabinet
| Компонент | Ответственность |
|---|---|
app/__main__.py |
старт bot + web app, polling/webhook, scheduler, Redis, gateway setup |
app/bot/routers |
Telegram UI, callback flow, админские экраны |
app/bot/services |
бизнес-логика подписок, 3X-UI, серверов, jobs, runtime metrics |
app/web |
публичные subscription endpoints, connection redirect, cabinet |
app/db |
SQLAlchemy models и Alembic migrations |
plans.json |
commercial plan catalog |
| Route | Назначение |
|---|---|
/healthz |
health check |
/readyz |
readiness check: БД, Redis и runtime-сводка |
/webhook |
Telegram webhook endpoint |
/connection |
redirect для Happ deep-links |
/sub/{vpn_id} |
основная подписка |
/wl-filtered/{vpn_id} |
рекомендуемая подписка обхода БС |
/wl/{vpn_id} |
запасная подписка обхода БС |
/cabinet/{vpn_id} |
web cabinet пользователя |
/yookassa, /yoomoney, /cryptomus, /heleket |
payment callbacks |
git clone https://github.com/AFETZ/AVS_AFETZ_VPN_SERVICE.git
cd AVS_AFETZ_VPN_SERVICE
cp .env.example .envЗаполнить .env, проверить plans.json, затем запустить:
docker compose up -d --buildТолько production bot service:
docker compose up -d --build bot
docker logs --tail=120 3xui-shop-bot| Variable | Для чего |
|---|---|
BOT_TOKEN |
токен Telegram-бота |
BOT_DOMAIN |
публичный HTTPS base URL для бота и подписок |
BOT_CABINET_DOMAIN |
отдельный HTTPS base URL для кабинета/продления без VPN |
BOT_USE_WEBHOOK |
True для webhook, False для polling |
BOT_PROXY_URL |
SOCKS5 proxy для Telegram API, если нужен |
XUI_USERNAME, XUI_PASSWORD |
доступ к 3X-UI |
XUI_SUBSCRIPTION_* |
схема, порт и path подписки 3X-UI |
SHOP_PAYMENT_*_ENABLED |
включение платежных шлюзов |
LOG_MAX_BYTES, LOG_BACKUP_COUNT |
ротация app/logs/app.log |
Полный список - в .env.example.
Тарифы описываются в plans.json. Важные поля:
durations- доступные сроки; сейчас используются30,60,90,180дней без годового тарифа;code- стабильный код тарифа;title- название для пользователя;devices- лимит устройств;prices- цены по валютам и срокам;includes_additional_profile- доступ к подписке обхода БС;upgrade_from- тариф, с которого разрешен апгрейд.
Локальный прогон:
poetry install --no-interaction --no-root
poetry run pytestЧерез Docker:
docker run --rm -v "$PWD:/repo" -w /repo 3xui-shop-bot \
sh -lc 'poetry install --no-interaction --no-root && poetry run python -m pytest tests'Последний полный baseline-прогон: 128 passed.
Wiki-source хранится в docs/wiki, поэтому документация версионируется вместе с кодом.
- GitHub Wiki: https://github.com/AFETZ/AVS_AFETZ_VPN_SERVICE/wiki
- Release notes: CHANGELOG.md
- Версионирование: docs/versioning_ru.md
- Release process: docs/release_process_ru.md
Синхронизация wiki:
scripts/sync_github_wiki.sh https://github.com/AFETZ/AVS_AFETZ_VPN_SERVICE.wiki.gitНе коммитить:
.env,.env.staging;- базы SQLite и дампы;
- Redis data;
- payment keys;
- 3X-UI credentials;
- логи и backup bundles.
Перед push:
git status --short --ignored
git diff --cached --name-only
git diff --cached --checkGitHub показывает contributors по авторам коммитов в истории Git. Это не список людей с текущим доступом к репозиторию.
В этом репозитории видны 7 GitHub-профилей, потому что история включает исходный 3xui-shop, pull requests из upstream-этапа и AFZVPN production-коммиты. Права на push проверяются отдельно в GitHub settings, а не по блоку Contributors.
AFZVPN Bot построен на базе open-source экосистемы 3xui-shop и адаптирован под production-операции AFZVPN.
Внешние источники правил для подписки обхода БС:
