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 → стандартный цвет секции.

Rich-главное меню

Начиная с v3.64.0 главное меню умеет рендериться средствами Bot API 10.1: заголовки, таблица подписок, сворачиваемые блоки акций и даты в часовом поясе пользователя.
Что появилось в rich-меню по версиям:
  • v3.64.0 — базовый рендер, продление из кабинета, расход трафика, логотип, эффект 🎉, кнопки «Подключить» и «Активировать триал» в таблице, сворачиваемый блок подписок;
  • v3.66.0 — режим без логотипа (none), корректная передача премиум-эмодзи;
  • v3.67.0 — кликабельные юзернеймы, починены даты подписок дальше ~3 лет.
Требуется telegram-bot-api с поддержкой Bot API 10.1+ (официальный сервер поддерживает). Если возможности недоступны, бот сам откатывается на классический рендер до перезапуска — вручную ничего выключать не нужно.В .env.example ключи MAIN_MENU_RICH_* намеренно закомментированы: заданное в .env значение блокирует изменение настройки из админки на лету.
Известные id эффектов: 🎉 5046509860389126442, ❤️ 5044134455711629726, 🔥 5104841245755180586.

Кнопка «Меню» с веб-кабинетом

Нижняя кнопка Меню в Telegram может открывать веб-кабинет как WebApp (v3.67.0). Бот при этом продолжает работать обычными сообщениями и inline-кнопками — это не то же самое, что MAIN_MENU_MODE=cabinet.
MENU_BUTTON_WEBAPP_URL принимает только https. Если оставить пустым — берётся MINIAPP_CUSTOM_URL.
Настройка применяется при старте бота. При MENU_BUTTON_WEBAPP_ENABLED=false существующая кнопка меню не трогается — автоматического отката к стандартной кнопке нет, её нужно снять вручную.

Видео в стартовом меню

С v3.67.0 на /start можно отдавать видео вместо картинки. Файл загружается из кабинета: бот сохраняет file_id в настройках и переиспользует его, сам файл на диске не хранится.

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

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

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

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

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

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

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

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

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

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

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

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

Кнопки быстрых сумм пополнения настраиваются per-метод в базе (админ-панель → 💸 Быстрые суммы), а не через .env. Переменных DISABLE_TOPUP_BUTTONS, HIDE_TOPUP_BUTTONS и YOOKASSA_QUICK_AMOUNT_SELECTION_ENABLED в боте нет — раньше они ошибочно упоминались в документации. Подробнее: Кнопки быстрых сумм.

Режим продаж

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

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

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

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

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

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)

Типизированные шаблоны по причине бана

С v4.1.0 уведомление зависит от причины, которую прислал BedolagaBan — под каждую есть свой шаблон:
Шаблоны поддерживают HTML-разметку Telegram. Общий выключатель ENABLE_NOTIFICATIONS действует и на них: при выключенных уведомлениях типизированные баны не отправляются.

Rich-вид админ-уведомлений

Сообщения в админ-чат (уведомления, логи, статистика, сводка запуска) рендерятся средствами Bot API 10.1: заголовки, таблицы, сворачиваемые трейсбеки (v3.65.0). Ключ намеренно закомментирован в .env.example, чтобы настройка оставалась редактируемой из админки.

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

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 можно изменить в рантайме через админ-панель бота. Они сохраняются в БД и применяются поверх переменных окружения.
Обратное тоже верно: значение, явно заданное в .env, приколачивает настройку — изменить её из админки на лету уже нельзя. С v3.64.0 админка честно об этом сообщает при сохранении, а не делает вид, что настройка применилась.Поэтому ключи, которые задумывались редактируемыми на лету (MAIN_MENU_RICH_*, ADMIN_NOTIFICATIONS_RICH_ENABLED, USER_ACTION_LOG_*), в .env.example намеренно закомментированы.
С v4.0.0 настройки, названия которых начинаются с глагола, разложены по осмысленным категориям в дереве админки — раньше они сваливались в общую кучу.