mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-01-19 19:32:10 +00:00
852 lines
41 KiB
Plaintext
852 lines
41 KiB
Plaintext
# ===============================================
|
||
# 🤖 REMNAWAVE BEDOLAGA BOT CONFIGURATION
|
||
# ===============================================
|
||
|
||
# ===== TELEGRAM BOT =====
|
||
# Токен бота от @BotFather
|
||
# ВАЖНО: Также используется для авторизации виджета личного кабинета (Cabinet WebApp)
|
||
# через Telegram.WebApp.initData
|
||
BOT_TOKEN=
|
||
ADMIN_IDS=
|
||
# Ссылка на поддержку: Telegram username (например, @support) или полный URL
|
||
SUPPORT_USERNAME=@support
|
||
# Имя пользователя бота (опционально, автоопределяется)
|
||
# BOT_USERNAME=
|
||
|
||
# ===== СИСТЕМА ПОДДЕРЖКИ =====
|
||
# Включить меню поддержки в интерфейсе
|
||
SUPPORT_MENU_ENABLED=true
|
||
# Режим системы поддержки: tickets (тикеты), contact (контакт), both (оба)
|
||
SUPPORT_SYSTEM_MODE=both
|
||
# SLA для тикетов поддержки
|
||
SUPPORT_TICKET_SLA_ENABLED=false
|
||
SUPPORT_TICKET_SLA_MINUTES=60
|
||
SUPPORT_TICKET_SLA_CHECK_INTERVAL_SECONDS=300
|
||
SUPPORT_TICKET_SLA_REMINDER_COOLDOWN_MINUTES=30
|
||
|
||
# ===== ЛИЧНЫЙ КАБИНЕТ (CABINET) =====
|
||
# Включить личный кабинет пользователя (веб-интерфейс для управления подпиской)
|
||
CABINET_ENABLED=false
|
||
# Секретный ключ для JWT токенов (если не указан, используется BOT_TOKEN)
|
||
CABINET_JWT_SECRET=
|
||
# Время жизни access token в минутах (по умолчанию 15)
|
||
CABINET_ACCESS_TOKEN_EXPIRE_MINUTES=15
|
||
# Время жизни refresh token в днях (по умолчанию 7)
|
||
CABINET_REFRESH_TOKEN_EXPIRE_DAYS=7
|
||
# Разрешенные origins для CORS (через запятую, например: https://cabinet.example.com)
|
||
CABINET_ALLOWED_ORIGINS=
|
||
# Включить верификацию email (требует настройки SMTP)
|
||
CABINET_EMAIL_VERIFICATION_ENABLED=false
|
||
# Время жизни токена верификации email в часах
|
||
CABINET_EMAIL_VERIFICATION_EXPIRE_HOURS=24
|
||
# Время жизни токена сброса пароля в часах
|
||
CABINET_PASSWORD_RESET_EXPIRE_HOURS=1
|
||
|
||
# ===== SMTP НАСТРОЙКИ (для email в личном кабинете) =====
|
||
# SMTP сервер (например: smtp.gmail.com, smtp.yandex.ru)
|
||
SMTP_HOST=
|
||
SMTP_PORT=587
|
||
SMTP_USER=
|
||
SMTP_PASSWORD=
|
||
# Email отправителя (если не указан, используется SMTP_USER)
|
||
SMTP_FROM_EMAIL=
|
||
SMTP_FROM_NAME=VPN Service
|
||
# Использовать TLS шифрование
|
||
SMTP_USE_TLS=true
|
||
|
||
# Уведомления администраторов
|
||
ADMIN_NOTIFICATIONS_ENABLED=true
|
||
ADMIN_NOTIFICATIONS_CHAT_ID=-1001234567890 # Замени на ID твоего канала (-100) - ПРЕФИКС ЗАКРЫТОГО КАНАЛА! ВСТАВИТЬ СВОЙ ID СРАЗУ ПОСЛЕ (-100) БЕЗ ПРОБЕЛОВ!
|
||
ADMIN_NOTIFICATIONS_TOPIC_ID=123 # Опционально: ID топика
|
||
ADMIN_NOTIFICATIONS_TICKET_TOPIC_ID=126 # Опционально: ID топика для тикетов
|
||
ADMIN_NOTIFICATIONS_NALOG_TOPIC_ID=133 # Опционально: ID топика для уведомлений о чеках NaloGO
|
||
# Автоматические отчеты
|
||
ADMIN_REPORTS_ENABLED=false
|
||
ADMIN_REPORTS_CHAT_ID= # Опционально: чат для отчетов (по умолчанию ADMIN_NOTIFICATIONS_CHAT_ID)
|
||
ADMIN_REPORTS_TOPIC_ID= # ID топика для отчетов
|
||
ADMIN_REPORTS_SEND_TIME=10:00 # Время отправки (по МСК) ежедневного отчета
|
||
|
||
# ===== МОНИТОРИНГ ТРАФИКА =====
|
||
# Логика: при запуске бота создаётся snapshot трафика всех пользователей.
|
||
# Через указанный интервал проверяется дельта (разница) трафика.
|
||
# Если дельта превышает порог — отправляется уведомление админам.
|
||
|
||
# Быстрая проверка (дельта трафика за интервал)
|
||
TRAFFIC_FAST_CHECK_ENABLED=false # Включить быструю проверку
|
||
TRAFFIC_FAST_CHECK_INTERVAL_MINUTES=10 # Интервал проверки в минутах
|
||
TRAFFIC_FAST_CHECK_THRESHOLD_GB=5.0 # Порог дельты в ГБ (сколько потрачено за интервал)
|
||
|
||
# Суточная проверка (трафик за 24 часа через bandwidth API)
|
||
TRAFFIC_DAILY_CHECK_ENABLED=false # Включить суточную проверку
|
||
TRAFFIC_DAILY_CHECK_TIME=00:00 # Время суточной проверки (HH:MM по UTC)
|
||
TRAFFIC_DAILY_THRESHOLD_GB=50.0 # Порог суточного трафика в ГБ
|
||
|
||
# Куда отправлять уведомления
|
||
SUSPICIOUS_NOTIFICATIONS_TOPIC_ID=14 # ID топика для уведомлений о подозрительной активности
|
||
|
||
# Фильтрация по серверам (UUID нод через запятую)
|
||
TRAFFIC_MONITORED_NODES= # Только эти ноды (пусто = все)
|
||
TRAFFIC_IGNORED_NODES= # Исключить эти ноды
|
||
|
||
# Исключить пользователей (UUID через запятую)
|
||
TRAFFIC_EXCLUDED_USER_UUIDS= # Служебные/тунельные пользователи
|
||
|
||
# Производительность
|
||
TRAFFIC_CHECK_BATCH_SIZE=1000 # Размер батча для получения пользователей
|
||
TRAFFIC_CHECK_CONCURRENCY=10 # Параллельных запросов к API
|
||
TRAFFIC_NOTIFICATION_COOLDOWN_MINUTES=60 # Кулдаун уведомлений на пользователя (минуты)
|
||
TRAFFIC_SNAPSHOT_TTL_HOURS=24 # TTL snapshot трафика в Redis (часы, сохраняется при рестарте)
|
||
|
||
# Черный список
|
||
BLACKLIST_CHECK_ENABLED=false # Включить проверку пользователей по черному списку
|
||
BLACKLIST_GITHUB_URL=https://raw.githubusercontent.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot/refs/heads/main/blacklist.txt # URL к файлу черного списка на GitHub
|
||
BLACKLIST_UPDATE_INTERVAL_HOURS=24 # Интервал обновления черного списка с GitHub (в часах)
|
||
BLACKLIST_IGNORE_ADMINS=true # Игнорировать администраторов (из ADMIN_IDS) при проверке черного списка
|
||
SUBSCRIPTION_RENEWAL_BALANCE_THRESHOLD_KOPEKS=20000 # Порог баланса (в копейках) для фильтра «готовы к продлению»
|
||
|
||
# Обязательная подписка на канал
|
||
CHANNEL_SUB_ID= # Опционально ID твоего канала (-100)
|
||
CHANNEL_IS_REQUIRED_SUB=false # Обязательна ли подписка на канал
|
||
CHANNEL_LINK= # Опционально ссылка на канал
|
||
CHANNEL_DISABLE_TRIAL_ON_UNSUBSCRIBE=true # Отключать триальные подписки при отписке от канала
|
||
CHANNEL_REQUIRED_FOR_ALL=false # Требовать подписку на канал для ВСЕХ пользователей (платных и триальных)
|
||
|
||
# ===== DATABASE CONFIGURATION =====
|
||
# Режим базы данных: "auto", "postgresql", "sqlite"
|
||
DATABASE_MODE=auto
|
||
|
||
# Основной URL (можно оставить пустым для автоматического выбора)
|
||
DATABASE_URL=
|
||
|
||
# PostgreSQL настройки (для Docker и кастомных установок)
|
||
POSTGRES_HOST=postgres
|
||
POSTGRES_PORT=5432
|
||
POSTGRES_DB=remnawave_bot
|
||
POSTGRES_USER=remnawave_user
|
||
POSTGRES_PASSWORD=secure_password_123
|
||
|
||
# SQLite настройки (для локального запуска)
|
||
SQLITE_PATH=./data/bot.db
|
||
LOCALES_PATH=./locales
|
||
|
||
# Redis
|
||
REDIS_URL=redis://redis:6379/0
|
||
# Время жизни корзины пользователя в Redis (секунды, по умолчанию 1 час)
|
||
CART_TTL_SECONDS=3600
|
||
|
||
# ===== REMNAWAVE API =====
|
||
REMNAWAVE_API_URL=https://panel.example.com
|
||
REMNAWAVE_API_KEY=your_api_key_here
|
||
|
||
# Тип авторизации: "api_key", "basic_auth", "caddy"
|
||
REMNAWAVE_AUTH_TYPE=api_key
|
||
REMNAWAVE_CADDY_TOKEN=YWRtaW46cGFzc3dvcmQ=
|
||
|
||
# Для панелей с Basic Auth (опционально)
|
||
REMNAWAVE_USERNAME=
|
||
REMNAWAVE_PASSWORD=
|
||
|
||
# Для панелей установленных скриптом eGames прописывать ключ в формате XXXXXXX:DDDDDDDD
|
||
REMNAWAVE_SECRET_KEY=
|
||
|
||
# Шаблон описания пользователя в панели Remnawave
|
||
# Доступные плейсхолдеры:
|
||
# {full_name} — Имя, Фамилия из Telegram
|
||
# {username} — @логин из Telegram (c @)
|
||
# {username_clean} — логин из Telegram (без @)
|
||
# {telegram_id} — ID Telegram
|
||
REMNAWAVE_USER_DESCRIPTION_TEMPLATE="Bot user: {full_name} {username}"
|
||
|
||
# Шаблон имени пользователя в панели Remnawave
|
||
# Доступные плейсхолдеры аналогичны описанию выше
|
||
# {full_name} — Имя, Фамилия из Telegram
|
||
# {username} — @логин из Telegram (c @)
|
||
# {username_clean} — логин из Telegram (без @)
|
||
# {telegram_id} — ID Telegram
|
||
REMNAWAVE_USER_USERNAME_TEMPLATE="user_{telegram_id}"
|
||
|
||
# Режим удаления пользователей из панели RemnaWave
|
||
# delete - полностью удалить пользователя из панели
|
||
# disable - только деактивировать пользователя
|
||
REMNAWAVE_USER_DELETE_MODE=delete
|
||
|
||
# Автоматическая синхронизация пользователей с панелью Remnawave
|
||
REMNAWAVE_AUTO_SYNC_ENABLED=false
|
||
# Времена синхронизации (через запятую, формат HH:MM по МСК)
|
||
REMNAWAVE_AUTO_SYNC_TIMES=03:00
|
||
|
||
# Теги пользователей в Remnawave (A-Z, 0-9, _, макс. 16 символов)
|
||
# Тег для пробных пользователей (опционально)
|
||
# TRIAL_USER_TAG=TRIAL
|
||
# Тег для платных пользователей (опционально)
|
||
# PAID_SUBSCRIPTION_USER_TAG=PAID
|
||
|
||
# ========= ПОДПИСКИ =========
|
||
|
||
# ===== РЕЖИМ ПРОДАЖ =====
|
||
# Режим продаж подписок (можно переключить в кабинете: Настройки → Подписки):
|
||
# "classic" - классический режим:
|
||
# - Пользователь выбирает период, серверы, трафик, устройства отдельно
|
||
# - Цены периодов берутся из PERIOD_PRICES ниже
|
||
# - Подходит для гибкой настройки под каждого пользователя
|
||
# "tariffs" - режим тарифов:
|
||
# - Пользователь выбирает готовый тариф (Premium, Basic и т.д.)
|
||
# - Тарифы создаются в кабинете: Админ → Тарифы
|
||
# - Каждый тариф имеет свои серверы, трафик, устройства и цены за периоды
|
||
# - Подходит для продажи готовых пакетов услуг
|
||
SALES_MODE=tariffs
|
||
|
||
# ===== ТРИАЛ ПОДПИСКА =====
|
||
TRIAL_DURATION_DAYS=3
|
||
TRIAL_TRAFFIC_LIMIT_GB=10
|
||
TRIAL_DEVICE_LIMIT=1
|
||
# ID тарифа для триала в режиме тарифов (0 = использовать стандартные настройки триала)
|
||
# Если указан ID тарифа, параметры триала берутся из тарифа (traffic_limit_gb, device_limit, allowed_squads)
|
||
# Длительность триала всё равно берётся из TRIAL_DURATION_DAYS
|
||
TRIAL_TARIFF_ID=0
|
||
# Платный триал: если TRIAL_ACTIVATION_PRICE > 0, триал становится платным
|
||
# Цена в копейках (1000 = 10 рублей). Пользователь может оплатить триал любым методом оплаты.
|
||
# TRIAL_PAYMENT_ENABLED опционален (для обратной совместимости)
|
||
TRIAL_PAYMENT_ENABLED=false
|
||
TRIAL_ACTIVATION_PRICE=0
|
||
|
||
# ===== ПЛАТНАЯ ПОДПИСКА =====
|
||
# Сколько устройств доступно по дефолту при покупке платной подписки
|
||
DEFAULT_DEVICE_LIMIT=3
|
||
|
||
# Максимум устройств доступных к покупке (0 = Нет лимита)
|
||
MAX_DEVICES_LIMIT=15
|
||
|
||
# Дефолт параметры для подписок выданных через админку
|
||
DEFAULT_TRAFFIC_LIMIT_GB=100
|
||
|
||
# Плюсовать дни триала при покупке платной подписке
|
||
TRIAL_ADD_REMAINING_DAYS_TO_PAID=false
|
||
|
||
# ===== ГЛОБАЛЬНЫЙ ПАРАМЕТР ДЛЯ ВСЕХ ПОДПИСОК =====
|
||
DEFAULT_TRAFFIC_RESET_STRATEGY=MONTH
|
||
# Сбрасывать трафик при каждой оплате подписки
|
||
RESET_TRAFFIC_ON_PAYMENT=false
|
||
|
||
# ===== НАСТРОЙКИ ТРАФИКА =====
|
||
# Режим выбора трафика:
|
||
# "selectable" - пользователи выбирают пакеты трафика (по умолчанию)
|
||
# "fixed" - фиксированный лимит трафика для всех подписок
|
||
TRAFFIC_SELECTION_MODE=selectable
|
||
|
||
# Фиксированный лимит трафика в ГБ (используется только в режиме "fixed")
|
||
# 0 = безлимит
|
||
FIXED_TRAFFIC_LIMIT_GB=100
|
||
|
||
# ===== ДОКУПКА ТРАФИКА =====
|
||
# Включить/выключить функцию докупки трафика к существующей подписке
|
||
TRAFFIC_TOPUP_ENABLED=true
|
||
# Показывать кнопку "Докупить трафик" в меню
|
||
BUY_TRAFFIC_BUTTON_VISIBLE=true
|
||
|
||
# Пакеты для докупки трафика (формат: "гб:цена_в_копейках:enabled")
|
||
# Пустая строка = использовать TRAFFIC_PACKAGES_CONFIG
|
||
# Пример: "10:5000:true,25:10000:true,50:15000:true,100:25000:true"
|
||
TRAFFIC_TOPUP_PACKAGES_CONFIG=
|
||
|
||
# ===== СБРОС ТРАФИКА =====
|
||
# Режим расчета цены сброса трафика:
|
||
# "period" - фиксированная цена = стоимость периода 30 дней (старое поведение, может быть абьюзом!)
|
||
# "traffic" - цена = стоимость текущего пакета трафика подписки
|
||
# "traffic_with_purchased" - цена = стоимость базового + докупленного трафика (рекомендуется)
|
||
TRAFFIC_RESET_PRICE_MODE=traffic_with_purchased
|
||
|
||
# Базовая цена сброса в копейках (0 = использовать PERIOD_PRICES[30])
|
||
# Используется как минимальная цена или фиксированная в режиме "period"
|
||
TRAFFIC_RESET_BASE_PRICE=0
|
||
|
||
# ===== ПЕРИОДЫ ПОДПИСКИ =====
|
||
# Доступные периоды подписки (через запятую)
|
||
# Возможные значения: 14,30,60,90,180,360
|
||
AVAILABLE_SUBSCRIPTION_PERIODS=30,90,180
|
||
AVAILABLE_RENEWAL_PERIODS=30,90,180
|
||
|
||
# ===== ПРОСТАЯ ПОКУПКА ПОДПИСКИ =====
|
||
SIMPLE_SUBSCRIPTION_ENABLED=true
|
||
# Стандартный период (должен совпадать с одним из AVAILABLE_SUBSCRIPTION_PERIODS)
|
||
SIMPLE_SUBSCRIPTION_PERIOD_DAYS=30
|
||
# Сколько устройств выдаётся в рамках простой подписки
|
||
SIMPLE_SUBSCRIPTION_DEVICE_LIMIT=1
|
||
# Лимит трафика в ГБ (0 — безлимит)
|
||
SIMPLE_SUBSCRIPTION_TRAFFIC_GB=0
|
||
# UUID сквада (оставьте пустым, чтобы использовать сквады по умолчанию)
|
||
# SIMPLE_SUBSCRIPTION_SQUAD_UUID=
|
||
|
||
# ===== ЦЕНЫ (в копейках) =====
|
||
BASE_SUBSCRIPTION_PRICE=0
|
||
|
||
# Цены за периоды
|
||
PRICE_14_DAYS=7000
|
||
PRICE_30_DAYS=1000
|
||
PRICE_60_DAYS=25900
|
||
PRICE_90_DAYS=36900
|
||
PRICE_180_DAYS=69900
|
||
PRICE_360_DAYS=109900
|
||
|
||
# Скидка для Базовых Юзеров (Для других Промогрупп не работает!)
|
||
BASE_PROMO_GROUP_PERIOD_DISCOUNTS_ENABLED=false
|
||
# 60:10 = скидка 10% на все доп услуги. 90:20 = 20% за 90 дней и тд
|
||
BASE_PROMO_GROUP_PERIOD_DISCOUNTS=60:10,90:20,180:40,360:70
|
||
|
||
# Выводимые пакеты трафика и их цены в копейках
|
||
TRAFFIC_PACKAGES_CONFIG="5:2000:false,10:3500:false,25:7000:false,50:11000:true,100:15000:true,250:17000:false,500:19000:false,1000:19500:true,0:0:true"
|
||
# Цена за безлимитный трафик (в копейках)
|
||
PRICE_TRAFFIC_UNLIMITED=20000
|
||
|
||
# Цена за дополнительное устройство (DEFAULT_DEVICE_LIMIT идет бесплатно!)
|
||
PRICE_PER_DEVICE=10000
|
||
# Включить выбор количества устройств при покупке и продлении
|
||
DEVICES_SELECTION_ENABLED=true
|
||
# Единое количество устройств для режима без выбора (0 — не назначать устройства)
|
||
DEVICES_SELECTION_DISABLED_AMOUNT=0
|
||
|
||
# ===== МОДЕМ =====
|
||
# Включить функционал подключения модема
|
||
MODEM_ENABLED=false
|
||
# Цена модема в копейках за месяц (добавляется к ежемесячному платежу)
|
||
MODEM_PRICE_PER_MONTH=10000
|
||
# Скидки на модем за длительный срок: "месяцев:процент,месяцев:процент"
|
||
# Пример: 3 мес = 15%, 6 мес = 20%, 12 мес = 25%
|
||
MODEM_PERIOD_DISCOUNTS=3:15,6:20,12:25
|
||
|
||
# Отключение превью ссылок в сообщениях бота
|
||
DISABLE_WEB_PAGE_PREVIEW=false
|
||
|
||
# ===== РЕФЕРАЛЬНАЯ СИСТЕМА =====
|
||
REFERRAL_PROGRAM_ENABLED=true
|
||
REFERRAL_MINIMUM_TOPUP_KOPEKS=10000
|
||
REFERRAL_FIRST_TOPUP_BONUS_KOPEKS=10000
|
||
REFERRAL_INVITER_BONUS_KOPEKS=10000
|
||
REFERRAL_COMMISSION_PERCENT=25
|
||
|
||
|
||
# Уведомления
|
||
REFERRAL_NOTIFICATIONS_ENABLED=true
|
||
REFERRAL_NOTIFICATION_RETRY_ATTEMPTS=3
|
||
|
||
# ===== ВЫВОД РЕФЕРАЛЬНОГО БАЛАНСА =====
|
||
# Включить функцию вывода реферального баланса
|
||
REFERRAL_WITHDRAWAL_ENABLED=false
|
||
# Минимальная сумма вывода в копейках (по умолчанию 50000 = 500₽)
|
||
REFERRAL_WITHDRAWAL_MIN_AMOUNT_KOPEKS=50000
|
||
# Интервал между запросами на вывод (дни)
|
||
REFERRAL_WITHDRAWAL_COOLDOWN_DAYS=30
|
||
# Выводить только реферальный баланс (true) или весь баланс (false)
|
||
REFERRAL_WITHDRAWAL_ONLY_REFERRAL_BALANCE=true
|
||
# ID топика для уведомлений о заявках на вывод (0 = основной чат)
|
||
REFERRAL_WITHDRAWAL_NOTIFICATIONS_TOPIC_ID=0
|
||
# Тестовый режим (позволяет админам тестировать функционал)
|
||
REFERRAL_WITHDRAWAL_TEST_MODE=false
|
||
|
||
# Настройки анализа на подозрительную активность
|
||
# Минимальная сумма депозита от реферала для анализа (в копейках)
|
||
REFERRAL_WITHDRAWAL_SUSPICIOUS_MIN_DEPOSIT_KOPEKS=100000
|
||
# Максимум пополнений от одного реферала в месяц
|
||
REFERRAL_WITHDRAWAL_SUSPICIOUS_MAX_DEPOSITS_PER_MONTH=10
|
||
# Коэффициент подозрительности (пополнено в X раз больше, чем потрачено)
|
||
REFERRAL_WITHDRAWAL_SUSPICIOUS_NO_PURCHASES_RATIO=3
|
||
|
||
# ===== АВТОПРОДЛЕНИЕ =====
|
||
# Глобально включить/выключить функцию автопродления (false = функция скрыта)
|
||
ENABLE_AUTOPAY=false
|
||
# Дни до окончания подписки, когда отправлять предупреждение (через запятую)
|
||
AUTOPAY_WARNING_DAYS=3,1
|
||
# Включить автопродление для новых пользователей по умолчанию
|
||
DEFAULT_AUTOPAY_ENABLED=true
|
||
DEFAULT_AUTOPAY_DAYS_BEFORE=3
|
||
MIN_BALANCE_FOR_AUTOPAY_KOPEKS=10000
|
||
|
||
# ===== ПЛАТЕЖНЫЕ СИСТЕМЫ =====
|
||
|
||
# Telegram Stars (работает автоматически)
|
||
TELEGRAM_STARS_ENABLED=false
|
||
TELEGRAM_STARS_RATE_RUB=1.79
|
||
|
||
# Tribute (https://tribute.app)
|
||
TRIBUTE_ENABLED=false
|
||
TRIBUTE_API_KEY=
|
||
TRIBUTE_DONATE_LINK=
|
||
TRIBUTE_WEBHOOK_PATH=/tribute-webhook
|
||
TRIBUTE_WEBHOOK_HOST=0.0.0.0
|
||
# Примечание: индивидуальные *_WEBHOOK_PORT используются только для старой схемы запуска.
|
||
# В режиме единого FastAPI сервера оставьте эти значения по умолчанию.
|
||
TRIBUTE_WEBHOOK_PORT=8081
|
||
|
||
# YooKassa (https://yookassa.ru)
|
||
YOOKASSA_ENABLED=false
|
||
YOOKASSA_SHOP_ID=
|
||
YOOKASSA_SECRET_KEY=
|
||
YOOKASSA_RETURN_URL=
|
||
YOOKASSA_DEFAULT_RECEIPT_EMAIL=receipts@yourdomain.com
|
||
|
||
# Включить оплату через СБП (Систему быстрых платежей)
|
||
YOOKASSA_SBP_ENABLED=false
|
||
|
||
# Настройки чеков для налоговой
|
||
YOOKASSA_VAT_CODE=1
|
||
# Коды НДС:
|
||
# 1 - НДС не облагается
|
||
# 2 - НДС 0%
|
||
# 3 - НДС 10%
|
||
# 4 - НДС 20%
|
||
# 5 - НДС 10/110
|
||
# 6 - НДС 20/120
|
||
# 7 - НДС 5%
|
||
# 8 - НДС 7%
|
||
# 9 - НДС 5/105
|
||
# 10 - НДС 7/107
|
||
# 11 - НДС 22%
|
||
# 12 - НДС 22/122
|
||
|
||
YOOKASSA_PAYMENT_MODE=full_payment
|
||
# Способы расчета:
|
||
# full_payment - полная оплата
|
||
# partial_payment - частичная оплата
|
||
# advance - аванс
|
||
# full_prepayment - полная предоплата
|
||
# partial_prepayment - частичная предоплата
|
||
# credit - передача в кредит
|
||
# credit_payment - оплата кредита
|
||
|
||
YOOKASSA_PAYMENT_SUBJECT=service
|
||
# Предметы расчета:
|
||
# commodity - товар
|
||
# excise - подакцизный товар
|
||
# job - работа
|
||
# service - услуга
|
||
# gambling_bet - ставка в азартной игре
|
||
# gambling_prize - выигрыш в азартной игре
|
||
# lottery - лотерейный билет
|
||
# lottery_prize - выигрыш в лотерее
|
||
# intellectual_activity - результат интеллектуальной деятельности
|
||
# payment - платеж
|
||
# agent_commission - агентское вознаграждение
|
||
# composite - составной предмет расчета
|
||
# another - другое
|
||
|
||
# Webhook настройки
|
||
YOOKASSA_WEBHOOK_PATH=/yookassa-webhook
|
||
YOOKASSA_WEBHOOK_HOST=0.0.0.0
|
||
YOOKASSA_WEBHOOK_PORT=8082
|
||
# Доверенные сети для webhook (IP-адреса YooKassa, через запятую)
|
||
# YOOKASSA_TRUSTED_PROXY_NETWORKS=185.71.76.0/24,185.71.77.0/24
|
||
|
||
# Лимиты сумм пополнения через YooKassa (в копейках)
|
||
YOOKASSA_MIN_AMOUNT_KOPEKS=5000
|
||
YOOKASSA_MAX_AMOUNT_KOPEKS=1000000
|
||
|
||
# Быстрый выбор суммы пополнения через YooKassa
|
||
YOOKASSA_QUICK_AMOUNT_SELECTION_ENABLED=true
|
||
|
||
# Отключить отображение кнопок выбора суммы пополнения (оставить только ввод вручную)
|
||
DISABLE_TOPUP_BUTTONS=false
|
||
# Отключить пополнение баланса через поддержку
|
||
SUPPORT_TOPUP_ENABLED=true
|
||
|
||
# Автоматическая проверка зависших пополнений и повторные обращения к провайдерам
|
||
PAYMENT_VERIFICATION_AUTO_CHECK_ENABLED=false
|
||
# Интервал (в минутах) между автоматическими проверками пополнений
|
||
PAYMENT_VERIFICATION_AUTO_CHECK_INTERVAL_MINUTES=10
|
||
|
||
# ===== НАЛОГОВАЯ СЛУЖБА (NaloGO) =====
|
||
# Автоматическая отправка чеков в налоговую при пополнении баланса
|
||
NALOGO_ENABLED=false
|
||
NALOGO_INN= # ИНН самозанятого
|
||
NALOGO_PASSWORD= # Пароль от личного кабинета налоговой
|
||
NALOGO_DEVICE_ID= # Опционально: ID устройства для авторизации
|
||
NALOGO_STORAGE_PATH=./nalogo_tokens.json # Путь к файлу с токенами
|
||
NALOGO_QUEUE_CHECK_INTERVAL=300 # Интервал проверки очереди чеков (секунды)
|
||
NALOGO_QUEUE_RECEIPT_DELAY=3 # Задержка между отправкой чеков (секунды)
|
||
NALOGO_QUEUE_MAX_ATTEMPTS=10 # Максимум попыток отправки одного чека
|
||
|
||
# ===== НАСТРОЙКИ ОПИСАНИЙ ПЛАТЕЖЕЙ =====
|
||
# Эти настройки позволяют изменить описания платежей,
|
||
# чтобы избежать блокировок платежных систем
|
||
PAYMENT_SERVICE_NAME=Интернет-сервис
|
||
PAYMENT_BALANCE_DESCRIPTION=Пополнение баланса
|
||
PAYMENT_SUBSCRIPTION_DESCRIPTION=Оплата подписки
|
||
PAYMENT_BALANCE_TEMPLATE={service_name} - {description}
|
||
PAYMENT_SUBSCRIPTION_TEMPLATE={service_name} - {description}
|
||
|
||
# CRYPTOBOT
|
||
CRYPTOBOT_ENABLED=false
|
||
CRYPTOBOT_API_TOKEN=123456789:AAzQcZWQqQAbsfgPnOLr4FHC8Doa4L7KryC
|
||
CRYPTOBOT_WEBHOOK_SECRET=your_webhook_secret_here
|
||
CRYPTOBOT_BASE_URL=https://pay.crypt.bot
|
||
CRYPTOBOT_TESTNET=false
|
||
CRYPTOBOT_WEBHOOK_PATH=/cryptobot-webhook
|
||
# Эти порты используются только при ручном запуске старого aiohttp сервера.
|
||
# В новой конфигурации все вебхуки обрабатываются через порт 8080.
|
||
CRYPTOBOT_WEBHOOK_PORT=8081
|
||
CRYPTOBOT_DEFAULT_ASSET=USDT
|
||
CRYPTOBOT_ASSETS=USDT,TON,BTC,ETH,LTC,BNB,TRX,USDC
|
||
CRYPTOBOT_INVOICE_EXPIRES_HOURS=24
|
||
|
||
# HELEKET
|
||
HELEKET_ENABLED=false
|
||
HELEKET_MERCHANT_ID=
|
||
HELEKET_API_KEY=
|
||
HELEKET_BASE_URL=https://api.heleket.com/v1
|
||
HELEKET_DEFAULT_CURRENCY=USDT
|
||
HELEKET_DEFAULT_NETWORK=
|
||
HELEKET_INVOICE_LIFETIME=3600
|
||
HELEKET_MARKUP_PERCENT=0
|
||
HELEKET_WEBHOOK_PATH=/heleket-webhook
|
||
HELEKET_WEBHOOK_HOST=0.0.0.0
|
||
HELEKET_WEBHOOK_PORT=8086
|
||
HELEKET_CALLBACK_URL=
|
||
HELEKET_RETURN_URL=
|
||
HELEKET_SUCCESS_URL=
|
||
|
||
# MULENPAY
|
||
MULENPAY_ENABLED=false
|
||
MULENPAY_API_KEY=
|
||
MULENPAY_SECRET_KEY=
|
||
MULENPAY_SHOP_ID=<ID магазина>
|
||
# необязательно, есть дефолтные значения
|
||
MULENPAY_BASE_URL=https://mulenpay.ru/api
|
||
MULENPAY_WEBHOOK_PATH=/mulenpay-webhook
|
||
# Название кнопки в интерфейсе
|
||
MULENPAY_DISPLAY_NAME=Mulen Pay
|
||
MULENPAY_DESCRIPTION="Пополнение баланса"
|
||
# Запрещённые ключевые слова в display_name (КАЗИНО, СТАВКИ и т.п. — блокируются Mulenpay)
|
||
# DISPLAY_NAME_BANNED_KEYWORDS=КАЗИНО,СТАВКИ,CASINO,BET,1XBET
|
||
MULENPAY_LANGUAGE=ru
|
||
MULENPAY_VAT_CODE=0
|
||
MULENPAY_PAYMENT_SUBJECT=4
|
||
MULENPAY_PAYMENT_MODE=4
|
||
MULENPAY_MIN_AMOUNT_KOPEKS=10000
|
||
MULENPAY_MAX_AMOUNT_KOPEKS=10000000
|
||
# Ожидаемый origin для iframe (опционально, для безопасности)
|
||
# MULENPAY_IFRAME_EXPECTED_ORIGIN=https://mulenpay.ru
|
||
|
||
# PAYPALYCH / PAL24
|
||
PAL24_ENABLED=false
|
||
PAL24_API_TOKEN=
|
||
PAL24_SHOP_ID=
|
||
PAL24_SIGNATURE_TOKEN=
|
||
PAL24_BASE_URL=https://pal24.pro/api/v1/
|
||
PAL24_WEBHOOK_PATH=/pal24-webhook
|
||
PAL24_WEBHOOK_PORT=8084
|
||
PAL24_PAYMENT_DESCRIPTION="Пополнение баланса"
|
||
PAL24_MIN_AMOUNT_KOPEKS=10000
|
||
PAL24_MAX_AMOUNT_KOPEKS=100000000
|
||
PAL24_REQUEST_TIMEOUT=30
|
||
# Отображать кнопку СБП в PayPalych (true - отображать, false - скрывать)
|
||
PAL24_SBP_BUTTON_VISIBLE=true
|
||
# Отображать кнопку оплаты картой в PayPalych (true - отображать, false - скрывать)
|
||
PAL24_CARD_BUTTON_VISIBLE=true
|
||
|
||
# PLATEGA
|
||
PLATEGA_ENABLED=false
|
||
PLATEGA_MERCHANT_ID=
|
||
PLATEGA_SECRET=
|
||
PLATEGA_BASE_URL=https://app.platega.io
|
||
# Название кнопки в интерфейсе
|
||
PLATEGA_DISPLAY_NAME=Platega
|
||
PLATEGA_RETURN_URL=
|
||
PLATEGA_FAILED_URL=
|
||
PLATEGA_CURRENCY=RUB
|
||
# Список ID активных методов из кабинета Platega (через запятую)
|
||
PLATEGA_ACTIVE_METHODS=2,10,11,12,13
|
||
PLATEGA_MIN_AMOUNT_KOPEKS=100
|
||
PLATEGA_MAX_AMOUNT_KOPEKS=100000000
|
||
PLATEGA_WEBHOOK_PATH=/platega-webhook
|
||
PLATEGA_WEBHOOK_HOST=0.0.0.0
|
||
PLATEGA_WEBHOOK_PORT=8086
|
||
|
||
# ===== FREEKASSA =====
|
||
FREEKASSA_ENABLED=false
|
||
FREEKASSA_SHOP_ID=
|
||
FREEKASSA_API_KEY=
|
||
# Секретное слово 1 (для формы оплаты)
|
||
FREEKASSA_SECRET_WORD_1=
|
||
# Секретное слово 2 (для webhook)
|
||
FREEKASSA_SECRET_WORD_2=
|
||
FREEKASSA_DISPLAY_NAME=Freekassa
|
||
FREEKASSA_CURRENCY=RUB
|
||
FREEKASSA_MIN_AMOUNT_KOPEKS=10000
|
||
FREEKASSA_MAX_AMOUNT_KOPEKS=100000000
|
||
FREEKASSA_PAYMENT_TIMEOUT_SECONDS=3600
|
||
FREEKASSA_WEBHOOK_PATH=/freekassa-webhook
|
||
FREEKASSA_WEBHOOK_HOST=0.0.0.0
|
||
FREEKASSA_WEBHOOK_PORT=8088
|
||
# Способ оплаты: пусто = форма выбора, 42 = обычный СБП, 44 = NSPK СБП
|
||
FREEKASSA_PAYMENT_SYSTEM_ID=
|
||
# Использовать API для создания заказов (обязательно для NSPK СБП)
|
||
FREEKASSA_USE_API=false
|
||
|
||
# ===== WATA =====
|
||
WATA_ENABLED=false
|
||
WATA_BASE_URL=https://api.wata.pro
|
||
WATA_ACCESS_TOKEN=
|
||
WATA_TERMINAL_PUBLIC_ID=
|
||
WATA_PAYMENT_DESCRIPTION=Пополнение баланса
|
||
# Тип платежа: card, sbp, all
|
||
WATA_PAYMENT_TYPE=all
|
||
WATA_SUCCESS_REDIRECT_URL=
|
||
WATA_FAIL_REDIRECT_URL=
|
||
WATA_LINK_TTL_MINUTES=60
|
||
WATA_MIN_AMOUNT_KOPEKS=10000
|
||
WATA_MAX_AMOUNT_KOPEKS=10000000
|
||
WATA_REQUEST_TIMEOUT=30
|
||
WATA_WEBHOOK_PATH=/wata-webhook
|
||
WATA_WEBHOOK_HOST=0.0.0.0
|
||
WATA_WEBHOOK_PORT=8087
|
||
# Кэширование публичного ключа WATA (секунды)
|
||
WATA_PUBLIC_KEY_CACHE_SECONDS=3600
|
||
# URL для получения публичного ключа (опционально)
|
||
# WATA_PUBLIC_KEY_URL=
|
||
|
||
# ===== CLOUDPAYMENTS =====
|
||
CLOUDPAYMENTS_ENABLED=false
|
||
CLOUDPAYMENTS_PUBLIC_ID=
|
||
CLOUDPAYMENTS_API_SECRET=
|
||
# URL API CloudPayments
|
||
CLOUDPAYMENTS_API_URL=https://api.cloudpayments.ru
|
||
# URL виджета оплаты
|
||
CLOUDPAYMENTS_WIDGET_URL=https://widget.cloudpayments.ru/show
|
||
CLOUDPAYMENTS_DESCRIPTION=Пополнение баланса
|
||
CLOUDPAYMENTS_CURRENCY=RUB
|
||
CLOUDPAYMENTS_MIN_AMOUNT_KOPEKS=10000
|
||
CLOUDPAYMENTS_MAX_AMOUNT_KOPEKS=10000000
|
||
CLOUDPAYMENTS_WEBHOOK_PATH=/cloudpayments-webhook
|
||
CLOUDPAYMENTS_WEBHOOK_HOST=0.0.0.0
|
||
CLOUDPAYMENTS_WEBHOOK_PORT=8089
|
||
# URL для возврата после оплаты (опционально)
|
||
# CLOUDPAYMENTS_RETURN_URL=
|
||
# Скин виджета: mini, classic, modern
|
||
CLOUDPAYMENTS_SKIN=mini
|
||
CLOUDPAYMENTS_REQUIRE_EMAIL=false
|
||
CLOUDPAYMENTS_TEST_MODE=false
|
||
|
||
# ===== ИНТЕРФЕЙС И UX =====
|
||
|
||
# Включить логотип для всех сообщений (true - с изображением, false - только текст)
|
||
ENABLE_LOGO_MODE=true
|
||
LOGO_FILE=vpn_logo.png
|
||
|
||
# Режим главного меню (default - классический режим работы бота, text - режим работы с активным ЛК MiniApp, отключает покупку/управление подпиской в меню, заменяет все кнопками открытия в MiniApp ЛК)
|
||
MAIN_MENU_MODE=default
|
||
# Включить управление меню через API (позволяет динамически менять структуру кнопок)
|
||
MENU_LAYOUT_ENABLED=false
|
||
|
||
# Скрыть блок с ссылкой подключения в разделе с информацией о подписке
|
||
HIDE_SUBSCRIPTION_LINK=false
|
||
|
||
# Режим работы кнопки "Подключиться"
|
||
# guide - открывает гайд подключения (режим 1)
|
||
# miniapp_subscription - открывает ссылку подписки в мини-приложении (режим 2)
|
||
# miniapp_custom - открывает заданную ссылку в мини-приложении (режим 3)
|
||
# link - Открывает ссылку напрямую в браузере (режим 4)
|
||
# happ_cryptolink - Вывод cryptoLink ссылки на подписку Happ (режим 5)
|
||
CONNECT_BUTTON_MODE=guide
|
||
|
||
# URL для режима miniapp_custom (обязателен при CONNECT_BUTTON_MODE=miniapp_custom)
|
||
MINIAPP_CUSTOM_URL=
|
||
MINIAPP_STATIC_PATH=miniapp
|
||
# URL для редиректа на страницу покупки в мини-приложении (опционально)
|
||
# MINIAPP_PURCHASE_URL=
|
||
MINIAPP_SERVICE_NAME_EN=Bedolaga VPN
|
||
MINIAPP_SERVICE_NAME_RU=Bedolaga VPN
|
||
MINIAPP_SERVICE_DESCRIPTION_EN=Secure & Fast Connection
|
||
MINIAPP_SERVICE_DESCRIPTION_RU=Безопасное и быстрое подключение
|
||
|
||
# Параметры режима happ_cryptolink
|
||
CONNECT_BUTTON_HAPP_DOWNLOAD_ENABLED=false
|
||
HAPP_DOWNLOAD_LINK_IOS=
|
||
HAPP_DOWNLOAD_LINK_ANDROID=
|
||
HAPP_DOWNLOAD_LINK_MACOS=
|
||
HAPP_DOWNLOAD_LINK_WINDOWS=
|
||
# Универсальная ссылка для ПК (если MACOS и WINDOWS не заданы отдельно)
|
||
HAPP_DOWNLOAD_LINK_PC=
|
||
# Кнопка (Подключится) с редиректом (тк ссылки с happ:// тг не поддерживает) - Без установленной ссылки на редирект кнопки (подключится) не будет! Пример: https://sub.domain.sub/redirect-page/?redirect_to=
|
||
HAPP_CRYPTOLINK_REDIRECT_TEMPLATE=
|
||
|
||
# Пропустить принятие правил использования бота
|
||
SKIP_RULES_ACCEPT=false
|
||
# Пропустить запрос реферального кода
|
||
SKIP_REFERRAL_CODE=false
|
||
|
||
# ===== МОНИТОРИНГ И УВЕДОМЛЕНИЯ =====
|
||
MONITORING_INTERVAL=60
|
||
INACTIVE_USER_DELETE_MONTHS=3
|
||
|
||
# Уведомления
|
||
TRIAL_WARNING_HOURS=2
|
||
ENABLE_NOTIFICATIONS=true
|
||
NOTIFICATION_RETRY_ATTEMPTS=3
|
||
MONITORING_LOGS_RETENTION_DAYS=30
|
||
NOTIFICATION_CACHE_HOURS=24
|
||
|
||
# ===== СТАТУС СЕРВЕРОВ =====
|
||
# Режимы: disabled, external_link, external_link_miniapp, xray
|
||
SERVER_STATUS_MODE=disabled
|
||
# Ссылка на внешний мониторинг (для режимов external_link и external_link_miniapp)
|
||
SERVER_STATUS_EXTERNAL_URL=
|
||
# URL метрик XrayChecker (для режима xray)
|
||
SERVER_STATUS_METRICS_URL=
|
||
# Данные Basic Auth (опционально)
|
||
SERVER_STATUS_METRICS_USERNAME=
|
||
SERVER_STATUS_METRICS_PASSWORD=
|
||
# Проверять SSL сертификат при запросе метрик
|
||
SERVER_STATUS_METRICS_VERIFY_SSL=true
|
||
# Таймаут запроса к метрикам (в секундах)
|
||
SERVER_STATUS_REQUEST_TIMEOUT=10
|
||
# Количество серверов на странице в режиме интеграции
|
||
SERVER_STATUS_ITEMS_PER_PAGE=10
|
||
|
||
# ===== РЕЖИМ ТЕХНИЧЕСКИХ РАБОТ =====
|
||
MAINTENANCE_MODE=false
|
||
MAINTENANCE_CHECK_INTERVAL=30
|
||
MAINTENANCE_AUTO_ENABLE=true
|
||
MAINTENANCE_MONITORING_ENABLED=true
|
||
MAINTENANCE_RETRY_ATTEMPTS=1
|
||
MAINTENANCE_MESSAGE=Ведутся технические работы. Сервис временно недоступен. Попробуйте позже.
|
||
|
||
# ===== ЛОКАЛИЗАЦИЯ =====
|
||
# Укажите язык из AVAILABLE_LANGUAGES. При некорректном значении используется ru.
|
||
DEFAULT_LANGUAGE=ru
|
||
AVAILABLE_LANGUAGES=ru,en,ua,zh
|
||
# Включить выбор языка при старте и отображение кнопки в меню
|
||
LANGUAGE_SELECTION_ENABLED=true
|
||
|
||
# Округление цен при отображении (≤50 коп вниз, >50 коп вверх)
|
||
# true: 14.78₽ → 15₽, 14.12₽ → 14₽
|
||
# false: показывать точные суммы с копейками
|
||
PRICE_ROUNDING_ENABLED=true
|
||
|
||
# Часовой пояс
|
||
TZ=Europe/Moscow # или UTC, America/New_York и т.д.
|
||
|
||
# ===== ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ =====
|
||
# Конфигурация приложений для гайда подключения
|
||
APP_CONFIG_PATH=app-config.json
|
||
ENABLE_DEEP_LINKS=true
|
||
APP_CONFIG_CACHE_TTL=3600
|
||
|
||
# ===== BAN SYSTEM INTEGRATION (BedolagaBan) =====
|
||
# Интеграция с системой мониторинга банов BedolagaBan
|
||
# Включить интеграцию с Ban системой
|
||
BAN_SYSTEM_ENABLED=false
|
||
# URL API сервера Ban системы (например: http://ban-server:8000)
|
||
BAN_SYSTEM_API_URL=
|
||
# API токен для авторизации в Ban системе
|
||
BAN_SYSTEM_API_TOKEN=
|
||
# Таймаут запросов к API (секунды)
|
||
BAN_SYSTEM_REQUEST_TIMEOUT=30
|
||
|
||
# ===== СИСТЕМА БЕКАПОВ =====
|
||
BACKUP_AUTO_ENABLED=true
|
||
BACKUP_INTERVAL_HOURS=24
|
||
BACKUP_TIME=03:00
|
||
# Первый запуск автобекапа выполняется в ближайшее время BACKUP_TIME после старта бота,
|
||
# далее копии создаются каждые BACKUP_INTERVAL_HOURS.
|
||
BACKUP_MAX_KEEP=7
|
||
BACKUP_COMPRESSION=true
|
||
BACKUP_INCLUDE_LOGS=false
|
||
BACKUP_LOCATION=/app/data/backups
|
||
|
||
# Отправка бэкапов в телеграм
|
||
BACKUP_SEND_ENABLED=true
|
||
BACKUP_SEND_CHAT_ID=-100123456789 # Замени на ID твоего канала (-100) - ПРЕФИКС ЗАКРЫТОГО КАНАЛА!
|
||
# ВСТАВИТЬ СВОЙ ID СРАЗУ ПОСЛЕ (-100) БЕЗ ПРОБЕЛОВ!
|
||
BACKUP_SEND_TOPIC_ID=123 # Опционально: ID топика
|
||
# Пароль для архива бекапа (опционально). Если задан - бекап отправляется в зашифрованном ZIP с AES
|
||
BACKUP_ARCHIVE_PASSWORD=
|
||
|
||
# ===== ПРОВЕРКА ОБНОВЛЕНИЙ БОТА =====
|
||
VERSION_CHECK_ENABLED=true
|
||
VERSION_CHECK_REPO=fr1ngg/remnawave-bedolaga-telegram-bot
|
||
VERSION_CHECK_INTERVAL_HOURS=1
|
||
|
||
# ===== ЛОГИРОВАНИЕ =====
|
||
LOG_LEVEL=INFO
|
||
LOG_FILE=logs/bot.log
|
||
|
||
# === Ротация логов ===
|
||
# Включить новую систему ротации (по умолчанию старое поведение)
|
||
LOG_ROTATION_ENABLED=false
|
||
# Время ротации (HH:MM)
|
||
LOG_ROTATION_TIME=00:00
|
||
# Хранить архивы N дней
|
||
LOG_ROTATION_KEEP_DAYS=7
|
||
# Сжимать архивы gzip
|
||
LOG_ROTATION_COMPRESS=true
|
||
# Отправлять архивы в Telegram-канал
|
||
LOG_ROTATION_SEND_TO_TELEGRAM=false
|
||
# Канал для логов (если не задан, используется BACKUP_SEND_CHAT_ID)
|
||
LOG_ROTATION_CHAT_ID=
|
||
# Топик в канале (если не задан, используется BACKUP_SEND_TOPIC_ID)
|
||
LOG_ROTATION_TOPIC_ID=
|
||
# Пути к лог-файлам (при LOG_ROTATION_ENABLED=true)
|
||
LOG_DIR=logs
|
||
LOG_INFO_FILE=info.log
|
||
LOG_WARNING_FILE=warning.log
|
||
LOG_ERROR_FILE=error.log
|
||
LOG_PAYMENTS_FILE=payments.log
|
||
|
||
# ===== РАЗРАБОТКА =====
|
||
DEBUG=false
|
||
WEBHOOK_URL=
|
||
WEBHOOK_PATH=/webhook
|
||
WEBHOOK_SECRET_TOKEN=
|
||
WEBHOOK_DROP_PENDING_UPDATES=true
|
||
WEBHOOK_MAX_QUEUE_SIZE=1024
|
||
WEBHOOK_WORKERS=4
|
||
WEBHOOK_ENQUEUE_TIMEOUT=0.1
|
||
WEBHOOK_WORKER_SHUTDOWN_TIMEOUT=30.0
|
||
BOT_RUN_MODE=polling # polling, webhook или both
|
||
|
||
# ===== КОНКУРСНАЯ СИСТЕМА =====
|
||
CONTESTS_ENABLED=false
|
||
CONTESTS_BUTTON_VISIBLE=false
|
||
# Реферальные конкурсы (турниры среди рефералов)
|
||
REFERRAL_CONTESTS_ENABLED=false
|
||
|
||
# ===== АВТОАКТИВАЦИЯ ПОСЛЕ ПОПОЛНЕНИЯ =====
|
||
# Автоматическая покупка из сохранённой корзины после пополнения баланса
|
||
AUTO_PURCHASE_AFTER_TOPUP_ENABLED=false
|
||
# Умная автоактивация: система сама решает — продлить или создать подписку
|
||
# Работает даже без сохранённой корзины. Выбирает максимальный период <= баланса
|
||
AUTO_ACTIVATE_AFTER_TOPUP_ENABLED=false
|
||
# Показывать предупреждение об активации подписки после пополнения баланса
|
||
# Если true - после пополнения показывает сообщение с кнопками: "Активировать", "Продлить", "Добавить устройства"
|
||
SHOW_ACTIVATION_PROMPT_AFTER_TOPUP=false
|
||
|
||
# ===== КНОПКА АКТИВАЦИИ =====
|
||
ACTIVATE_BUTTON_VISIBLE=false
|
||
# ACTIVATE_BUTTON_TEXT=активировать
|
||
|
||
# ===== ЕДИНЫЙ ВЕБ-СЕРВЕР =====
|
||
WEB_API_ENABLED=false
|
||
WEB_API_HOST=0.0.0.0
|
||
WEB_API_PORT=8080
|
||
# Количество воркеров (для продакшена рекомендуется 2-4)
|
||
WEB_API_WORKERS=1
|
||
WEB_API_ALLOWED_ORIGINS=*
|
||
WEB_API_DOCS_ENABLED=false
|
||
# Название и версия API (для документации)
|
||
WEB_API_TITLE=Remnawave Bot Admin API
|
||
WEB_API_VERSION=1.0.0
|
||
# Токен по умолчанию для начальной настройки
|
||
WEB_API_DEFAULT_TOKEN=
|
||
WEB_API_DEFAULT_TOKEN_NAME=Bootstrap Token
|
||
# Алгоритм хеширования токенов
|
||
WEB_API_TOKEN_HASH_ALGORITHM=sha256
|
||
# Логирование запросов
|
||
WEB_API_REQUEST_LOGGING=true
|
||
|
||
# Внешний админ-токен (для интеграции с другими ботами/системами)
|
||
# Токен для доступа через API другого бота
|
||
# EXTERNAL_ADMIN_TOKEN=
|
||
# ID бота, от которого принимается токен
|
||
# EXTERNAL_ADMIN_TOKEN_BOT_ID=
|
||
|
||
MINIAPP_STATIC_PATH=miniapp
|