@kator

Как организовать уведомления в Telegram с различными интервалами для каждого пользователя?

Интересует не только Telegram, а вообще как создается такое в целом - email рассылка по расписанию (для каждого пользователя свое расписание), уведомления на сайте и другое.
Допустим, один пользователь подписался на мой канал 20 марта и хочет получать некие уведомления каждую неделю (то есть, 27 марта, потом 3 апреля, потом 10 и т.д.) другой подписался 24 марта и опять же хочет каждую неделю, но только выходит, что по своему счетчику (31 марта - 7 апреля и т.д.).

Как такое делается на серверной стороне? Какие-то танцы с Cron'ом? Или может есть инструменты для таких вот "интервалов"?
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
i__dmitry
@i__dmitry
Weaving a web
Я генерировал раписания постов для каждого пользователя, когда стояла аналогичная задача.
Пользователь регистрируется у бота, и в этот момент для существующих в БД постов к рассылке генерируется расписание для данного пользователя. Далее кроном дергается скрипт, который проверяет, есть ли на данный момент расписание для рассылки, и отправляет сообщения.
Не уверен в оптимальности такого решения, но в моем случае получилось достаточно гибко.
Можно попробовать сделать нечто аналогичное.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vasiiil
Предполагаю, что в БД должны быть следующие поля: дата подписки и интервал оповещений (1 день, 7 дней, 30 дней и тд)
Запускать скрипт по крону раз в сутки и выбирать только тех юзеров, у которых разница в днях между датой подписки и настоящей датой кратна интервалу подписки:
DATEDIFF(DAY, '2020-03-11T15:12:13', GETDATE()) / 7 = 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы