Skip to content

QueenDekim/XRay-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Язык / Language: Русский | English

XRay VPN bot [Telegram]

GitHub last commit GitHub commit activity
GitHub top language GitHub License

Описание проекта

Этот проект представляет собой Telegram бота для продажи и управления VPN подписками через панель управления 3X-UI. Бот позволяет пользователям приобретать подписки на VPN, создавать и управлять своими профилями, а администраторам — управлять пользователями и отслеживать статистику.

Основные возможности:

  • Регистрация пользователей и предоставление пробного периода
  • Продление подписки через платежную систему Telegram
  • Создание и удаление VPN профилей (VLESS) в панели 3X-UI
  • Уведомления об истечении подписки
  • Административное меню для управления пользователями и рассылки сообщений
  • Статистика использования трафика

Установка и настройка

Предварительные требования

  • Python 3.10+
  • Панель управления 3X-UI
    • Создан inbound с параметром "Безопасность Reality"
  • Telegram бот (созданный через @BotFather)

Шаги установки

  1. Клонируйте репозиторий:
git clone https://github.com/QueenDekim/XRay-bot
cd XRay-bot
  1. Установите зависимости:
python -m venv .venv # python3 если исползуете Linux
.venv\Scripts\activate
# source .venv/bin/activate если исползуете Linux
pip install -r requirements.txt
  1. Настройте переменные окружения:
cp src\.env.example src\.env # "/" вместо "\" если исползуете Linux
# Отредактируйте .env файл со своими значениями
  1. Запустите бота:
python src\app.py # python3 и "/" вместо "\" если исползуете Linux

Настройка переменных окружения

Обязательные параметры в .env:

  • BOT_TOKEN - токен вашего Telegram бота от @BotFather
  • PAYMENT_TOKEN - платежный токен от @BotFather
  • ADMINS - 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. Основные таблицы:

  1. users - информация о пользователях:

    • telegram_id - ID пользователя в Telegram
    • subscription_end - дата окончания подписки
    • vless_profile_data - данные VPN профиля в JSON
    • is_admin - флаг администратора
  2. static_profiles - статические VPN профили:

    • name - имя профиля
    • vless_url - VLESS ссылка

Основные компоненты

1. app.py

Главный файл приложения, который:

  • Инициализирует базу данных
  • Запускает фоновую задачу проверки подписок
  • Обрабатывает платежные запросы
  • Запускает polling бота

2. config.py

Загрузка и валидация конфигурации через Pydantic. Содержит:

  • Настройки подключения к 3X-UI панели
  • Параметры Reality протокола
  • Цены и скидки на подписки
  • Функции для расчета стоимости

3. database.py

Модели и функции для работы с базой данных:

  • Модель User для хранения пользователей
  • Модель StaticProfile для статических профилей
  • Функции управления подписками и профилями

4. functions.py

Класс XUIAPI для взаимодействия с панелью 3X-UI:

  • Аутентификация в панели
  • Создание и удаление клиентов
  • Получение статистики использования
  • Генерация VLESS URL

5. handlers.py

Обработчики команд и callback'ов:

  • Команды /start и /menu
  • Обработка платежей
  • Административные функции
  • Управление профилями

Работа с платежами

Бот использует встроенную платежную систему Telegram. При выборе подписки:

  1. Пользователь выбирает период подписки
  2. Бот создает инвойс через bot.send_invoice()
  3. После успешной оплаты обрабатывается через process_successful_payment()
  4. Подписка пользователя продлевается

Административные функции

Администраторы имеют доступ к специальному меню с функциями:

  • Добавление/удаление времени подписки
  • Просмотр списка пользователей
  • Статистика использования сети
  • Рассылка сообщений пользователям
  • Управление статическими профилями

Интеграция с 3X-UI

Бот взаимодействует с панелью 3X-UI через ее API:

  1. Аутентификация по логину/паролю
  2. Получение данных инбаунда
  3. Добавление клиентов в настройки инбаунда
  4. Обновление конфигурации инбаунда

Генерация VLESS URL

Формат 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

Возможные проблемы и решения

  1. Ошибки подключения к 3X-UI - проверьте URL и учетные данные
  2. Проблемы с платежами - убедитесь в корректности платежного токена
  3. Ошибки базы данных - проверьте права на запись в директории
  4. Не работают уведомления - проверьте настройки времени и часового пояса

Для дополнительной информации обращайтесь к документации aiogram и 3X-UI.


Demo - Полностью функциональный бот Связь с разработчиком
Telegram: @Dekim_vpn_bot Telegram: @QueenDek1m
Discord: from_russia_with_love

About

Telegram bot for selling and managing VPN subscriptions via the 3X-UI dashboard.

Topics

Resources

License

Stars

Watchers

Forks

Languages