Автопостинг в Телеграм-канал бесплатно, без сервисов
В Телеграме уже есть штатное отложенное — многим его хватит. Разбираю, когда мало, как собрать бота с расписанием и где всё это ломается.
Смотри. У тебя канал, и посты ты пишешь пачками: сел в воскресенье, накидал шесть штук. А выходить они должны по одному и в нормальное время — не в три часа ночи, когда тебя накрыло вдохновением.
Дальше начинается ручная работа. Каждый день вспомнить, зайти, скопировать, опубликовать. Уехал, заболел, закрутился — канал молчит. Ты идёшь искать планировщик, а планировщик просит подписку. Каждый месяц, пока пользуешься.
А половине людей платить вообще не за что: нужное уже встроено в сам Телеграм. Об этом почему-то не пишут те, кто продаёт планировщики. Второй половине хватит своего бота и скрипта, который ты соберёшь, описав задачу словами. Разберём оба пути — включая то, где каждый разваливается.
Зачем публиковать по расписанию
Дело не в лени. «Написать пост» и «выпустить пост» — две разные работы, и делать их лучше в разное время.
Текст пишется настроением: пришла мысль — сел и написал три штуки подряд. Выходить они должны ритмом: аудитория привыкает, что у тебя вторник и четверг, и начинает ждать. Ритм держит канал сильнее, чем гениальность отдельного поста.
Плюс бытовое. Отпуск, самолёт, тяжёлая неделя на основной работе. Канал, который живёт только на твоей ежедневной дисциплине, гаснет в первый же сложный месяц.
| Способ | Что умеет | Сколько возни | Где ломается |
|---|---|---|---|
| Штатное отложенное в Телеграме | один пост на выбранную дату и время | 10 секунд на пост | нет повторов, нет заливки пачкой, много каналов — задолбаешься |
| Бот и скрипт на своём компьютере | пачка постов из файла, любая своя логика | вечер вместе с нейросетью | работает, только пока компьютер включён |
| Бот и скрипт на своём сервере | то же самое, но круглосуточно | плюс полчаса на сервер | сервер стоит денег и его надо один раз настроить |
Правило простое: начинай сверху. Задача закрывается штатной кнопкой — закрывай кнопкой, не выпендривайся.
В Телеграме уже есть отложенная публикация
Она встроена, она бесплатная, и половина людей о ней не знает.
Пишешь пост в канал как обычно. Дальше не жмёшь кнопку отправки, а зажимаешь её — на компьютере правый клик по той же кнопке. Выскакивает меню с выбором даты и времени. Подписи в разных версиях свои, но смысл один: отправить позже.
Дальше самое важное. Пост уходит с серверов Телеграма, а не с твоего телефона. Телефон может быть выключен, разряжен или лежать в другой стране — пост всё равно выйдет. Этого не умеет ни один скрипт на твоём ноутбуке.
Запланированное собирается в отдельный список рядом с полем ввода: заходишь, правишь текст, двигаешь время, удаляешь или отправляешь прямо сейчас. Работает в каналах, где ты администратор с правом публиковать.
Чего у штатного нет — повторов. «Каждую пятницу в 10:00» задать нельзя, только конкретную дату. И бесконечно набивать очередь не выйдет: предел есть, и планируя на полгода вперёд, ты в него упрёшься.
Для одного канала и десятка постов в месяц — всё, тема закрыта. Иди планируй, дальше можешь не читать.
Когда штатного мало
Четыре ситуации, где ручное планирование перестаёт работать.
Каналов больше одного. Три канала, в каждом свой график — это три раза одна и та же работа. Плюс однажды промахнёшься каналом, и пост про распродажу уедет не туда.
Контент-план живёт в таблице. Сорок постов в Google Таблице: дата, время, текст, картинка. Штатное отложенное потребует сорок раз повторить руками одну процедуру. Скрипт заберёт файл целиком и разложит по времени сам.
Есть повторяющиеся посты. Правила чата первого числа, анонс эфира каждую пятницу, напоминание раз в неделю. Штатное такое не умеет, скрипту это одна строчка.
Пост собирается сам. Курс валют на утро, новые товары из выгрузки, дайджест ссылок за неделю. Тут вообще нечего планировать заранее — текст рождается в момент отправки.
И сразу скажу, чего в этой статье нет. Если задача не про расписание, а про то, чтобы те же посты жили ещё на одной площадке, — это другая механика: перенести посты из Telegram в MAX.
Бот с расписанием: из чего это собрано
Тут пугаются раньше времени, поэтому разложу на четыре детали. Аналогия простая: бот — сотрудник с ключом от канала, скрипт — инструкция, что и когда сказать, планировщик — будильник, который сотрудника будит.
Бот. Создаётся у @BotFather за минуту, никакого кода. Он выдаёт токен — длинную строку. Токен и есть ключ от канала: у кого он есть, тот пишет от твоего имени. Не свети его в переписке и не клади в файл, который улетит на GitHub. Если бота ни разу не делал, начни отсюда: бот в Телеграм без кода.
Права в канале. Бота надо добавить в канал администратором и дать право публиковать сообщения. Без этого он не напишет ничего — Телеграм ответит ошибкой про недостаточные права. Это причина примерно всех «у меня не работает» на старте.
Список постов. Обычный файл: время, текст, путь к картинке. CSV из таблицы, JSON — не важно, лишь бы ты сам мог открыть и поправить.
Будильник. Скрипт не висит в воздухе, его кто-то запускает. На сервере это cron — системная штука, которая раз в минуту дёргает твою команду. На Windows ту же роль играет «Планировщик заданий», на маке — системный планировщик. Логика одна: запускай вот это с такой периодичностью.
Скрипт пишешь не ты — ты его описываешь
Раньше «написать автопостинг» означало найти человека, объяснить, заплатить и ждать. Сейчас ты описываешь задачу текстом и получаешь рабочий скрипт за вечер.
Формулировать надо конкретно. Плохой запрос — «сделай мне автопостинг в телеграм». Хороший выглядит так:
Нужен скрипт на Python: публиковать посты в Телеграм-канал по расписанию. Посты беру из файла posts.csv: дата и время, текст, путь к картинке (может быть пустым). Токен бота и id канала — в отдельном файле рядом, в коде их не хранить. Запускаться раз в минуту, брать всё, чему настало время, и отправлять. Отправленное помечать в файле, чтобы после перезапуска не отправить второй раз. Между отправками пауза 3 секунды. Телеграм ответил ошибкой — записать её в лог с временем и текстом, не падать целиком. Время считать по Москве, независимо от часового пояса машины.
Разберу, зачем каждая строка, — это и есть весь навык.
Файл с постами. Контент-план ты должен править, не трогая код. Иначе каждая правка текста — новый заход к нейросети.
Токен отдельно от кода. Скрипт рано или поздно кому-то покажешь или зальёшь в облако. Ключ от канала внутри кода уедет вместе с ним.
Пометка об отправленном. Самая частая беда самодельного автопостинга — дубли. Скрипт перезапустился, снова увидел «время наступило» и отправил то же самое второй раз. Подписчики это видят.
Пауза и лог. Пачкой в Телеграм ломиться нельзя, об этом ниже. А утром надо понимать, вышел пост или нет и почему, — без лога будешь гадать.
Часовой пояс. Сервер почти всегда живёт по UTC, а ты — нет. Скажи об этом сразу, иначе утренний пост выйдет ночью.
Если сама механика — где писать этот текст, чем запускать скрипт, что делать с красными ошибками — пока тёмный лес, начни с разбора про нейросеть, которая пишет код.
Где живёт скрипт, когда компьютер выключен
Честно и без иллюзий: скрипт работает ровно столько, сколько работает машина, на которой он лежит. Закрыл ноутбук — постов нет. Ушёл в спящий режим — тоже нет. Отвалился интернет — пост пропустился, и скрипт этого даже не заметит, если не попросить его запоминать пропущенное.
Для проверки идеи домашний компьютер годится: запусти, посмотри неделю, убедись, что механика твоя. Для канала, который выходит каждое утро, — нет.
Нормальное решение — свой сервер. Маленькая машина в интернете, которая просто никогда не выключается. Стоит денег, но платишь ты за железо, а не за чужой интерфейс, и на этом же сервере потом живут остальные твои скрипты. Как поднять с нуля: свой сервер за 7 шагов.
И держи в голове: у штатного отложенного этой проблемы нет вовсе, оно крутится на серверах Телеграма. Поэтому не тащи бота туда, где хватает кнопки.
Где всё ломается
Пять стен. Лучше узнать о них сейчас, чем в шесть утра в понедельник.
Права бота. Не админ в канале — не публикует. Точка. Проверяется за десять секунд: список администраторов канала, бот там есть, право публиковать сообщения стоит.
Дубли. Перезапустил скрипт, а он отправил всё заново. Лечится пометкой об отправленном. Заложи её сразу, а не после того, как канал получит один пост трижды.
Лимиты частоты. Телеграм ограничивает, как часто бот шлёт сообщения. Ломанёшь двадцать постов подряд без пауз — часть отлетит с ошибкой «слишком много запросов», причём в ответе будет написано, сколько секунд подождать. Пауза между отправками и обработка этой ошибки закрывают вопрос.
Форматирование. Жирный, курсив, ссылки — не просто текст, а разметка, и Телеграм разбирает её по своим правилам. Забыл закрыть звёздочку или поставил не тот спецсимвол — сообщение не уйдёт, получишь невнятную ошибку про разбор текста. Плюс у поста есть предел длины, а у подписи к картинке он ещё короче: длинную простыню с картинкой Телеграм не примет.
Медиа. Одна картинка — легко. Альбом надо отправлять одной группой, иначе рассыплется на отдельные посты. Видео и большие файлы грузятся дольше и иногда отваливаются по таймауту. Скажи про медиа нейросети сразу, а не когда скрипт уже заработал на голом тексте.
Начни с малого. Открой канал, напиши пост и запланируй его на завтра на десять утра — минута работы, и один пункт из списка дел закрыт навсегда. Дальше живи так, пока не станет тесно: три канала, таблица на сорок постов, повторы по пятницам. Вот тогда садись собирать бота — уже понимая, зачем он тебе.
Погнали.