Боты и автоматизация2026-08-037 минРедакция Submarine School

Как сделать, чтобы бот отправлял сообщения сам: расписание и события

Как сделать, чтобы бот отправлял сообщения сам: расписание и события

Telegram-бот не может написать человеку первым: пока собеседник не нажал «Старт», отправка в его сторону вернётся ошибкой. Всё остальное вопрос техники: бот пишет в тот момент, когда ваш код или сервис вызывает метод sendMessage с нужным chat_id. Разберём, где взять этот идентификатор, как настроить отправку по времени и по событию (заявка с сайта, оплата), как публиковать в канал и какие ограничения ставит Telegram.

Почему бот не пишет первым

Ограничение стоит на стороне Telegram и придумано против спама: бот не может начать диалог сам, человек должен либо написать ему, либо добавить его в группу (документация библиотеки python-telegram-bot). Попытка отправить сообщение в диалог, где не было ни одного старта, вернёт ответ Forbidden: bot can't initiate conversation with a user.

Отсюда правило, из которого растёт вся остальная настройка: сначала первый контакт, потом любая инициативная отправка. Получить этот контакт можно так:

  • Ссылка t.me/имя_бота на сайте, в подписи к посту, в письме, в описании канала.
  • Ссылка с параметром, например t.me/имя_бота?start=zayavka: бот сразу увидит, откуда пришёл человек.
  • QR-код с той же ссылкой для офлайна: на визитке, на кассе, на упаковке.
  • Добавление бота в рабочую группу или канал, если сообщения нужны команде, а не клиенту лично.

Если бот должен ещё и реагировать на входящие вопросы, это отдельная задача, её мы разбирали в материале про автоответы бота. Здесь речь об обратном направлении: бот пишет по своей инициативе, когда входящего сообщения нет вообще.

Бот, который пишет сам, это уже рабочая автоматизация, а не игрушка. На бесплатном вебинаре показываем, как собрать такую связку с ИИ.

Занять место

Где взять chat_id

chat_id это числовой идентификатор диалога, и без него отправлять просто некуда. Получить его можно за пару минут.

  1. Напишите боту. Откройте диалог со своим ботом и нажмите «Старт», чтобы у Telegram появилась запись об этом чате.
  2. Запросите обновления. Откройте в браузере адрес https://api.telegram.org/bot<ТОКЕН>/getUpdates, подставив токен из BotFather.
  3. Найдите нужное поле. В ответе будет структура с блоком chat, внутри него id: это и есть идентификатор вашего диалога.
  4. Сохраните идентификатор. Для уведомлений себе достаточно вписать его в настройки скрипта, для клиентов нужна база или таблица, куда бот пишет каждого, кто нажал «Старт».
curl "https://api.telegram.org/bot<ТОКЕН>/getUpdates"

# в ответе ищите блок chat:
# "chat": {"id": 123456789, "first_name": "Ирина", "type": "private"}

Токен бота это пароль от него: не выкладывайте токен в открытый код, скриншоты и переписку. Если он утёк, отзовите его командой /revoke в BotFather. В коде токен держат в переменной окружения BOT_TOKEN, а не строкой внутри файла.

По теме: Как создать бота для видео в Telegram в 2026: кружки и нарезка

Отправка по расписанию: напоминания и утренний дайджест

У Bot API нет собственного планировщика. Отложенные сообщения есть в самом приложении Telegram, но боту эта функция недоступна, поэтому расписание держит ваша сторона: сервис-конструктор, сценарий автоматизации или скрипт на сервере. Практических вариантов четыре.

  • Конструктор ботов: отложенная рассылка и автопостинг настраиваются мышкой, время выбирается в календаре.
  • Сценарий автоматизации: в n8n за время отвечает узел Schedule Trigger, к нему подключается действие «отправить сообщение» (документация n8n).
  • Планировщик системы: обычный cron на сервере запускает скрипт в заданное время, самый дешёвый способ для личных напоминаний.
  • Планировщик внутри бота: библиотеки вроде APScheduler держат расписание прямо в коде, если бот и так работает постоянно.
# crontab: каждый будний день в 09:00 по времени сервера
0 9 * * 1-5 /usr/bin/python3 /home/bot/daily.py >> /home/bot/log.txt 2>&1

Любое расписание требует, чтобы что-то работало круглосуточно: выключенный ноутбук утренний дайджест не отправит. Где размещать бота и сколько это стоит, мы подробно разбирали в статье про бота, который работает круглосуточно.

Две вещи, на которых спотыкаются почти все: часовой пояс сервера (он часто UTC, и «девять утра» приходит в полдень) и повторная отправка после перезапуска. Проверьте время тестовым сообщением себе и отмечайте в базе факт отправки за конкретный день, тогда бот не разбудит человека дважды.

Сложность тут не в коде, а в том, чтобы связать событие, отправку и место, где всё это крутится без вашего участия. На бесплатном вебинаре по вайбкодингу разбираем такую связку на живом примере и отдаём гайд в подарок.

Записаться на вебинар

Отправка по событию: заявка с сайта, оплата, вебхук

Второй сценарий инициативной отправки: сообщение уходит не по часам, а когда что-то произошло. Пришла заявка с формы, оплатили заказ, освободилось место в записи, сломался сервис. Схема одинаковая для всех случаев.

  1. Определите событие. Отправка формы, новая строка в таблице, вебхук от платёжной системы или от сервиса записи.
  2. Поймайте его на своей стороне. Это обработчик формы на сайте, сценарий в n8n или Make либо готовый блок конструктора.
  3. Соберите текст. Коротко и по делу: что случилось, от кого, контакт, ссылка на карточку заявки.
  4. Вызовите отправку. Запрос к sendMessage с вашим chat_id (или идентификатором рабочей группы) и готовым текстом.
