Skip to content

princeofscale/remnawave-telegram-bot

Repository files navigation

banner

Remnawave Telegram Bot

Telegram-бот для продажи VPN-подписок, интегрированный с панелью Remnawave

Python aiogram License Docker


✨ Возможности

📦 Планы подписок

  • Гибкое создание планов с точным контролем доступности
  • Поддержка лимитов по трафику, устройствам, или без ограничений
  • Управление доступностью для групп и отдельных пользователей
  • Мультивалютное ценообразование
  • Встроенный конфигуратор прямо в боте

🎟️ Промокоды

  • Типы наград: дни, трафик, активация подписки, персональная скидка
  • Ограничение по времени или количеству активаций
  • Удобный конфигуратор

📢 Рассылки

  • Отправка по категориям пользователей: все, по плану, с/без подписки, истёкшие
  • Поддержка фото, видео, GIF, стикеров и HTML-форматирования
  • Предпросмотр перед отправкой, остановка рассылки, удаление сообщений

🔔 Уведомления

  • Уведомления пользователю: истекает/истекла подписка, исчерпан трафик
  • Системные: старт/стоп бота, новый пользователь, статус нод, подключение устройства

💳 Платёжные системы

  • Telegram Stars — без комиссии, встроено в Telegram
  • ЮKassa / ЮMoney — для RU-рынка
  • Cryptomus / Heleket / CryptoPay — криптовалюты
  • RoboKassa — популярный RU-агрегатор
  • Настройка порядка отображения и тестовые платежи

👥 Реферальная система

  • Двухуровневые рефералы
  • Награды: баллы или дополнительные дни
  • Детальная статистика

🔐 Режимы доступа

  • 5 режимов: полный запрет, открытый, только по приглашению, без покупки, без регистрации
  • Условный доступ: принятие правил, подписка на канал

📊 Аналитика

  • Статистика по пользователям, транзакциям, подпискам, планам, промокодам, рефералам

🌐 Интернационализация

  • Автоопределение языка пользователя
  • Поддержка кастомных баннеров для каждой локали

🧭 Миграция

  • Импорт пользователей из 3X-UI

🛡️ Работа в России и Иране

Бот поддерживает подключение через прокси к Telegram API — критично для серверов в странах с блокировками (Россия, Иран).

# SOCKS5 (рекомендуется):
BOT_PROXY_URL=socks5://user:password@proxy.example.com:1080

# HTTP:
BOT_PROXY_URL=http://proxy.example.com:3128

⚙️ Установка

Требования

  • OS: Ubuntu или Debian
  • RAM: от 2 ГБ (рекомендуется 4 ГБ)
  • CPU: от 2 ядер
  • Хранилище: 20 ГБ
  • ПО: Docker
sudo curl -fsSL https://get.docker.com | sh

Warning

Бот совместим с панелью RemnaWave версий 2.3–2.4.x


Шаг 1 — Скачать файлы

mkdir /opt/remnashop && cd /opt/remnashop

Скачать docker-compose.yml:

# Бот на отдельном сервере:
curl -o docker-compose.yml https://raw.githubusercontent.com/princeofscale/remnawave-telegram-bot/main/docker-compose.prod.external.yml

# Бот на том же сервере, что и панель:
curl -o docker-compose.yml https://raw.githubusercontent.com/princeofscale/remnawave-telegram-bot/main/docker-compose.prod.internal.yml

Скачать .env:

curl -o .env https://raw.githubusercontent.com/princeofscale/remnawave-telegram-bot/main/.env.example

Шаг 2 — Настроить .env

Сгенерировать секретные ключи:

sed -i "s|^APP_CRYPT_KEY=.*|APP_CRYPT_KEY=$(openssl rand -base64 32 | tr -d '\n')|" .env \
  && sed -i "s|^BOT_SECRET_TOKEN=.*|BOT_SECRET_TOKEN=$(openssl rand -hex 64 | tr -d '\n')|" .env

sed -i "s|^DATABASE_PASSWORD=.*|DATABASE_PASSWORD=$(openssl rand -hex 24 | tr -d '\n')|" .env \
  && sed -i "s|^REDIS_PASSWORD=.*|REDIS_PASSWORD=$(openssl rand -hex 24 | tr -d '\n')|" .env

Заполнить обязательные переменные:

Переменная Описание
APP_DOMAIN Домен бота без https:// и без / в конце
BOT_TOKEN Токен от @BotFather
BOT_DEV_ID Telegram ID главного администратора
BOT_SUPPORT_USERNAME Username поддержки без @
REMNAWAVE_HOST Домен или Docker-имя контейнера панели
REMNAWAVE_TOKEN API-токен из панели Remnawave
REMNAWAVE_WEBHOOK_SECRET Должен совпадать с WEBHOOK_SECRET_HEADER в панели

Important

В .env панели Remnawave обязательно настройте:

WEBHOOK_ENABLED=true
WEBHOOK_URL=https://bot.ваш-домен.com/api/v1/remnawave

Шаг 3 — Запустить

docker compose up -d && docker compose logs -f -t

Шаг 4 — Настроить реверс-прокси

Бот работает только с HTTPS. Проксируйте запросы на контейнер:

https://ваш-домен/api/v1  →  http://remnashop:5000

Шаг 5 — Обновление

cd /opt/remnashop && docker compose pull && docker compose down \
  && RESET_ASSETS=true docker compose up -d && docker compose logs -f

Caution

Флаг RESET_ASSETS=true делает резервную копию старых ассетов (/opt/remnashop/assets/*.bak) и устанавливает новые. Без него старые файлы останутся и бот может работать некорректно после обновления.


🖼️ Баннеры

Бот поддерживает кастомные баннеры для каждой страницы и локали: menu, dashboard, subscription, promocode, referral.

/opt/remnashop/assets/banners/(locale)/menu.gif
/opt/remnashop/assets/banners/ru/menu.gif

Форматы: jpg, jpeg, png, gif, webp

Important

Не удаляйте файл default.jpg — он обязателен для работы бота.


🌐 Переводы

Файлы переводов находятся в:

/opt/remnashop/assets/translations/(locale)/

После изменений перезапустите контейнер.


🔧 Дополнительные настройки

Cloudflare Zero Trust

Если панель Remnawave защищена через Cloudflare Access:

REMNAWAVE_CF_CLIENT_ID=ваш-client-id
REMNAWAVE_CF_CLIENT_SECRET=ваш-client-secret

Несколько ботов на одной панели

BOT_REMNAWAVE_USERS_PREFIX=bot2_

Сброс трафика при смене плана

# true — сбросить трафик при смене плана (по умолчанию)
# false — сохранить накопленный трафик
REMNAWAVE_RESET_TRAFFIC_ON_CHANGE=true

📁 Структура проекта

src/
├── api/            # FastAPI эндпоинты (вебхуки)
├── bot/            # Telegram-бот (хендлеры, диалоги, роутеры)
├── core/           # Конфиги, константы, утилиты
├── infrastructure/ # БД, Redis, DI, TaskIQ, платёжки
└── services/       # Бизнес-логика

📄 Лицензия

MIT — используй свободно.

About

Telegram-бот для продажи VPN-подписок. Интеграция с Remnawave. Поддержка обхода блокировок в России и Иране.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages