Skip to main content

Обзор

Тарифы — готовые пакеты подписок с фиксированными параметрами. Используются при SALES_MODE=tariffs (по умолчанию). В отличие от режима конструктора, пользователь выбирает тариф целиком, а не собирает параметры по шагам.
Управление тарифами доступно из админ-панели бота в Telegram и через Cabinet Admin API. При первом запуске бот автоматически создает тариф “Стандартный” с ценами из .env.

Создание тарифа

Через админ-панель бота

Мастер создания (6 шагов): Шаг 1: Название
  • 2-50 символов
  • Примеры: “Базовый”, “Премиум”, “Бизнес”
Шаг 2: Трафик
  • Целое число в ГБ
  • 0 = безлимитный трафик
Шаг 3: Устройства
  • Количество устройств (минимум 1)
Шаг 4: Уровень тарифа (tier)
  • Число от 1 до 10
  • Влияет только на визуальное отображение (1 = базовый)
Шаг 5: Тип тарифа
  • Периодический — оплата за период (30/90/180/360 дней)
  • Суточный — ежедневное списание
Шаг 6: Цены
  • Для периодического: формат дни:цена_в_копейках через запятую
  • Для суточного: цена в рублях за день (например, 50 или 99.90)
После создания тариф сразу активен и доступен пользователям.

Через Cabinet Admin API

Принимает JSON со всеми полями тарифа.

Поля тарифа

Основные

Параметры подписки

Серверы

Ценообразование

Суточный тариф

Тип тарифа (периодический/суточный) выбирается при создании и не может быть изменен после.

Пользовательский выбор дней

При включении пользователь видит кнопки +/- для выбора срока вместо фиксированных периодов. Цена = price_per_day_kopeks * количество_дней.

Пользовательский выбор трафика

Стоимость трафика прибавляется к стоимости периода:

Докупка трафика

Сброс трафика

Триал

Только один тариф может быть триальным. При назначении тарифа триальным флаг автоматически снимается со всех остальных.

Ограничение по промо-группам

Тарифы можно ограничить для определенных промо-групп:
  • Если у тарифа нет привязанных промо-групп — он доступен всем
  • Если у тарифа есть привязанные промо-группы — он виден только пользователям из этих групп
Настройка через кнопку Промо-группы на странице тарифа в админке. Можно включать/выключать отдельные группы.

Редактирование

На странице тарифа в админке доступны кнопки для редактирования каждого поля:

Сортировка

Тарифы отображаются в порядке display_order (по возрастанию). Для изменения порядка:
  • Cabinet Admin API: PUT /cabinet/admin/tariffs/order с массивом ID в нужном порядке
  • Админ-панель бота: редактирование display_order каждого тарифа

Удаление

При удалении тарифа:
  1. Показывается предупреждение с количеством активных подписок на этом тарифе
  2. Требуется подтверждение
  3. Подписки не удаляются — у них обнуляется привязка к тарифу (tariff_id = NULL)

Отображение пользователю

В списке тарифов пользователь видит:
  • Название тарифа
  • Трафик и количество устройств
  • Минимальную цену (с учетом скидок промо-группы)
Примеры:

Скидки промо-групп

Если пользователь состоит в промо-группе со скидками за период, скидки отображаются на кнопках выбора периода:

Формула цены

Периодический тариф

С пользовательским выбором дней:
С пользовательским выбором трафика:

Суточный тариф

Списание происходит автоматически каждый день. При недостатке баланса подписка ставится на паузу (is_daily_paused).

Синхронизация цен

После любого изменения тарифов (создание, редактирование, удаление, переключение активности) глобальный словарь PERIOD_PRICES автоматически пересчитывается из БД. Перезапуск бота не требуется.

Управление сменой тарифа

Пользователь с активной подпиской может перейти на другой тариф. Направление смены контролируется двумя переменными окружения: Сравнение цен тарифов происходит по стоимости за 30-дневный период. Возможные комбинации:
При смене тарифа оставшиеся дни подписки пересчитываются пропорционально разнице в стоимости.

Связанные настройки