curl -X POST "https://api.telegram.org/bot<ТОКЕН>/sendMessage" \
  -d "chat_id=123456789" \
  -d "text=Новая заявка с сайта: Ирина, +7 999 000-00-00, тариф «Базовый»"

Заявки перестают теряться в почте и приходят туда, где вы и так сидите весь день. Отправляйте не «пришла заявка», а сразу все данные.

По теме: Как создать бота продаж в Telegram в 2026: сценарий и оплата

Как писать в канал и группу

Для канала и группы правило про первый контакт заменяется правилом про права. Бота нужно добавить в канал администратором и включить ему публикацию сообщений, иначе отправка вернёт ошибку доступа. В качестве адресата подойдёт публичное имя канала в формате @imya_kanala, а для приватного канала или группы понадобится числовой идентификатор, он начинается с -100.

У групп есть отдельное ограничение: не больше 20 сообщений в минуту (FAQ для разработчиков ботов). Для уведомлений команде этого хватает с запасом, для потока событий стоит собирать их в один дайджест. Тонкости прав и настройки мы разбирали в материале про то, как бот пишет сообщения в группу.

Лимиты Telegram: сколько сообщений можно отправлять

Пока адресатов десяток, лимиты незаметны, мешать они начинают на сотнях (FAQ Telegram):

  • В одном диалоге не чаще одного сообщения в секунду.
  • В группу не больше 20 сообщений в минуту.
  • Массовая отправка примерно 30 сообщений в секунду на всех получателей.
  • Платная рассылка поднимает планку до 1000 сообщений в секунду, но требует 100 000 звёзд на балансе бота и 100 000 активных пользователей в месяц.
  • При превышении Telegram отвечает кодом 429 и полем retry_after: это не блокировка, а просьба подождать указанное число секунд.

Если нужно разослать одно сообщение всей базе, а не отправить точечное уведомление, смотрите разбор про рассылку в боте: там про хранение базы, паузы и тех, кто заблокировал бота.

По теме: Как сделать, чтобы бот писал сообщения в группу Telegram в 2026

Конструктор или код с ИИ: что выбрать

Путь без кода подходит, когда отправка укладывается в типовые сценарии: приветственная серия, напоминание за сутки до встречи, автопостинг в канал по расписанию. У конструкторов вроде PuzzleBot есть бесплатный тариф с ограничениями, платные начинаются с 990 ₽ в месяц (страница тарифов). Плюс: всё работает на их серверах, ничего не падает по вашей вине. Минус: нестандартную логику (сложное условие, обращение к вашей базе, своя математика) внутри конструктора собрать тяжело.

Свой код даёт полную свободу, и с ИИ он перестал требовать опыта программирования: вы описываете задачу словами, инструмент пишет скрипт, вы запускаете его и правите текстом, что не так. В задании сразу укажите три вещи: где брать список получателей, во сколько отправлять и что делать с ошибками.

Собери телеграм-бота на Python и aiogram.
Он читает список chat_id из файла subscribers.json и каждый будний день
в 9:00 по московскому времени отправляет каждому короткое напоминание.
Между отправками пауза 0.05 секунды, при ошибке 429 жди retry_after,
недоступные чаты помечай в файле как неактивные.
Токен бери из переменной окружения BOT_TOKEN, в код его не вписывай.

Разумный порядок такой: начните с конструктора и проверьте сценарий на живых людях, а к своему коду переходите, когда упрётесь в ограничения.

Частые вопросы

Можно ли отправить сообщение по номеру телефона или по @username?

Нет. Bot API работает только с chat_id, а он появляется после первого контакта человека с ботом. Исключение касается каналов и групп: там адресатом может быть публичное имя, но и туда бота сначала нужно добавить с правами.

Почему бот пишет мне, а клиенту не пишет?

Скорее всего, вы нажимали «Старт», а клиент нет, либо он позже заблокировал бота. Во втором случае Telegram вернёт Forbidden: bot was blocked by the user. Такие идентификаторы стоит помечать в базе как неактивные и больше по ним не стучаться.

Как отправлять в нужное время, если люди в разных часовых поясах?

Храните рядом с каждым подписчиком его часовой пояс (спросите при подписке или дайте выбрать кнопками) и запускайте планировщик не раз в сутки, а каждые 15 минут. На каждом запуске бот отбирает тех, у кого сейчас местные девять утра, и пишет только им.

Что делать с ошибкой 429?

Прочитать поле retry_after из ответа, подождать это число секунд и повторить отправку. Заодно поставьте паузу между сообщениями в цикле рассылки: с ней вы просто не упрётесь в потолок.

Сколько стоит держать бота, который пишет сам?

Сам Telegram денег за это не берёт. Платите вы либо конструктору по тарифу, либо за место, где крутится скрипт: недорогой виртуальный сервер или бесплатный планировщик стороннего сервиса.

На бесплатном вебинаре по вайбкодингу показываем, как с помощью ИИ собрать бота с уведомлениями и напоминаниями: от заявки на сайте до сообщения в Telegram. Опыт в программировании не нужен.

Записаться на вебинар
Разборы, кейсы и фишки вайбкодинга каждую неделю в телеграм-канале «Яков вайбкодит».
Первый проект с ИИ: живой разбор, бесплатно Занять место