#Описание
RemnaWave Bedolaga Telegram Bot — это многофункциональный бот для управления подписками(Для каждой подписки возможно назначить свой сквад со своими инбаундами - нововведение Remnawave 2.0.0+), балансом, промокодами, тестовой подпиской и рассылками пользователям через Telegram.
Бот интегрирован с системой RemnaWave версии 2.0.8
#Основные возможности
Мультиязычный интерфейс (на данный момент русский и английский языки)
Создание и покупка подписок с управлением трафиком, длительностью и ценой
Бесплатная тестовая подписка с заданными ограничениями(срок, лимит трафика, назначение сквада)
Пополнение баланса: 1) Через саппорт в ручную 2) Отправка заявки с суммой админу (С возможность подтвердить/отклонить заявку)
Управление балансом пользователей (пополнение, списание)
Промокоды со скидками и ограничениями по использованию
Полноценная админ-панель с контролем пользователей, созданием подписок(Подтягивает UUID сквада из панели), платежей и статистикой
Рассылка сообщений отдельным пользователям и всем сразу
Сервис контроля истечения сроков действия подписки(Уведомляет об истечении за указанный в настройках срок), уведомления с предложением продления подписи. (NEW)
Интеграция с RemnaWave API для управления подписками и пользователями RemnaWave
Полная синхранизация Remnawave <--> Bot - Перенос подписок из панели Remnawave в бот по Telegram id
Управление системой Remnawave (NEW)
Управление платежами (подтверждение, отклонение) + История платежей(Все действия с балансом и подписками в постраничной истории)
#Требования
Pip
Python 3.8+
PostgreSQL, SQLite или другая поддерживаемая SQL-база данных
Токен Telegram-бота
URL и токен RemnaWave API
Ссылки на подписку из ремны формата SUB_PUBLIC_DOMAIN=sub.example.com/sub
#Установка
-
Клонируйте репозиторий:
git clone https://github.com/Fr1ngg/remnawave-bedolaga-telegram-bot cd remnawave-bedolaga-telegram-bot
-
Создайте файл .env в корне проекта и заполните его необходимыми переменными окружения. Пример:
BOT_TOKEN=ваш_telegram_bot_token REMNAWAVE_URL=https://your-remnawave-url.ru REMNAWAVE_MODE=remote/local REMNAWAVE_TOKEN=ваш_remnawave_token DATABASE_URL=sqlite+aiosqlite:///bot.db ADMIN_IDS=123456789,987654321 DEFAULT_LANGUAGE=ru SUPPORT_USERNAME=support TRIAL_ENABLED=true TRIAL_DURATION_DAYS=3 TRIAL_TRAFFIC_GB=2 TRIAL_SQUAD_UUID=19bd5bde-5eea-4368-809c-6ba1ffb93897 TRIAL_PRICE=0.0 MONITOR_CHECK_INTERVAL=3600 MONITOR_DAILY_CHECK_HOUR=10 MONITOR_WARNING_DAYS=2 -
Соберите образ (Makefile Dockerfile docker-compose):
make build -
Запуск:
Запуск минимальной конфигурации (бот + база данных):
make up-min
Или запуск с Redis:
make up
Или запуск со всеми сервисами включая Nginx:
make up-full
- Управление
Просмотр логов:
make logs-bot
Статус сервисов:
make status
Перезапуск:
make restart
Остановка:
make down
#Конфигурация
BOT_TOKEN — токен Telegram бота от BotFather.
REMNAWAVE_URL — URL API RemnaWave.
REMNAWAVE_MODE=remote
REMNAWAVE_TOKEN — токен доступа к API RemnaWave.
DATABASE_URL — строка подключения к базе данных.
ADMIN_IDS — через запятую Telegram ID администраторов.
SUPPORT_USERNAME — ник поддержки, без @ указывать
Параметры тестовой подписки (включение, длительность, трафик, UUID squad, цена).
TRIAL_ENABLED=true/false
TRIAL_DURATION_DAYS=3 (дни)
TRIAL_TRAFFIC_GB=2
TRIAL_SQUAD_UUID=(УКазать UUID сквада из панели!)
TRIAL_PRICE=0.0(не трогать)
Monitor Service Settings (дополнительные настройки)
MONITOR_CHECK_INTERVAL=3600 (Запуск службы проверки)
MONITOR_DAILY_CHECK_HOUR=10 (Разовый чек в определенный промежуток дня)
MONITOR_WARNING_DAYS=2 (За сколько дней слать уведомления)
#Использование
/start - запуск
#Синхронизация подписок
Вы можете перенести свои существующие подписки из панели Remnawave прямо в бота всего одним кликом. Для этого в админ панеле реализован соостветствующий пункт: Админ панель - Система Remnawave - Синхронизация с Remnawave - Импорт всех по Telegram ID. После нажатия подтянет всех пользователей в бота, подпискам из панели будет назначено имя "Старая подписка" - такую подписку невозможно продлить.
ДОПОЛНИТЕЛЬНО: Реализована возможность зачистки импортированных из панели подписок по тг айди Админ панель - Система Remnawave - Синхронизация с Remnawave - Просмотрт планов - Удалалить импортированные
Остальное трогать без понимания кода - не рекомендую.
#Структура проекта
main.py — главный файл запуска.
handlers.py — основные обработчики команд и действий пользователя.
admin_handlers.py — обработчики команд и действий администраторов.
database.py — модели и методы работы с базой данных (SQLAlchemy).
remnawave_api.py — интеграция с API RemnaWave.
keyboards.py — генерация клавиатур Telegram.
translations.py — локализация и переводы.
utils.py — вспомогательные функции.
middlewares.py — промежуточные слои для обработки сообщений и запросов.
subscription_monitor.py - сервис мониторинга сроков истечения подписок
.env — файл конфигурации с переменными окружения.
requirements.txt — список зависимостей Python.
run.sh — скрипт установки и управления ботом (опционально).
#Администрирование
Для входа в админ-панель используйте кнопку "⚙️ Админ панель" в главном меню, если вы указаны как администратор в ADMIN_IDS.
В админ-панели доступны:
Управление подписками (создание, редактирование, список, удаление, включение/отключение)
Управление пользователями (просмотр списка, баланс)
Управление балансом (пополнение пользователей через tg id)
Управление промокодами (создание, список)
Одобрение или отклонение платежей (Приходит запрос администраторам)
Отправка сообщений пользователям или массовая рассылка
Мониторинг подписок (Проверка статуса службы, принудитедьный запуск, деактивация истекщих подписок(на случай падения базы), персональный тест(можно отправить уведомления юзеру по tg id)
Просмотр статистики
Управление систеой Remnawave (Ноды, пользователи, синхронизация и импорт подписок из базы Remnawave в бот)
#ToDo
Код колхозный и не без вайбкодинга тут обошлось, но будет допиливаться, текущая реализация работает - уже хорошо
- Дописать службу для оповещения об истечении срока подписки и контроля - Done v1.1.0
- Подключить различные шлюзы для пополнения баланса
- Синхранизацию с Remnawave между пользователями по тг id
- Полнофункциональную панель упарвления
- Добавить возможность удаление промокодов - In progress
- Доработать алгоритм удаления подписок ибо удаление(А НЕ деактивация) сейчас - скроект эту подписку у всех юзеров которые ее купили, так что удаляйте на свой страх и риск я предупредил) - In progress
- Отправка уведомлений административных в другие чаты-топики
- Рефка (как по мне беспонтовая штука, сервера нормальные хостите, сервис нормальный делайте и будут клиенты - не ебите мозги, но если будет не лень, то допилю)