Кейс: Бот с регистрацией и автоматическим оповещением в дни рождения пользователей.
Иногда разработчики сталкиваются с задачей автоматических оповещений на указанную пользователем дату. В этой статье мы рассматриваем решение этой задачи, взяв в пример бота с напоминаниями о днях рождения.
Большинство разработчиков используют способ периодической проверки текущей даты и даты, записанной у пользователя, для реализации этого функционала. Однако в этой статье мы рассмотрим более простой и гораздо более оптимизированный способ реализации.
Ознакомиться с примером мини-приложения можно здесь.
Автор: @RDGlessons
Разработка
Переменные
Откройте вкладку "Переменные" в вашем боте и добавьте следующие переменные:
- b_day - текстовая переменная.
- b_day_format - переменная с типом формула. В качестве формулы введите выражение: `DATE_FORMAT( b_day , "d.m.2025 9:00")`, где вместо 9:00 можете указать любое другое время (По UTC) уведомления с постом, в день дня рождения пользователя.
- b_day - текстовая переменная.
- b_day_format - переменная с типом формула. В качестве формулы введите выражение:
Вместо 9:00 можете указать любое другое время (По UTC) уведомления с постом, в день дня рождения пользователя.
Конструктор
Для разработки такой структуры нам потребуется всего 2 блока мини-приложения.
1. Создаём мини-приложение с произвольным названием, у меня оно будет называться "Регистрация дня рождения".
В него мы добавим блок формы ввода с запросом даты рождения и её записи:
Добавьте блок "Форма ввода", в качестве типа ввода выберите "Выбор даты".
Откройте дополнительные настройки, поставьте галочку возле пункта "Дублировать ответ в переменную" и укажите переменную b_day. Поставьте галочку у пункта "Обязательная форма" и уберите у "Повторное прохождение". По желанию можете добавить заголовок и описание блоку.
Ниже появится блок фиксированной клавиатуры, откройте созданную в блоке кнопку, задайте произвольный текст и цвет после чего выберите тип действия "Переход к Мини-Приложению" указав наше следующее мини-приложение с названием "Дата указана".
Откройте "Действия" данного мини-приложения и добавьте действие "Отправить запрос".
В качестве ссылки для запроса укажите адрес https://api.puzzlebot.top/?token=XXX&method=postSend, где вместо XXX будет токен из Входящих запросов вашего бота. Подробнее...
В качестве типа запроса можно указать GET, либо POST. Я буду использовать GET.
Добавьте следующие параметры в запрос (параметры состоят из ключей и значений соответственно):
- chats_ids: private; Вместо private можно указать айди группы или канала, куда будет выслано поздравление.
- type: message; Вместо message можно указать media, для того что-бы отправить любой медиа-файл (Необходимо добавить параметр file_id).
- text: Можете указать любой произвольный текст, который будет выслан в день рождения пользователя.
- pin_post: true; Можете указать false, если не хотите чтобы пост закреплялся.
- date: {{b_day_format}}
2. Создайте мини-приложение с произвольным названием, в моём случае оно назвается "Дата указана". В нём вы можете добавить текст, который выйдет по указанию даты рождения. Я, например, добавил стикер и текст с благодарностью.
Вуаля, всё готово 🎉
Осталось только протестировать.