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

- Опубликовано: 2026-08-17T01:37:33+00:00
- Обновлено: 2026-08-17T01:37:33+00:00
- Автор: Алла Богатырёва
- Канонический URL: https://smsblog.ru/mobilnyj-marketing/poshagovyy-gayd-po-sozdaniyu-chat-bota-dlya-telegram-rassylok/

Создать чат‑бота для рассылок в 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‑объектами.

- Установите SSL‑сертификат – Telegram требует HTTPS.
- Отправьте запрос к `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.

## Источники

- В материале не указаны внешние источники.
