Розробка Telegram-бота для масових розсилок у мобільному додатку

Чому масова розсилка через Telegram потребує черги завдань? Ми отримуємо багато запитів на інтеграцію Telegram-бота для розсилок. Open rate таких повідомлень сягає 70–90% — проти 20–25% у email. Але пряме відправлення 50 000 повідомлень за раз гарантовано призводить до бану: Telegram відповідає п

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка Telegram-бота для масових розсилок у мобільному додатку
Простий
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Чому масова розсилка через Telegram потребує черги завдань?

Ми отримуємо багато запитів на інтеграцію Telegram-бота для розсилок. Open rate таких повідомлень сягає 70–90% — проти 20–25% у email. Але пряме відправлення 50 000 повідомлень за раз гарантовано призводить до бану: Telegram відповідає помилкою 429 Too Many Requests. Правильна реалізація вимагає врахування rate limits і черги завдань. Ми пропонуємо готове рішення під ключ, яке враховує всі нюанси Telegram Bot API.

У цій статті ви дізнаєтеся, як побудувати відмовостійку систему розсилок, уникнути бану та забезпечити доставку 99% повідомлень. Ми поділимося архітектурними рішеннями, які використовуємо в комерційних проєктах.

Типові проблеми клієнтів: бот блокується після першої масової відправки, падає продуктивність через відсутність буферизації, немає інструментів сегментації. Ці проблеми вирішуються за допомогою черг завдань і динамічної сегментації.

Багато розробників намагаються обійти обмеження через мультіакаунти або збільшення інтервалу. Це неефективно: мультіакаунти порушують правила Telegram, а збільшення інтервалу розтягує розсилку на години. Наш підхід використовує офіційні можливості API та гарантує дотримання лімітів без ризику бану.

Як Telegram обмежує частоту повідомлень?

Telegram дозволяє надсилати максимум 30 повідомлень в секунду для звичайного бота і не більше 20 повідомлень на хвилину в один чат. При перевищенні API повертає 429 Too Many Requests з полем retry_after. Згідно з документацією Telegram Bot API, ці ліміти жорсткі.

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 для конкретного сегменту безпосередньо перед відправкою.

Як налаштувати чергу завдань: покрокова інструкція

  1. Встановіть Redis та запустіть сервер.
  2. Створіть чергу в Node.js за допомогою Bull: const Queue = require('bull'); const messageQueue = new Queue('notifications', { redis: { port: 6379 } });
  3. Додайте в чергу завдання при отриманні команди від адміна: messageQueue.add({ chatId, text });
  4. Налаштуйте воркер з обмеженням швидкості: 25 задач в секунду, з повтором при помилці 429 через 5 секунд.
  5. Запустіть кілька воркерів для паралельної обробки.

Порівняння: черга завдань проти циклу for

Черга з backoff в 10 разів надійніша за прямий цикл for — при 50 000 отримувачів вона знижує кількість помилок 429 до нуля. Цикл for блокує бота, черга ж адаптується до лімітів.

Push-сповіщення для адміністратора

Зазначимо: коли розсилка завершена або виникла помилка (наприклад, бот тимчасово заблокований), додаток має сповістити адміністратора. Використовуємо FCM push:

  • "Розсилка #42 завершена: 48 231 / 50 000 доставлено" — тип normal
  • "Помилка: бот заблокований користувачами (>30%)" — тип high

На клієнті (Flutter) використовуємо flutter_local_notifications для foreground, firebase_messaging для background/terminated.

Аналітика та підтримка чистоти бази

Базова метрика — delivery rate. Telegram не повертає факт прочитання (немає read receipts для bot messages в особистих чатах), але повертає помилки: 403 Forbidden — користувач заблокував бота, 400 Bad Request: chat not found — користувач видалив акаунт.

Ці помилки автоматично позначають користувачів як неактивних і виключають з наступних розсилок — це важливо для підтримки чистоти бази.

Що входить в роботу

Етап Зміст Термін
Аналітика Аудит поточної архітектури, визначення сегментів, налаштування метрик 3–5 днів
Проектування Розробка схеми черг, вибір стеку, створення ТЗ 5–7 днів
Реалізація Серверна частина (Node.js + Bull + Redis), мобільний додаток (Flutter), інтеграція Telegram Bot API 10–15 днів
Тестування Навантажувальне тестування (імітація 50 000 повідомлень), перевірка rate limiting 3–5 днів
Деплой Налаштування сервера, моніторинг, документація, навчання адміністратора 2–3 дні

Порівняння підходів до черг

Рішення Продуктивність Складність Підтримка
Bull + Redis 50 000 повідомлень за 3–5 хвилин Низька Відмінна
RabbitMQ 50 000 за 2–3 хвилини Середня Хороша
Google Cloud Tasks 50 000 за 1–2 хвилини Висока Потрібен GCP
Приклад конфігурації черги в Node.js
const Queue = require('bull'); const messageQueue = new Queue('notifications', { redis: { port: 6379 } }); messageQueue.process(async (job) => { try { await bot.sendMessage(job.data.chatId, job.data.text); } catch (error) { if (error.response && error.response.statusCode === 429) { const retryAfter = error.response.body.retry_after; await job.retry({ delay: retryAfter * 1000 }); } } }); 

Орієнтовні терміни

Повна система (сервер + мобільний додаток) — від 3 до 5 тижнів. Інтеграція модуля в існуючий бот та додаток — від 1 до 2 тижнів. Вартість розраховується індивідуально після оцінки обсягу робіт.

Зв'яжіться з нами для детального обговорення вашого проєкту. Замовте консультацію — ми підберемо оптимальне рішення під ваші завдання.