🔁
PuzzleBot: как НЕ рубить доступ сразу после отключения рекуррента(оставляем доступ до конца оплаченного периода)
Частая ситуация: пользователь отключил рекуррентные платежи, но подписка у него ещё действует (период оплачен).
Если в этот момент вы сразу снимаете категорию/доступ — это ошибка и лишний негатив.
Покажу, как сделать правильно на примере реального бота:
https://t.me/SonnikProBot✅ Идея решения 1. Берём дату окончания доступа (в
PuzzleBot это “Дата отключения” в настройках рекуррента).
2. Считаем, сколько дней осталось до окончания.
3. По этому числу запускаем нужные действия: напоминания / финальное завершение / снятие доступа.
1) Берём системную переменную даты
Настройки → Рекуррентные платежи → ваша подписка → Доп. настройки
Копируем переменную «Дата отключения».
2) Делаем переменные (важно)
🔹 Переменная 1: формула
• DateSabsOff
• Тип: Формула
• Значение: DAYS_BETWEEN(ДатаОтключения; CURRENT_DATE)
(формулу можно подсмотреть в базе знаний PuzzleBot → операции с датой)
⚠️ Лайфхак: формулы нельзя напрямую сравнивать в условиях, поэтому нужна вторая переменная.
🔹 Переменная 2: число
• DateSabs
• Тип: Число
Сюда будем записывать результат формулы.
3) Команда-прослойка: перезапись переменной
Создаём команду, например: «Перезапись переменной Pro 99»
Внутри:
• Действие: Изменить переменную
• DateSabs = DateSabsOff
• В доп. настройках ставим «Выполнить ДО» (чтобы значение обновилось до логики)
Для теста можно временно вывести текстом DateSabs, потом удалить.
4) Условие: проверка дней до окончания подписки
Создаём условие: «Условие проверки окончания подписки»
Правила:
• Если DateSabs = 2 → команда «До окончания подписки 2 дня»
• Если DateSabs = 1 → команда «До окончания подписки 1 день»
• Если DateSabs = 0 → условие «Проверка наличия рекуррента»
• Иначе → ничего не делать
Команды «1 день / 2 дня» — обычные текстовые, по желанию + мотивация продлить.
5) Сценарий, который всё запускает по расписанию
Создаём сценарий: «Наличие подписки Pro 99»
В настройках сценария оставляем: ✅ Перезапуск при повторном вызове
Добавляем пост:
• Тип отправки: Через
• Например: через 27 дней от начала сценария (чтобы не упереться в февраль)
• Повторение: ограниченное (например, 5 раз — на всякий случай)
• Категория пользователей: Pro 99
• Действие поста: вызвать команду «Перезапись переменной Pro 99»
И ОБЯЗАТЕЛЬНО переключить на «Запланирован».
6) Связываем всё в команду
Возвращаемся в команду «Перезапись переменной Pro 99» и добавляем вторым действием:
• вызвать «Условие проверки окончания подписки»
Получается цепочка:
Сценарий → команда перезаписи → условие по дням → нужные действия
7) Финал: проверка, есть ли активная подписка (или уже нет)
Создаём условие: «Условие проверки наличия рекуррента»
Правило:
• Тип: Рекуррентный платёж → наличие подписки → Pro 99
• Если подписка ЕСТЬ → оставляем пользователя в сценарии (или обновляем список сценариев)
• Если подписки НЕТ → делаем финальные действия:
• снимаем категорию Pro 99
• убираем доступ к ресурсам
• переводим на базовый тариф / другое меню
🎯 ИтогПользователь может отключить рекуррент хоть в первый день,
но доступ останется до конца оплаченного периода, а потом корректно завершится автоматически.
Если нужно — сделаю продолжение:
✅ автопродление доступа при повторной оплате,
✅ мягкие прогревы «за 2/1 день»,
✅ и защиту от “сломанных дат/сбоев подписки”.
💬 Если хотите такую же логику в вашем боте — пишите в ЛС, подскажу или соберу под ключ.
p.s. видео с чуть более детальным рассказом и наглядно
посмотреть можно здесь