Skip to content

simon15x/3xui-shop

 
 

Repository files navigation

Внимание! Fork! Оригинальный проект: snoups 3xui-shop

Этот проект представляет собой Telegram-бота для продажи подписок на VPN. Работает с 3X-UI.

ОбзорРуководство по установкеОшибки и запросы функцийПоддержка проекта

GitHub License GitHub Downloads (all assets, all releases) GitHub Release GitHub Issues or Pull Requests

Static Badge Static Badge GitHub Repo stars

📝 Обзор

3X-UI-SHOP — это комплексное решение, предназначенное для автоматизации продажи подписок на VPN через Telegram. Бот использует API панели 3X-UI для управления клиентами и поддерживает различные способы оплаты, включая Cryptomus, Heleket, YooKassa, YooMoney и Telegram Stars.

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

  • Управление серверами
    • Добавление, удаление, отключение и проверка серверов в пуле
    • Автоматическое распределение новых клиентов по серверам
    • Управление серверами без перезапуска или перенастройки бота
    • Очистка истекших пользователей (by @Mukhadin)
    • Замена одного сервера другим
  • Промокоды
    • Создание, редактирование и удаление промокодов
    • Промокоды для добавления дополнительного времени подписки
    • Промокоды со скидками
  • Уведомления
    • Отправка сообщений конкретному пользователю или всем пользователям
    • Отправка уведомления перед истечением подписки
    • Редактирование последнего отправленного уведомления
    • Форматирование текста с использованием HTML
    • Предпросмотр уведомлений перед отправкой
    • Системные уведомления для разработчика и администраторов
  • Двухуровневая реферальная система (by @Heimlet)
    • Просмотр статистики рефералов
    • Вознаграждение за привлечение новых пользователей
    • Поддержка двухуровневой реферальной системы
  • Пробный период (by @Heimlet)
    • Предоставление бесплатной пробной подписки
    • Увеличенный пробный период для приглашённых пользователей
    • Настройка и отключение пробного периода
  • Гибкая платежная система
    • Изменение валюты по умолчанию
    • Гибкая архитектура для добавления новых платёжных шлюзов
    • Добавление, редактирование и удаление тарифных планов в любое время
    • Изменение порядка отображения вариантов оплаты
  • Редактор пользователей
    • Просмотр информации о пользователе
    • Просмотр статистики рефералов
    • Просмотр истории платежей и активированных промокодов
    • Просмотр информации о сервере
    • Редактирование подписки
    • Блокировка и разблокировка пользователей
    • Быстрый доступ к пользователю через пересланное сообщение
    • Персональные скидки для пользователей

⚙️ Админ-панель

Бот включает удобную панель администратора с инструментами для эффективного управления. Администраторы не имеют доступа к управлению серверами.

  • Менеджер серверов: Добавление, удаление, отключение и проверка серверов в пуле
  • Статистика: Просмотр аналитики использования и различных данных
  • Редактор пользователей: Управление пользователями и подписками
  • Редактор промокодов: Создание, редактирование и удаление промокодов
  • Отправка уведомлений: Отправка уведомлений
  • Резервное копирование БД: Создание резервной копии базы данных
  • Режим обслуживания: Отключение доступа для пользователей

