Skip to main content

Обзор

Бот предоставляет обширные возможности кастомизации интерфейса: от логотипа и структуры меню до цветов кнопок и шаблонов email. Настройки применяются через переменные окружения, а многие из них можно изменить без перезапуска через админ-панель.
Часть функций работает только при установленном Cabinet WebApp. Такие настройки отмечены значком 🔗 Cabinet.

Логотип и брендинг

Логотип бота

Бот может отправлять логотип вместе с каждым сообщением — изображение прикрепляется автоматически.

Названия сервиса

Брендинг Cabinet (🔗 Cabinet)

При установленном Cabinet доступна полная кастомизация через API /cabinet/branding/*: Цвета темы по умолчанию:

Режим главного меню

Бот поддерживает два режима отображения главного меню.

Режим default

Классический режим — все кнопки работают как стандартные инлайн-кнопки Telegram с callback-обработчиками внутри бота.

Режим cabinet

Кнопки меню становятся WebApp-кнопками и открывают соответствующие разделы Cabinet MiniApp.
Режим cabinet требует установленного Cabinet и заполненного MINIAPP_CUSTOM_URL.
Алиасы режимов (для обратной совместимости):
  • classic, full, standarddefault
  • text, text_only, minimalcabinet

Стиль кнопок (Bot API 9.4)

В режиме cabinet кнопки поддерживают цветовое оформление:
Автоматические цвета по секциям: Баланс — синий, Подписка — зелёный, Купить — зелёный, Партнёрка — синий, Подключиться — зелёный. Приоритет стиля: параметр кнопки → переопределение в БД → CABINET_BUTTON_STYLE → стандартный цвет секции.

Динамическое меню

При включении структура меню управляется через API, а не задаётся в коде.

Редактор меню

Визуальная настройка структуры меню Cabinet: drag-and-drop, кастомные URL-кнопки, стили, иконки, мультиязычные подписи.

Кнопка «Подключиться»

5 режимов работы кнопки подключения:

Настройки для Happ

Гайд подключения

Файл app-config.json содержит конфигурацию приложений для инструкции подключения. Кэшируется на время APP_CONFIG_CACHE_TTL секунд.

Видимость кнопок и разделов

Переключатели интерфейса

Переключатели функций (влияют на интерфейс)

Режим продаж

Простая покупка

Упрощённый режим покупки в одно нажатие с фиксированными параметрами.

Выбор трафика

Описания платежей

Описания в чеках и платёжных системах настраиваются для избежания блокировок:

Display Name провайдеров

Название каждого провайдера в интерфейсе настраивается:

Локализация

Языки

Пользователь может переключить язык в любой момент через настройки.

Валюта и форматирование

Все цены хранятся в копейках. Валюта — рубли (зашита в код).

Процесс регистрации

Шаги при первом запуске бота (/start):
  1. Выбор языка — если LANGUAGE_SELECTION_ENABLED=true
  2. Правила использования — если SKIP_RULES_ACCEPT=false
  3. Политика конфиденциальности
  4. Реферальный код — если SKIP_REFERRAL_CODE=false
  5. Главное меню

Обязательная подписка на каналы

Система поддерживает мультиканальную подписку с управлением через бот и Cabinet. Каналы добавляются через админ-панель, а не через переменные окружения.

Подробная документация

Настройка, мультиканальная подписка, цветные кнопки, архитектура кэширования.

Управление контентом

Текстовый контент (правила, FAQ, оферта, политика конфиденциальности) управляется через две системы:

Файлы локализаций

Директория locales/ содержит тексты для каждого языка. Бот загружает их при запуске.

Переопределение через админ-панель

Администратор может изменять тексты контента через бота без перезапуска. Значения сохраняются в базе данных (SystemSetting) и применяются поверх файлов локализаций. Редактируемый контент:
  • Правила использования
  • FAQ
  • Оферта / договор
  • Политика конфиденциальности

Обработка неизвестных сообщений

Бот отвечает сообщением «Не понимаю эту команду» на любые сообщения, отправленные вне активного диалога (FSM-состояния). Это относится к:
  • Текстовым сообщениям, не являющимся командами
  • Фотографиям, видео, документам и другим медиафайлам
Если пользователь находится в активном диалоге (например, вводит реферальный код, сумму пополнения или текст тикета), медиафайлы обрабатываются в контексте этого диалога.

Статус серверов

Алиасы: off/nonedisabled, external/linkexternal_link, miniapp/webappexternal_link_miniapp, xraychecker/metricsxray.

Шаблоны в Remnawave

Настройка отображения пользователей в панели Remnawave:
Доступные плейсхолдеры: Username автоматически очищается до [A-Za-z0-9_-], максимум 36 символов.

Сообщения и уведомления

Кастомизация сообщений бана (BedolagaBan)

Сообщение техработ

Email-уведомления (🔗 Cabinet)

Email-уведомления работают только при CABINET_ENABLED=true и настроенном SMTP.

SMTP

Типы email-уведомлений

Бот поддерживает 22+ типа email-уведомлений:

Кастомизация шаблонов

Каждый тип уведомления имеет встроенный HTML-шаблон с поддержкой всех языков. Администратор может переопределить шаблон через Cabinet API для конкретного типа и языка. Доступные переменные в шаблонах: {username}, {amount}, {period}, {days_left}, {reason}, {verification_url}, {reset_url}, {referral_name}, {required}, {warning_message}. Все шаблоны содержат кнопку «Открыть кабинет» со ссылкой на CABINET_URL.

OAuth-авторизация (🔗 Cabinet)

Для каждого провайдера нужны *_CLIENT_ID и *_CLIENT_SECRET.

Аналитика (🔗 Cabinet)

Настраиваются через Cabinet API /cabinet/branding/*.

Три уровня конфигурации

Бот использует трёхуровневую систему настроек:
  1. Переменные окружения (.env) — основной источник, ~200+ параметров
  2. БД-переопределения (SystemSetting) — администратор меняет настройки без перезапуска через админ-панель
  3. Cabinet Branding (SystemSetting) — настройки темы и брендинга кабинета через REST API (🔗 Cabinet)
Многие настройки из .env можно изменить в рантайме через админ-панель бота. Они сохраняются в БД и применяются поверх переменных окружения.