Автопостинг в 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 % случаев |
| Лог с датой и результатом | без него не разберёшься, почему пусто |
| Уведомление себе при провале | иначе узнаешь через неделю |
Последняя строка важнее, чем кажется. Тихо сломавшийся автопостинг — это неделя молчания в канале, о которой ты узнаёшь случайно.
Четыре места, где ломается
Права отозвались. Бота случайно разжаловали из администраторов — отправка перестала работать. Проверяется одним тестовым сообщением раз в неделю.
Разметка поехала. Незакрытый тег или лишний символ — платформа отвечает отказом на весь пост. Лечится проверкой разметки перед отправкой.
Токен в репозитории. Классика: залил код с токеном на публичный хостинг, через день бот принадлежит не тебе. Токен живёт в файле секретов, который никогда не попадает в репозиторий.
Расписание не сработало. Компьютер спал, задача не запустилась. Тут либо сервер, который не спит, либо смириться и проверять.
Порядок сборки за полчаса
- Создай бота, сохрани токен в файл секретов вне репозитория.
- Добавь бота администратором в канал с правом публикации.
- Отправь одно тестовое сообщение командой из терминала — убедись, что доходит.
- Заведи папку очереди: один файл — один пост.
- Напиши скрипт: взять следующий файл, отправить, отметить в реестре, записать в лог.
- Повесь скрипт на планировщик.
- Проверь весь путь целиком, положив в очередь настоящий пост.
Седьмой шаг обязателен. Связка, проверенная только тестовым «привет», ломается на первом же посте с картинкой и разметкой.
Что это даёт помимо экономии
Экономия на подписке — приятный побочный эффект, но не главный.
Главное — это твоя часть конвейера. Скилл написал пост, скрипт положил в очередь, планировщик отправил. Нет разрыва, где надо руками копировать текст в чужой интерфейс. А значит, весь путь от идеи до публикации может идти без тебя.
И второе: доступ к каналу остаётся только у тебя. Ни один внешний сервис не держит права на публикацию от твоего имени.
Чем это отличается от отложенных постов платформы
Отложенная публикация есть и в самом мессенджере — можно поставить пост на время руками. Разница в трёх вещах.
Источник. Встроенная отложка требует, чтобы ты открыл приложение и вставил текст. Своя связка берёт готовый пост из папки, куда его положил скилл. Ручного шага нет вовсе.
Объём. Поставить десять постов руками — это десять раз повторить одну процедуру. Положить десять файлов в очередь — одна операция.
Повторяемость. Твоя связка знает, что уже отправлено, ведёт лог и умеет уведомить о сбое. Встроенная отложка ничего про это не знает.
Вывод простой: пока постов один-два в неделю, встроенной хватает с запасом. Как только появляется поток и производство отдано коду — нужен свой конвейер, иначе ручной шаг становится узким местом всей цепочки.
Что положить в очередь, кроме текста
Пост редко бывает только текстом. Поэтому файл в очереди удобно делать не голым текстом, а с шапкой:
---
время: 10:00
картинка: img/карусель-01.png
кодовое слово: ЗАВОД
---
Текст поста...
Скрипт читает шапку и решает, чем отправлять: текстом, картинкой с подписью или альбомом. Кодовое слово попадает в реестр автоматически — не придётся вспоминать, какое уже занято.
Как настроить автопостинг в Telegram без сервисов?
Нужен свой бот с токеном, права администратора в канале и планировщик задач. Публикация — это один запрос к платформе, всё остальное обвязка: очередь постов, реестр отправленного и лог.
Можно ли постить картинки и видео?
Да, теми же запросами, только другими методами. Ограничения по размеру файла есть, но для обычных постов с картинками они не мешают.
Что делать, если бот перестал публиковать?
Проверить три вещи по порядку: остались ли у бота права администратора, не поехала ли разметка в посте, дошёл ли запрос вообще. Ответ платформы всегда содержит причину отказа — его надо логировать.
Безопасно ли хранить токен бота?
Токен — это полный доступ к боту, обращаться с ним надо как с паролем: файл секретов вне репозитория, никаких публичных хостингов. Утёкший токен отзывается и выпускается заново.
Это только фундамент. А дальше?
Как собрать первый скилл под себя, построить контент-завод, привести трафик и превратить подписчика в оплату — разбираю по шагам в Telegram. Честный дневник стройки с нуля.
📲 Зайти в канал и идти рядом 🔥