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

Этот проект представляет собой Telegram-бота для продажи подписок на VPN. Работает с 3X-UI.
Обзор • Руководство по установке • Ошибки и запросы функций • Поддержка проекта
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
-
Установка/Обновление:
bash <(curl -Ls https://raw.githubusercontent.com/simon15x/3xui-shop/main/scripts/install.sh) -q cd 3xui-shop
-
Настройка переменных окружения и планов:
-
Скопируйте
plans.example.jsonвplans.jsonи.env.exampleв.env:cp plans.example.json plans.json cp .env.example .env
Обновите файл
plans.jsonсогласно вашим тарифным планам. (Настройка планов)Обновите файл
.envсогласно вашей конфигурации. (Настройка переменных окружения)
-
Соберите образ Docker:
docker compose build
-
Запустите контейнер 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 дней
}
}
},
{
// Следующий план
}
]
}-
Настройка Webhook:
- Перейдите на страницу HTTP Уведомления.
- Введите домен бота в URL для уведомлений, должен заканчиваться на
/yookassa(например,https://3xui-shop.com/yookassa). - Выберите следующие события::
payment.succeededpayment.waiting_for_capturepayment.canceled
-
Настройка переменных окружения:
- Установите следующие переменные окружения:
YOOKASSA_TOKEN: Ваш секретный ключYOOKASSA_SHOP_ID: Ваш Shop ID
- Установите следующие переменные окружения:
-
Настройка Webhook:
- Перейдите на страницу HTTP Уведомления.
- Введите домен бота в URL для уведомлений, должен заканчиваться на
/yoomoney(например,https://3xui-shop.com/yoomoney). - Скопируйте секретный ключ уведомлений.
- Отметьте галочку для
отправка HTTP-уведомлений. - Сохраните изменения.
-
Настройка переменных окружения:
- Установите следующие переменные окружения:
YOOMONEY_WALLET_ID: Ваш ID кошелькаYOOMONEY_NOTIFICATION_SECRET: Ваш секретный ключ уведомлений
- Установите следующие переменные окружения:
Для правильной работы бота необходимо настроить панель 3X-UI:
- Настройка SSL сертификата.
- Настройте Inbound (использоваться будет только первый в списке) для добавления клиентов.
- Включите сервис подписки с портом
2096и путем/user/.Не забудьте указать сертификат для подписки.
- Рекомендуется отключить шифрование конфигурации.
Бот поддерживает пробные подписки and a двухуровневую систему вознаграждений за рефералов. Вот как это работает: Вся настройка доступна через .env (см. выше).
| Тип вознаграждения | Как это работает |
|---|---|
| Пробный период | Пробная подписка доступна через кнопку "ПОПРОБОВАТЬ БЕСПЛАТНО" на главном меню для любого пользователя, который не имеет активной подписки. |
| Увеличенный пробный период | Эта опция аналогична предыдущему, но позволяет настроить увеличенный пробный период для приглашенного пользователя. |
| Реферальные вознаграждения | Когда приглашенный пользователь оплачивает подписку, пригласитель и пригласитель второго уровня (пользователь, который пригласил следующего) получают фиксированное количество дней для каждого уровня. |
Если вы обнаружили ошибку или хотите предложить новую функцию, откройте запрос (issue) в репозитории. Также вы можете внести свой вклад в проект, открыв Pull Request.
Особая благодарность следующим людям за их щедрую поддержку:
- Boto
- @olshevskii-sergey
- Aleksey
- @DmitryKryloff