Инструкция · 5 мин

Автопостинг в Telegram своим ботом: без сервисов и подписок

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

Сервисов автопостинга много, и все они делают одно и то же: берут твой текст и отправляют его в канал по расписанию. За это просят подписку и требуют доступ к каналу.

Между тем это два десятка строк кода и полчаса настройки. Разберу, как собрать своё.

Что понадобится

Бот. Создаётся в служебном боте платформы за минуту, на выходе — токен вида 1234567890:AAxxxx. Токен это ключ: кто им владеет, тот управляет ботом.

Права в канале. Бота нужно добавить администратором с правом публикации. Без этого он будет получать отказ на каждую отправку.

Идентификатор канала. Либо публичное имя вида @mychannel, либо числовой идентификатор для приватного.

Планировщик. Штатный в системе — тот же, что запускает любые задачи по времени. Ничего дополнительного ставить не нужно.

Как устроена отправка

Публикация — это один запрос к платформе. Ни библиотек, ни фреймворков:

curl -s "https://api.telegram.org/bot<ТОКЕН>/sendMessage" \
  -d chat_id="@mychannel" \
  -d parse_mode="HTML" \
  -d text="Текст поста"

Картинка отправляется тем же способом, только другим методом и с файлом. Всё остальное — обвязка вокруг этого запроса: откуда брать текст, когда отправлять, что делать при ошибке.

Очередь вместо календаря

Главное архитектурное решение, которое отличает работающую связку от игрушки.

Плохо: жёсткое расписание «в 10:00 отправить пост номер три». Пропустил день, что-то сломалось — и вся конструкция едет.

Хорошо: очередь. Папка с готовыми постами, планировщик берёт следующий по списку и отправляет. Нет поста — ничего не происходит и никто не паникует.

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

Что должно быть в обвязке

Часть Зачем
Реестр отправленного чтобы один пост не ушёл дважды
Проверка ответа платформы молчаливый отказ хуже видимой ошибки
Повтор при сбое сети одна попытка через минуту решает 90 % случаев
Лог с датой и результатом без него не разберёшься, почему пусто
Уведомление себе при провале иначе узнаешь через неделю

Последняя строка важнее, чем кажется. Тихо сломавшийся автопостинг — это неделя молчания в канале, о которой ты узнаёшь случайно.

Четыре места, где ломается

Права отозвались. Бота случайно разжаловали из администраторов — отправка перестала работать. Проверяется одним тестовым сообщением раз в неделю.

Разметка поехала. Незакрытый тег или лишний символ — платформа отвечает отказом на весь пост. Лечится проверкой разметки перед отправкой.

Токен в репозитории. Классика: залил код с токеном на публичный хостинг, через день бот принадлежит не тебе. Токен живёт в файле секретов, который никогда не попадает в репозиторий.

Расписание не сработало. Компьютер спал, задача не запустилась. Тут либо сервер, который не спит, либо смириться и проверять.

Порядок сборки за полчаса

  1. Создай бота, сохрани токен в файл секретов вне репозитория.
  2. Добавь бота администратором в канал с правом публикации.
  3. Отправь одно тестовое сообщение командой из терминала — убедись, что доходит.
  4. Заведи папку очереди: один файл — один пост.
  5. Напиши скрипт: взять следующий файл, отправить, отметить в реестре, записать в лог.
  6. Повесь скрипт на планировщик.
  7. Проверь весь путь целиком, положив в очередь настоящий пост.

Седьмой шаг обязателен. Связка, проверенная только тестовым «привет», ломается на первом же посте с картинкой и разметкой.

Что это даёт помимо экономии

Экономия на подписке — приятный побочный эффект, но не главный.

Главное — это твоя часть конвейера. Скилл написал пост, скрипт положил в очередь, планировщик отправил. Нет разрыва, где надо руками копировать текст в чужой интерфейс. А значит, весь путь от идеи до публикации может идти без тебя.

И второе: доступ к каналу остаётся только у тебя. Ни один внешний сервис не держит права на публикацию от твоего имени.

Чем это отличается от отложенных постов платформы

Отложенная публикация есть и в самом мессенджере — можно поставить пост на время руками. Разница в трёх вещах.

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

Объём. Поставить десять постов руками — это десять раз повторить одну процедуру. Положить десять файлов в очередь — одна операция.

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

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

Что положить в очередь, кроме текста

Пост редко бывает только текстом. Поэтому файл в очереди удобно делать не голым текстом, а с шапкой:

---
время: 10:00
картинка: img/карусель-01.png
кодовое слово: ЗАВОД
---
Текст поста...

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

Как настроить автопостинг в Telegram без сервисов?

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

Можно ли постить картинки и видео?

Да, теми же запросами, только другими методами. Ограничения по размеру файла есть, но для обычных постов с картинками они не мешают.

Что делать, если бот перестал публиковать?

Проверить три вещи по порядку: остались ли у бота права администратора, не поехала ли разметка в посте, дошёл ли запрос вообще. Ответ платформы всегда содержит причину отказа — его надо логировать.

Безопасно ли хранить токен бота?

Токен — это полный доступ к боту, обращаться с ним надо как с паролем: файл секретов вне репозитория, никаких публичных хостингов. Утёкший токен отзывается и выпускается заново.

Это только фундамент. А дальше?

Как собрать первый скилл под себя, построить контент-завод, привести трафик и превратить подписчика в оплату — разбираю по шагам в Telegram. Честный дневник стройки с нуля.

📲 Зайти в канал и идти рядом 🔥