Язык / Language: Русский | English
Этот проект представляет собой Telegram бота для продажи и управления VPN подписками через панель управления 3X-UI. Бот позволяет пользователям приобретать подписки на VPN, создавать и управлять своими профилями, а администраторам — управлять пользователями и отслеживать статистику.
Основные возможности:
- Регистрация пользователей и предоставление пробного периода
- Продление подписки через платежную систему Telegram
- Создание и удаление VPN профилей (VLESS) в панели 3X-UI
- Уведомления об истечении подписки
- Административное меню для управления пользователями и рассылки сообщений
- Статистика использования трафика
- Python 3.10+
- Панель управления 3X-UI
- Создан inbound с параметром "Безопасность
Reality"
- Создан inbound с параметром "Безопасность
- Telegram бот (созданный через
@BotFather)
- Клонируйте репозиторий:
git clone https://github.com/QueenDekim/XRay-bot
cd XRay-bot- Установите зависимости:
python -m venv .venv # python3 если исползуете Linux
.venv\Scripts\activate
# source .venv/bin/activate если исползуете Linux
pip install -r requirements.txt- Настройте переменные окружения:
cp src\.env.example src\.env # "/" вместо "\" если исползуете Linux
# Отредактируйте .env файл со своими значениями- Запустите бота:
python src\app.py # python3 и "/" вместо "\" если исползуете LinuxОбязательные параметры в .env:
BOT_TOKEN- токен вашего Telegram бота от @BotFatherPAYMENT_TOKEN- платежный токен от @BotFatherADMINS- ID администраторов через запятуюXUI_API_URL- URL панели 3X-UI (например: http://ip:54321)XUI_USERNAMEиXUI_PASSWORD- учетные данные панелиINBOUND_ID- ID инбаунда в панели 3X-UI- Параметры Reality (публичный ключ, fingerprint, SNI и т.д.)
./
├── src
│ ├── .env.example # Пример файла конфигурации
│ ├── app.py # Основной файл приложения
│ ├── config.py # Конфигурация приложения
│ ├── database.py # Модели и функции базы данных
│ ├── functions.py # Функции для работы с 3X-UI API
│ └── handlers.py # Обработчики команд и callback'ов
├── docs # Документация на других языках
│ └── README.en_US # Документация на английском языке
├── users.db # Файл базы данных SQLite. Создается при первом запуске бота
├── README.md # Документация на русском языке
└── requirements.txt # Зависимости проекта
Проект использует SQLite с SQLAlchemy ORM. Основные таблицы:
-
users- информация о пользователях:telegram_id- ID пользователя в Telegramsubscription_end- дата окончания подпискиvless_profile_data- данные VPN профиля в JSONis_admin- флаг администратора
-
static_profiles- статические VPN профили:name- имя профиляvless_url- VLESS ссылка
Главный файл приложения, который:
- Инициализирует базу данных
- Запускает фоновую задачу проверки подписок
- Обрабатывает платежные запросы
- Запускает polling бота
Загрузка и валидация конфигурации через Pydantic. Содержит:
- Настройки подключения к 3X-UI панели
- Параметры Reality протокола
- Цены и скидки на подписки
- Функции для расчета стоимости
Модели и функции для работы с базой данных:
- Модель
Userдля хранения пользователей - Модель
StaticProfileдля статических профилей - Функции управления подписками и профилями
Класс XUIAPI для взаимодействия с панелью 3X-UI:
- Аутентификация в панели
- Создание и удаление клиентов
- Получение статистики использования
- Генерация VLESS URL
Обработчики команд и callback'ов:
- Команды
/startи/menu - Обработка платежей
- Административные функции
- Управление профилями
Бот использует встроенную платежную систему Telegram. При выборе подписки:
- Пользователь выбирает период подписки
- Бот создает инвойс через
bot.send_invoice() - После успешной оплаты обрабатывается через
process_successful_payment() - Подписка пользователя продлевается
Администраторы имеют доступ к специальному меню с функциями:
- Добавление/удаление времени подписки
- Просмотр списка пользователей
- Статистика использования сети
- Рассылка сообщений пользователям
- Управление статическими профилями
Бот взаимодействует с панелью 3X-UI через ее API:
- Аутентификация по логину/паролю
- Получение данных инбаунда
- Добавление клиентов в настройки инбаунда
- Обновление конфигурации инбаунда
Формат VLESS URL для Reality:
vless://{client_id}@{host}:{port}?type=tcp&security=reality&pbk={public_key}&fp={fingerprint}&sni={sni}&sid={short_id}&spx={spider_x}#{remark}
Бот автоматически проверяет подписки каждый час и:
- Уведомляет пользователей за 24 часа до окончания
- Удаляет профили с истекшей подпиской
- Отправляет уведомления администраторам о платежах
- Все чувсвительные данные хранятся в переменных окружения
- Используется валидация конфигурации через Pydantic
- Ограниченный доступ к административным функциям
- Безопасное хранение платежной информации через Telegram
- Ошибки подключения к 3X-UI - проверьте URL и учетные данные
- Проблемы с платежами - убедитесь в корректности платежного токена
- Ошибки базы данных - проверьте права на запись в директории
- Не работают уведомления - проверьте настройки времени и часового пояса
Для дополнительной информации обращайтесь к документации aiogram и 3X-UI.
| Demo - Полностью функциональный бот | Связь с разработчиком |
|---|---|
| Telegram: @Dekim_vpn_bot | Telegram: @QueenDek1m |
Discord: from_russia_with_love |