Общая схема
При первом запуске/start пользователь проходит цепочку шагов. Каждый шаг можно пропустить или настроить.
/start <код> и обрабатывается автоматически.
Шаг 1. Проверка подписки на каналы
Если включена обязательная подписка (CHANNEL_IS_REQUIRED_SUB=true) — бот не пустит дальше, пока пользователь не подпишется на все обязательные каналы.
Пользователь видит кнопки каналов (синие для неподписанных, зелёные для подписанных) и кнопку «Я подписался». После подписки deeplink-параметр восстанавливается из Redis и регистрация продолжается.
Если
CHANNEL_IS_REQUIRED_SUB=false — шаг пропускается полностью.Подробнее: обязательная подписка на каналы
Мультиканальная подписка, цветные кнопки, автодеактивация, управление через бот и Cabinet.
Шаг 2. Выбор языка
Если включён выбор языка — пользователь видит кнопки с доступными языками.🌐 Выберите язык / Choose your language: с inline-кнопками.
Если LANGUAGE_SELECTION_ENABLED=false — автоматически назначается DEFAULT_LANGUAGE и шаг пропускается.
Шаг 3. Принятие правил
Пользователь видит текст правил с кнопками «Принять» / «Отклонить».SKIP_RULES_ACCEPT=true — шаг пропускается полностью.
Текст правил настраивается в админ-панели или через файлы локализации. Для каждого языка свой текст.
Шаг 4. Политика конфиденциальности
После принятия правил бот показывает политику конфиденциальности (если она включена в админ-панели). Что видит пользователь: текст политики с кнопками «Принять» / «Отклонить». Шаг появляется только если:- Политика включена в админ-панели (Настройки → Контент → Политика конфиденциальности)
- Текст политики заполнен (или есть дефолтный текст в локализации)
Шаг 5. Реферальный код
Пользователь видит вопрос: «У вас есть реферальный код?» с полем ввода и кнопкой «Пропустить».- Реферальный код — код другого пользователя. При вводе применяется реферальная связь.
- Промокод — если реферальный код не найден, бот проверяет промокоды. Если валидный — сохраняет и активирует после создания пользователя.
- Невалидный код — сообщение: «Неверный реферальный код или промокод». Можно попробовать снова или нажать
/startдля продолжения без кода.
SKIP_REFERRAL_CODE=true- Пользователь пришёл по deeplink с реферальным кодом (
/start <ref_code>) - Пользователь пришёл по ссылке рекламной кампании (
/start <campaign_parameter>)
Шаг 6. Завершение регистрации
После прохождения всех шагов:- Создаётся пользователь в БД (или восстанавливается удалённый)
- Применяется реферальная связь (если был код)
- Активируется промокод (если был введён)
- Применяется бонус рекламной кампании (если пришёл по deeplink кампании)
- Выдаётся триал (если настроен)
- Показывается главное меню
Deeplinks
Бот обрабатывает параметры/start <payload> в следующем порядке:
- Рекламная кампания — если payload совпадает с
start_parameterактивной кампании → применяется бонус кампании - Реферальный код — если кампания не найдена → payload сохраняется как реферальный код
https://t.me/your_bot?start=<payload>
Повторный /start (существующий пользователь)
Если пользователь уже зарегистрирован и нажимает /start:
- Обновляются username, имя, фамилия (если изменились)
- Показывается главное меню
- Реферальная ссылка не применяется (только для новых)
- Кампания не применяется (только для новых)
Конфигурация: быстрый старт без лишних шагов
Для максимально быстрой регистрации (сразу в главное меню):Устранение проблем
Пользователь застрял на вводе реферального кода
Если пользователь ввёл невалидный код и не может продолжить — ему нужно отправить/start для перезапуска регистрации.
Deeplink не применился
Если пользователь пришёл по реферальной ссылке, но подписка на канал обязательна — deeplink сохраняется в Redis (TTL 1 час) и применяется после подписки на канал. Если прошло больше часа — deeplink теряется.«Вы уже зарегистрированы, реферальная ссылка не может быть применена»
Реферальная связь устанавливается только при первой регистрации. Если пользователь уже зарегистрирован — реферальный код не применяется.Бот не отвечает на /start
- Проверьте что бот запущен:
docker compose ps - Проверьте логи:
docker compose logs -f bot - Если включена обязательная подписка на каналы — убедитесь что бот является администратором каждого обязательного канала
