Рассылка в Telegram-боте: как делать и не попасть под блокировку
Кому бот может написать, какие у Telegram лимиты на рассылку и что будет при превышении, как делить базу на сегменты и чего закон «О рекламе» требует от рекламных сообщений.
Содержание 8 разделов
Рассылка в Telegram-боте нужна, чтобы напомнить клиенту о записи, рассказать о новом поступлении или вернуть того, кто оставил заявку и пропал. Это одна из задач, ради которых бизнес заказывает бота, остальные мы перечислили в статье зачем бизнесу чат-бот. Но бот для рассылки живёт по правилам Telegram. Писать можно не всем, скорость ограничена, а за спам Telegram может отключить бота вместе с аккаунтом владельца. Ниже разбираем, как рассылка устроена изнутри и как делать её так, чтобы люди не блокировали бота.
Кому бот для рассылки может написать
Первым бот не пишет. В документации Telegram это сказано прямо: пользователь должен сам написать боту или добавить его в группу. Поэтому база для рассылки состоит только из тех, кто когда-то нажал «Старт». В этот момент бот сохраняет идентификатор чата, имя из профиля и метку ссылки, по которой человек пришёл, например ?start=vk_spring из рекламы во ВКонтакте. Отсюда вывод, который многих расстраивает. Загрузить в бота список телефонов и разослать по нему сообщения нельзя: номер бот узнаёт, только если человек сам поделился контактом, а к этому моменту он уже в диалоге.
Сервисы, которые обещают рассылку по купленной базе с личных аккаунтов, мы не советуем. Условия Telegram запрещают использовать мессенджер для спама, и за это аккаунт могут заблокировать. У купленной базы к тому же нет согласий ни на рекламу, ни на обработку персональных данных.
Лимиты на рассылку в Telegram-боте
Бесплатно бот отправляет около 30 сообщений в секунду по разным чатам. В один чат можно писать примерно раз в секунду, короткие всплески Telegram допускает, а в группу не больше 20 сообщений в минуту. Для бизнеса это немало: база в 12 000 человек на такой скорости уходит минут за семь. Все цифры собраны на странице лимиты Telegram, остальные ограничения платформы описаны в статье о минусах Telegram.
Если бот торопится, Telegram отвечает ошибкой 429. В ответе есть поле retry_after, то есть число секунд, которое нужно подождать перед повтором. Правильная реакция одна: остановиться на это время и отправить то же сообщение ещё раз. Если ошибку не обрабатывать, часть получателей останется без сообщения.
Для больших рассылок без платных лимитов Telegram в своём FAQ советует растягивать отправку на несколько часов, например на 8–12.
Очередь отправки
Запускать рассылку циклом прямо из обработчика кнопки «Отправить» рискованно. Если сервер перезапустится на середине, уже никто не скажет, кто сообщение получил, а кто нет. Надёжнее сначала сложить получателей в очередь, например в Redis, и отдать их отдельному процессу, который шлёт чуть медленнее лимита и отмечает в базе каждого, кому сообщение ушло. Тогда после сбоя рассылка продолжится с того же места, и дублей не будет.
В конце нужен отчёт. В ПроПорции, нашем дневнике питания в Telegram, администратор присылает боту готовый пост, бот копирует его пользователям и потом сообщает, сколько сообщений отправлено, сколько человек заблокировали бота и сколько было других ошибок.
Платная рассылка за Stars
Платную рассылку добавили в Bot API 7.11, в октябре 2024 года. Её включают в @BotFather, и тогда бот, передавая в методы отправки параметр allow_paid_broadcast, может слать до 1 000 сообщений в секунду. Каждое сообщение сверх бесплатных 30 в секунду стоит 0,1 Telegram Stars. Платит бот со своего баланса и только за успешно отправленные.
Условия жёсткие. На балансе бота должно лежать не меньше 100 000 Stars, а активных пользователей в месяц должно быть не меньше 100 000. Условия Telegram для разработчиков вдобавок требуют пользоваться повышенным лимитом добросовестно и прямо запрещают рассылать с ним спам. Большинству бизнес-ботов платная рассылка недоступна, да и не нужна: несколько тысяч сообщений уходят за минуты и бесплатно. Она пригодится крупному боту, которому надо предупредить всех разом, скажем о старте распродажи в назначенный час.
Сегменты и персонализация
Одна рассылка на всю базу почти всегда кому-то не подходит. Если у вас точки в двух городах, акция в Казани клиентам из Самары не нужна, и кто-то из них после такого сообщения заблокирует бота. Сегмент собирают из того, что бот уже знает о человеке. Город спрашивают при первом запуске, интересы человек отмечает кнопками, а этап воронки приходит из CRM: у кого незакрытая заявка, кто покупал год назад, кто был на вебинаре. Каждая группа получает своё сообщение. Как бот обменивается данными с amoCRM и Битрикс24, мы разобрали в статье интеграция Telegram-бота с CRM.
С именем в обращении осторожнее. Бот видит имя из профиля Telegram, а там бывает что угодно, от «Мама» до набора эмодзи. Надёжнее спросить имя в диалоге или взять его из CRM. И всё же конкретика работает сильнее имени: напоминание о записи с датой и мастером, подборка по прошлой покупке, статус заказа.
Время и частота
Часовой пояс пользователя Telegram боту не сообщает. Если клиенты живут в разных регионах, время отправки считают по городу из базы, иначе вечерняя рассылка в 20:00 по Москве придёт во Владивосток в три часа ночи. Для несрочных новостей у Telegram есть параметр disable_notification: сообщение придёт без звука. Частоту Telegram не нормирует, и общей цифры для всех ниш нет. Ориентир даёт тот же отчёт. Если после рассылки бота заблокировали заметно больше людей, чем обычно, частоту снижают или сужают сегмент.
Отписка и заблокировавшие бота
Перестать получать рассылку человек может всегда: достаточно заблокировать бота. Лучше дать ему путь мягче. Под рекламными сообщениями ставят кнопку «Отписаться от новостей», а в меню команду с тем же действием. Отписавшийся остаётся в боте, получает статусы заказов и напоминания о записи, но пропадает из рекламных сегментов.
Когда пользователь блокирует бота, Telegram присылает обновление my_chat_member, а попытка отправить сообщение заканчивается ошибкой 403. Такого человека помечают в базе как неактивного и больше ему не пишут. Если он разблокирует бота, придёт такое же обновление, и его можно вернуть в список.
Реклама и согласие на рассылку
Статья 18 закона «О рекламе» разрешает распространять рекламу по сетям электросвязи только с предварительного согласия адресата. Доказывать, что согласие было, придётся тому, кто рассылает. А если человек попросит прекратить, рекламу в его адрес нужно остановить немедленно.
Нажатие «Старт» говорит о том, что человек хочет пользоваться ботом. Хватит ли этого как согласия на рекламу, заранее сказать нельзя, поэтому надёжнее спросить отдельно: кнопкой «Получать акции и новости» с понятным текстом, а дату и формулировку согласия сохранить в базе. Сервисные сообщения держите отдельно от рекламных, без акций и промокодов внутри. Это не юридическая консультация, и если рассылка рекламная, а база большая, текст согласия лучше показать юристу.
Рассылка в MAX
У MAX свои ограничения. По документации API бот отправляет не больше двух сообщений в секунду в один диалог и не больше 30 запросов в секунду к API в целом. Когда пользователь останавливает или удаляет бота, приходит событие bot_stopped, а при повторном запуске bot_started.
Серьёзнее другое. Требования MAX к приложениям (пункт 1.5) запрещают рассылать через API рекламные, маркетинговые и другие массовые сообщения, кроме случаев, прямо предусмотренных договором с компанией. Прежде чем переносить рассылку в MAX, условия нужно уточнить у платформы.
Как сделать рассылку в Telegram-боте?
Нужен бот, который сохраняет всех, кто его запустил, и админка, где вы пишете сообщение и выбираете сегмент. Отправку ведёт очередь на сервере: она держит скорость чуть ниже лимита в 30 сообщений в секунду, ждёт при ошибке 429 и отмечает тех, кто заблокировал бота. В конце администратор получает отчёт.
Можно ли сделать бота для рассылки сообщений в тг по базе номеров?
Нет. Бот пишет только тем, кто сам его запустил или написал ему. Рассылка с личных аккаунтов по купленной базе нарушает условия Telegram, за это аккаунт могут заблокировать.
Сколько сообщений в секунду отправляет бот для рассылки?
Бесплатно около 30 сообщений в секунду по разным чатам и примерно одно в секунду в один чат. Платная рассылка за Stars поднимает лимит до 1 000, но только у ботов со 100 000 активных пользователей в месяц и 100 000 Stars на балансе.
Сколько стоит чат-бот для рассылки?
Рассылку обычно делают частью бота, который принимает заявки, записывает или продаёт. Бот для заявок и записи у нас стоит от 50 000 ₽ и делается от 2 недель, а сегменты, связь с CRM и отчёты считаем в смете после бесплатного разбора. Подробнее на странице разработка Telegram-ботов.