🚧 Текущие задачи

  • Пробный период
  • Реферальная система
  • Статистика (включен пробный commit (by @verysaddrug)
  • Редактор пользователей
  • Редактор планов
  • Гибкий пул серверов
  • Кастомные промокоды

🛠️ Руководство по установке

Зависимости

Перед началом установки убедитесь, что у вас установлен Docker

Docker Установка

  1. Установка/Обновление:

    bash <(curl -Ls https://raw.githubusercontent.com/simon15x/3xui-shop/main/scripts/install.sh) -q
    cd 3xui-shop
  2. Настройка переменных окружения и планов:

  1. Соберите образ Docker:

    docker compose build
  2. Запустите контейнер Docker:

    docker compose up -d

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

Переменная Требуется По умолчанию Описание
LETSENCRYPT_EMAIL 🔴 - Email, используемый для создания сертификата
BOT_TOKEN 🔴 - Токен вашего Telegram-бота
BOT_ADMINS - Список ID администраторов (например, 123456789,987654321)
BOT_DEV_ID 🔴 - ID разработчика бота
BOT_SUPPORT_ID 🔴 - ID пользователя, отвечающего за поддержку
BOT_DOMAIN 🔴 - Домен вашего бота (например, 3xui-shop.com)
BOT_PORT 8080 Порт, используемый ботом
SHOP_EMAIL support@3xui-shop.com Email для отправки чеков
SHOP_CURRENCY RUB Валюта для кнопок (например, RUB, USD, XTR)
SHOP_TRIAL_ENABLED True Включить пробную подписку для новых пользователей
SHOP_TRIAL_PERIOD 3 Продолжительность пробной подписки в днях
SHOP_REFERRED_TRIAL_ENABLED False Включить расширенный пробный период для приглашённых пользователей
SHOP_REFERRED_TRIAL_PERIOD 7 Продолжительность расширенной пробной подписки для приглашённых пользователей (в днях)
SHOP_REFERRER_REWARD_ENABLED True Включить двухуровневую систему вознаграждений
SHOP_REFERRER_LEVEL_ONE_PERIOD 10 Вознаграждение в днях от первого уровня реферала
SHOP_REFERRER_LEVEL_TWO_PERIOD 3 Вознаграждение в днях от второго уровня реферала
SHOP_BONUS_DEVICES_COUNT 1 Лимит устройств по умолчанию для промокодов, пробной подписки и рефералов (в зависимости от настроек плана)
SHOP_PAYMENT_STARS_ENABLED True Включить оплату через Telegram Stars
SHOP_PAYMENT_CRYPTOMUS_ENABLED False Включить оплату через Cryptomus
SHOP_PAYMENT_HELEKET_ENABLED False Включить оплату через Heleket
SHOP_PAYMENT_YOOKASSA_ENABLED False Включить оплату через YooKassa
SHOP_PAYMENT_YOOMONEY_ENABLED False Включить оплату через YooMoney
SHOP_EXPIRED_SUBSCRIPTION_DELETION_PERIOD 3 Период очистки истекших пользователей
SHOP_EXPIRATION_NOTIFY 1 Уведомление пользователей перед истечением подписки (за интервал дней)
XUI_USERNAME 🔴 - Имя пользователя для аутентификации в панели 3X-UI
XUI_PASSWORD 🔴 - Пароль для аутентификации в панели 3X-UI
XUI_TOKEN - Токен для аутентификации (если установлен)
XUI_SUBSCRIPTION_PORT 2096 Порт для подписки
XUI_SUBSCRIPTION_PATH /user/ Путь для подписки
CRYPTOMUS_API_KEY - API-ключ для оплаты через Cryptomus
CRYPTOMUS_MERCHANT_ID - Merchant ID для оплаты через Cryptomus
HELEKET_API_KEY - API-ключ для оплаты через Heleket
HELEKET_MERCHANT_ID - Merchant ID для оплаты через Heleket
YOOKASSA_TOKEN - Токен для оплаты через YooKassa
YOOKASSA_SHOP_ID - Shop ID для оплаты через YooKassa
YOOMONEY_WALLET_ID - Wallet ID для оплаты через YooMoney
YOOMONEY_NOTIFICATION_SECRET - Секретный ключ уведомлений для оплаты через YooMoney
LOG_LEVEL DEBUG Уровень логирования (например, INFO, DEBUG)
LOG_FORMAT %(asctime)s | %(name)s | %(levelname)s | %(message)s Формат логов
LOG_ARCHIVE_FORMAT zip Формат архива логов (например, zip, gz)

Настройка тарифных планов

{
    "durations": [30, 60, 180, 365],  // Доступные длительности подписок в днях

    "plans": 
    [
        {
            "devices": 1,  // Количество устройств
            "prices": {
                "RUB": {  // Цены в рублях (RUB)
                    "30": 70,   // Цена за 30 дней
                    "60": 120,  // Цена за 60 дней
                    "180": 300, // Цена за 180 дней
                    "365": 600  // Цена за 365 дней
                },
                "USD": {  // Цены в долларах (USD)
                    "30": 0.7,  // Цена за 30 дней
                    "60": 1.2,  // Цена за 60 дней
                    "180": 3,   // Цена за 180 дней
                    "365": 6    // Цена за 365 дней
                },
                "XTR": {  // Цены в Telegram звездах (XTR)
                    "30": 60,   // Цена за 30 дней
                    "60": 100,  // Цена за 60 дней
                    "180": 250, // Цена за 180 дней
                    "365": 500  // Цена за 365 дней
                }
            }
        },
        {
            // Следующий план
        }
    ]
}

Настройка YooKassa

  1. Настройка Webhook:

    • Перейдите на страницу HTTP Уведомления.
    • Введите домен бота в URL для уведомлений, должен заканчиваться на /yookassa (например, https://3xui-shop.com/yookassa).
    • Выберите следующие события::
      • payment.succeeded
      • payment.waiting_for_capture
      • payment.canceled
  2. Настройка переменных окружения:

    • Установите следующие переменные окружения:
      • YOOKASSA_TOKEN: Ваш секретный ключ
      • YOOKASSA_SHOP_ID: Ваш Shop ID

Настройка YooMoney

  1. Настройка Webhook:

    • Перейдите на страницу HTTP Уведомления.
    • Введите домен бота в URL для уведомлений, должен заканчиваться на /yoomoney (например, https://3xui-shop.com/yoomoney).
    • Скопируйте секретный ключ уведомлений.
    • Отметьте галочку для отправка HTTP-уведомлений.
    • Сохраните изменения.
  2. Настройка переменных окружения:

    • Установите следующие переменные окружения:
      • YOOMONEY_WALLET_ID: Ваш ID кошелька
      • YOOMONEY_NOTIFICATION_SECRET: Ваш секретный ключ уведомлений

Настройка 3X-UI

Для правильной работы бота необходимо настроить панель 3X-UI:

  • Настройка SSL сертификата.
  • Настройте Inbound (использоваться будет только первый в списке) для добавления клиентов.
  • Включите сервис подписки с портом 2096 и путем /user/.

    Не забудьте указать сертификат для подписки.

  • Рекомендуется отключить шифрование конфигурации.

Настройка вознаграждений за рефералов и пробный период

Бот поддерживает пробные подписки and a двухуровневую систему вознаграждений за рефералов. Вот как это работает: Вся настройка доступна через .env (см. выше).

Тип вознаграждения Как это работает
Пробный период Пробная подписка доступна через кнопку "ПОПРОБОВАТЬ БЕСПЛАТНО" на главном меню для любого пользователя, который не имеет активной подписки.
Увеличенный пробный период Эта опция аналогична предыдущему, но позволяет настроить увеличенный пробный период для приглашенного пользователя.
Реферальные вознаграждения Когда приглашенный пользователь оплачивает подписку, пригласитель и пригласитель второго уровня (пользователь, который пригласил следующего) получают фиксированное количество дней для каждого уровня.

🐛 Ошибки и запросы функций

Если вы обнаружили ошибку или хотите предложить новую функцию, откройте запрос (issue) в репозитории. Также вы можете внести свой вклад в проект, открыв Pull Request.

💸 Поддержка проекта

Особая благодарность следующим людям за их щедрую поддержку:

About

This is a Telegram bot for selling VPN subscriptions. It works with 3X-UI.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages

  • Python 95.2%
  • Shell 4.6%
  • Other 0.2%