Впровадження бота для уведомлень та рассилок в мобільному додатку
Telegram-бот як канал рассилки працює краще email: open rate 70–90% проти 20–25%. Але відправити 50 000 повідомлень за раз — означає отримати бан бота від Telegram за flood. Правильна реалізація рассилки враховує rate limits та чергу задач.
Обмеження Telegram Bot API, які не можна ігнорувати
Telegram дозволяє відправляти максимум 30 повідомлень в секунду для звичайного бота та не більше 20 повідомлень в хвилину в один чат. При перевищенні API повертає 429 Too Many Requests з полем retry_after.
Означає, 50 000 одержувачів = мінімум ~28 хвилин чистої відправки при правильному rate limiting. Реалізація через простий цикл for з sendMessage упаде на першій крупній рассилці.
Правильний підхід: черга задач (Bull + Redis або RabbitMQ). Кожне повідомлення — окрема задача в чергу, воркер обробляє з контрольованою швидкістю (25 задач/сек з експоненціальним backoff при 429).
Архітектура системи рассилок
Сервер: Node.js + Bull Queue + Redis. Адміністратор через мобільний додаток створює рассилку (текст, медіа, сегмент аудиторії) → задача потрапляє в чергу → воркер відправляє з потрібною швидкістю → статус рассилки оновлюється у реальному часі.
Мобільний додаток — панель управління: створення рассилки з rich text редактором, вибір сегментів аудиторії, планування по часу, перегляд статистики (відправлено/доставлено/помилки).
Сегменти аудиторії зберігаються в PostgreSQL: теги, активність за останні N днів, мова інтерфейсу. SQL-запит формує список chat_id для конкретного сегмента прямо перед відправкою.
Push-уведомлення в мобільному додатку для адміністратора
Коли рассилка завершена або виникла помилка (наприклад, бот тимчасово заблокований), програма має сповістити адміністратора. Це стандартний FCM push:
-
"Рассилка #42 завершена: 48,231 / 50,000 доставлено"— типnormal -
"Помилка: бот заблокований користувачами (>30%)"— типhigh
На клієнті (Flutter) використовуйте flutter_local_notifications для уведомлень FCM у стані foreground, firebase_messaging для background/terminated.
Аналітика рассилок
Базова метрика — delivery rate. Telegram не повертає факт прочитання (немає read receipts для bot messages у приватних чатах), але повертає помилки: 403 Forbidden — користувач заблокував бота, 400 Bad Request: chat not found — користувач видалив акаунт.
Ці помилки автоматично позначають користувачів як неактивних та виключають з наступних рассилок — важливо для утримання чистоти бази.
Розроблення повної системи (сервер + мобільний додаток управління) — 3–5 тижнів. Інтеграція модуля рассилок в існуючий бот та додаток — 1–2 тижні.







