Создать чат‑бота в Telegram, который автоматически рассылает сообщения, возможно через несколько минут после запуска. Это достигается с помощью Bot API, webhook‑ов и планировщика задач.
1. Что такое чат‑бот и зачем он в Telegram для рассылок?
Чат‑бот – это автономный сервис, который взаимодействует с пользователями через Telegram Bot API. Для рассылок он позволяет отправлять сообщения в группы, каналы или личные чаты без ручного участия. Это экономит время и повышает охват.
1.1 Преимущества использования бота для рассылок
- Автоматизация: сообщения отправляются по расписанию.
- Масштабируемость: бот может обслуживать тысячи подписчиков.
- Отслеживание: можно собирать статистику доставки и открытий.
- Соблюдение правил Telegram: бот не считается спамом, если соблюдаются лимиты.
2. Как создать и зарегистрировать бота в Telegram
Для начала обратитесь к BotFather – официальному боту для создания новых ботов. Он выдаст токен, который понадобится для API‑запросов.
- Отправьте в BotFather сообщение
/newbot. - Укажите имя и юзернейм бота.
- Получите токен вида
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. - Сохраните токен в безопасном месте; он нужен для авторизации.
3. Настройка инфраструктуры: сервер, webhook и планировщик
Бот должен работать на сервере, который принимает входящие запросы от Telegram и отправляет исходящие сообщения. Рекомендуется использовать Linux‑сервер с Node.js, Python или Go.
3.1 Установка и настройка вебхука
Вебхук – это URL, куда Telegram отправляет обновления. Он должен быть доступен по HTTPS.
curl -X POST https://api.telegram.org/bot<TOKEN>/setWebhook -d url=https://yourdomain.com/webhook
После установки убедитесь, что Telegram отвечает OK. Если нет, проверьте сертификат SSL.
3.2 Планировщик задач
Для автоматической рассылки используйте cron (Linux) или встроенный scheduler в выбранном фреймворке. Пример cron‑задания, которое запускает скрипт каждые 30 минут:
* */30 * * * /usr/bin/python3 /home/user/bot/cron_send.py
4. Реализация логики рассылки
В скрипте cron_send.py необходимо:
- Получать список подписчиков из БД.
- Формировать сообщение (текст, кнопки, медиа).
- Отправлять через
sendMessageилиsendMediaGroup. - Обрабатывать ошибки и сохранять статус.
import requests
TOKEN = '<TOKEN>'
URL = f'https://api.telegram.org/bot{TOKEN}/sendMessage'
for chat_id in get_subscribers():
payload = {
'chat_id': chat_id,
'text': 'Добро пожаловать в рассылку!'
}
r = requests.post(URL, json=payload)
if r.status_code != 200:
log_error(chat_id, r.text)
4.1 Как избежать превышения лимитов Telegram
Telegram ограничивает количество сообщений до 30 000 в сутки для каждого бота. Чтобы не превысить лимит, используйте очередь сообщений и контролируйте скорость отправки (не более 30 сообщений в секунду).
5. Тестирование и мониторинг
Перед массовой рассылкой проведите тест на небольшом количестве подписчиков. Используйте /getUpdates для проверки входящих событий. Для мониторинга применяйте:
- Панель
BotFather– статус и лимиты. - Логи сервера – чтобы отлавливать ошибки.
- Сервис
UptimeRobot– проверка доступности webhook.
6. Лучшие практики для успешных рассылок
- Соблюдайте политику конфиденциальности и GDPR.
- Разрешите пользователям отписаться через кнопку
/unsubscribe. - Персонализируйте сообщения: используйте имя пользователя.
- Оптимизируйте время отправки – лучшее время зависит от аудитории.
- Проверяйте доставку: Telegram не предоставляет открытий, но можно анализировать ответы.
FAQ
- Можно ли отправлять сообщения в каналы? Да, используя
chat_idканала (начинается с@). - Как добавить кнопку подписки? Используйте
reply_markupсInlineKeyboardMarkup. - Что делать, если бот блокируется? Убедитесь, что не превышаете лимиты и соблюдаете правила Telegram.
- Можно ли использовать сторонние сервисы? Да, например, Zapier или Integromat для интеграции с CRM.
- Как хранить токен безопасно? Используйте переменные окружения или секреты в облаке.