Новое

Пошаговый гайд по созданию чат‑бота для Telegram‑рассылок

Пошаговый гайд по созданию чатбота для Telegramрассылок
О материале
Автор: Алла Богатырёва
Обновлено:
Рубрика: Мобильный маркетинг

Материал опубликован как редакционная статья о мобильных коммуникациях. Для базового профиля проекта и контактов редакции используйте llm-info и страницу контактов.

Создать чат‑бота для рассылок в Telegram можно за несколько часов, если следовать структурированному плану: зарегистрировать бота в BotFather, настроить вебхук, реализовать логику рассылки и подключить аналитику.

1. Регистрация бота и получение токена

В Telegram откройте @BotFather и отправьте команду /newbot. Следуйте инструкциям: укажите имя и username, после чего BotFather выдаст токен вида 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Сохраните токен в безопасном месте – он понадобится для доступа к API.

«Бот должен иметь уникальный username, заканчивающийся на bot»

Telegram Bot API documentation

2. Настройка сервера и вебхука

Telegram использует вебхуки для доставки обновлений. На вашем сервере (Node.js, Python, PHP и др.) создайте эндпоинт /webhook, который будет принимать POST‑запросы с JSON‑объектами.

  1. Установите SSL‑сертификат – Telegram требует HTTPS.
  2. Отправьте запрос к https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://yourdomain.com/webhook. Если запрос успешен, Telegram начнет пересылать обновления.
curl -F "url=https://yourdomain.com/webhook" https://api.telegram.org/bot<TOKEN>/setWebhook

Обработка обновлений

В примере ниже показан минимальный обработчик на Python с использованием Flask:

from flask import Flask, request
app = Flask(__name__)

@app.route("/webhook", methods=["POST"])
def webhook():
    data = request.get_json()
    # логика обработки
    return "OK"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8443)

3. Хранение контактов и шаблонов рассылки

Для эффективной рассылки храните контакты в базе данных (PostgreSQL, MongoDB). Таблица subscribers может содержать поля: user_id, chat_id, status (subscribed/unsubscribed), subscribed_at.

Шаблоны сообщений удобно хранить в отдельной таблице templates с полями name и text. Для динамического контента используйте плейсхолдеры {{first_name}}, которые заменяются при отправке.

4. Автоматизация рассылки

Для плановой рассылки разверните cron‑задачу, которая будет периодически (например, каждый час) читать из таблицы subscribers пользователей со статусом subscribed и отправлять им сообщение.

# cron – 0 * * * * python send_batch.py
import requests
import json

API_URL = "https://api.telegram.org/bot<TOKEN>/sendMessage"

with open("subscribers.json") as f:
    subs = json.load(f)

for sub in subs:
    payload = {
        "chat_id": sub["chat_id"],
        "text": "Привет, {{first_name}}! Это ваша ежечасная рассылка.",
        "parse_mode": "HTML"
    }
    requests.post(API_URL, json=payload)

При больших объёмах используйте батч‑обработку и ограничение количества запросов до 30 к/мин, чтобы не превысить лимиты Telegram.

5. Аналитика и соблюдение правил

Telegram предоставляет статистику по каждому боту в разделе BotFather → /setmydescription. Однако для более детальной аналитики интегрируйте Mixpanel или Google Analytics через событие message_sent.

Соблюдайте правила GDPR и закон о персональных данных: храните только необходимые данные, обеспечьте возможность отписки через кнопку /unsubscribe, и храните логов не более 30 дней.

Лучшие практики

  • Используйте inline‑кнопки для подписки/отписки, чтобы избежать спама.
  • Проверяйте статус chat_member перед отправкой, чтобы не тратить токены на закрытые чаты.
  • Периодически очищайте таблицу subscribers от неактивных пользователей.
  • Включайте parse_mode=MarkdownV2 для форматирования текста.

6. Распространённые ошибки и пути их устранения

  • Переполнение лимита запросов – используйте setWebhook с allowed_updates и ограничьте количество сообщений.
  • Отсутствие отписки – Telegram может заблокировать бота, если пользователи массово жалуются.
  • Неверные токены – всегда проверяйте ответ API после установки вебхука.
  • Неправильные типы данных в базе – убедитесь, что chat_id хранится как целое число.

Сравнительная таблица: Telegram‑рассылки vs SMS‑маркетинг

КритерийTelegram‑рассылкаSMS‑маркетинг
Стоимость сообщенияБесплатно0,1–0,5 ₽
Открываемость≈ 90 %≈ 70 %
Время доставкиМгновенно1–5 мин
ФорматТекст, изображения, кнопкиТекст
Соблюдение GDPRНаличие opt-in через BotFatherТребуется согласие по закону о рекламе

FAQ

  • Как быстро проверить, что вебхук работает? После установки вебхука отправьте сообщение боту. В логах сервера должно появиться обновление message.
  • Можно ли использовать Telegram‑бота для массовой рассылки в группах? Да, но необходимо соблюдать лимиты: не более 20 мгновенных сообщений в 30 сек.
  • Как добавить кнопку «Отписаться»? Используйте InlineKeyboardMarkup с callback_data unsubscribe и обработайте callback в webhook.
  • Есть ли ограничения по количеству подписчиков? Telegram не накладывает жестких ограничений, но при росте до сотен тысяч стоит масштабировать сервер и использовать очереди.
  • Как избежать блокировки бота за спам? Не отправляйте одинаковые сообщения более 5 раз подряд, используйте chat_member статус и соблюдайте правила Telegram.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *