Что такое отложенный постинг в Telegram
С точки зрения человека это две секунды удержания кнопки отправки и выбор даты. С точки зрения протокола — одно необязательное поле. В методах messages.sendMessage и messages.sendMedia есть schedule_date: будущая метка времени в формате UNIX. Положили её в запрос — сообщение не ушло получателю, а встало в очередь на сервере и отправится само в указанный момент.
Держите в голове одну вещь: очередь своя у каждого чата. Документация формулирует это дословно — у каждой личной переписки, группы, супергруппы и канала собственная очередь отложки и собственная последовательность идентификаторов. То есть отложенное сообщение получает id из отдельной нумерации, не пересекающейся с обычными сообщениями чата. Тот, кто ведёт постинг по десятку каналов и держит идентификаторы у себя, ведёт десять независимых списков, а не один общий.
Дальше сервер отбивает три события. Сразу — updateNewScheduledMessage с тем самым id из очереди. В назначенное время — обычный апдейт о новом сообщении с флагом from_scheduled. И тут же updateDeleteScheduledMessages: запись вымыло из очереди. В последнем апдейте приезжают сразу два списка — id в очереди и настоящие id отправленных сообщений, по одинаковым позициям.
Почему бот не может поставить сообщение на отложку
В машиночитаемом справочнике ошибок лежит код SCHEDULE_BOT_NOT_ALLOWED, описание к нему — «Bots cannot schedule messages». Закреплён он за тремя методами: отправка текста, отправка медиа и пересылка. Иносказаний тут нет.
С другой стороны то же самое подтверждается отсутствием. Я прогрепал справочник Bot API целиком: слова schedule_date там нет ни одного вхождения. Ни у sendMessage, ни у одного другого метода отправки параметра расписания просто не существует.
sendMessage. Разница видна сразу: пропал сервис, упала сеть, кончился хостинг — пост не выйдет. У штатной отложки очередь на серверах Telegram, и её не касается ничего из этого.Раз ботовый токен закрыт, остаётся клиент, работающий от лица человека, — тот же userbot, на котором держатся парсинг и рассылки. Чем он отличается от бота, разобрано в материале про ботов в чате. Под расписание в телеграмме нужен живой аккаунт, токен из @BotFather тут бесполезен.
Что будет, если поставить отложку на десять секунд вперёд
Сообщение уйдёт сразу. Формулировка в документации точная: если schedule_date меньше чем на десять секунд в будущем, сообщение отправляется немедленно и порождает обычный апдейт о новом сообщении — без очереди и без from_scheduled.
Мелочь, но она ломает схемы вида «поставлю на пять секунд, чтобы выглядело отложенным». Ниже десяти секунд отложки просто не существует.
Как отправить сообщение, когда человек появится в сети
У Telegram есть отдельный режим, про который знают куда меньше, чем про обычную отложку. Вместо даты в schedule_date кладётся особая метка 0x7FFFFFFE — это максимальное 32-битное значение минус единица. Работает только в личных чатах.
- Собеседник онлайн прямо сейчас — сообщение уходит немедленно, минуя очередь.
- Собеседник офлайн — сообщение встаёт в очередь с этой же меткой и отправляется автоматически, когда он вернётся в сеть.
- Собеседник скрыл время последнего входа — сервер отвечает
SCHEDULE_STATUS_PRIVATE: «Can't schedule until user is online, if the user's last seen timestamp is hidden by their privacy settings». Сообщение не отправляется и в очередь не встаёт.
Третий пункт упирается в чужие настройки, и повлиять на него вы никак не можете. У Telegram четырнадцать ключей приватности, и «был в сети» среди них работает по правилу взаимности: скрыл своё время — перестал видеть чужое. Как это устроено целиком, разобрано в статье про настройки приватности. Для отложки вывод простой: доля базы, до которой этот режим вообще не дотянется, — это ровно те люди, кто спрятал последний вход, и их количество вы заранее не знаете.
Можно ли повторять отложенное сообщение по расписанию
Можно, и список интервалов закрытый. За повтор отвечает поле schedule_repeat_period — интервал в секундах, через который сервер сам переставит сообщение на новый срок, отбив ровно те же апдейты, как если бы вы отправили его заново.
| Интервал | Значение в секундах |
|---|---|
| Каждый день | 86 400 |
| Каждую неделю | 7 × 86 400 |
| Раз в две недели | 14 × 86 400 |
| Раз в месяц | 30 × 86 400 |
| Раз в три месяца | 91 × 86 400 |
| Дважды в год | 182 × 86 400 |
| Раз в год | 365 × 86 400 |
| Только в тестовом дата-центре | 60 и 300 |
Произвольного интервала нет: «каждые три часа» или «по будням» протоколом не предусмотрено. Повтор нельзя навесить на альбом и на пересылку нескольких сообщений разом — документация оговаривает это отдельно. Сама возможность повтора в первоисточнике отнесена к платной подписке, поэтому в бесплатном аккаунте поля вы не увидите.
Строчка про 60 и 300 секунд — находка для тех, кто такое отлаживает. Ждать сутки, чтобы проверить ежедневный повтор, не нужно: в тестовом дата-центре тот же механизм крутится с минутным шагом. Что такое тестовая среда Telegram и как в неё попасть, разобрано в отдельном материале.
Что можно сделать с уже поставленной очередью
Очередь — не чёрный ящик, у неё пять методов. Клиент видит её целиком и может править.
| Метод | Что делает |
|---|---|
messages.getScheduledHistory | отдаёт всю очередь отложки конкретного чата |
messages.getScheduledMessages | отдаёт конкретные сообщения из очереди по их id |
messages.sendScheduledMessages | вымывает сообщения из очереди и отправляет их прямо сейчас |
messages.deleteScheduledMessages | удаляет из очереди, не отправляя |
messages.editMessage | меняет текст, медиа и саму дату отправки |
У последнего есть своя ошибка — SCHEDULE_DATE_INVALID, «Invalid schedule date provided». Любопытно, за какими двумя методами она закреплена: за редактированием сообщения и за phone.createGroupCall. Второй — про запланированные видеочаты: у них своя дата и та же проверка на её вменяемость.
Почему видео в большой канал уходит через ту же очередь
Отправка видео в крупный чат автоматически запускает серверную обработку — генерацию дополнительных качеств. И на время обработки сообщение кладётся в ту же очередь отложки, хотя никакой отложки вы не ставили. У него поднимается флаг video_processing_pending, а в поле даты лежит не время отправки, а расчётное время окончания конвертации.
Со стороны Bot API это описано ещё жёстче. В справочнике у поля с идентификатором сообщения стоит оговорка: «в отдельных случаях (например, сообщение с видео, отправленное в большой чат) сервер может автоматически поставить сообщение в очередь вместо немедленной отправки; в таких случаях это поле будет равно 0, и сообщение непригодно к использованию, пока не будет реально отправлено». То есть бот, залив видео в крупный канал, получает message_id = 0 и не может ни закрепить пост, ни ответить на него, ни отредактировать, пока Telegram не досчитает.
Если скрипт постинга падает именно на видео и именно в больших каналах — вот причина, и она задокументирована. Что показывает и чего не показывает штатная статистика Telegram-канала, разобрано отдельно.
Видно ли, что сообщение было отложенным
Видно. В объекте сообщения есть флаг from_scheduled с описанием в одну строку: «Whether this is a scheduled message». Рядом, во второй группе флагов, лежит offline — он ставится, когда сообщение ушло из-за заранее заданного сценария отправителя, например как автоответ или служебное приветствие. В Bot API у того же признака имя is_from_offline, и формулировка там прямая: сообщение отправлено неявным действием.
Значит, отложка не превращает сообщение в неотличимое от живого. Метка происхождения лежит в самом объекте и приезжает любому клиенту, который читает историю чата. Для тех, кто изображает активность руками планировщика, это неприятная новость, и она в одном ряду с механикой, разобранной в статье про нейрокомментинг и в разборе масслукинга: платформа почти всегда оставляет машиночитаемый след там, где человек рассчитывал на его отсутствие.
Чего в документации нет
Три числа я искал специально и не нашёл. Подставлять вместо них правдоподобные не стану — ниже ровно то, что есть в первоисточнике.
- Лимит на количество отложенных сообщений не опубликован. Ошибка
SCHEDULE_TOO_MUCH(«There are too many scheduled messages») закреплена за пятью методами отправки, то есть потолок точно существует. Значения нет. - Горизонт планирования не опубликован.
SCHEDULE_DATE_TOO_LATE— «You can't schedule a message this far in the future». Насколько далеко «this far», не сказано нигде. - В конфиге этих чисел тоже нет. В машиночитаемом конфиге Telegram 228 описанных ключей, и поиск по ним на 29 августа 2026 года не даёт ни одного ключа со словом schedule. Другие лимиты платформы там лежат — они разобраны в статье про лимиты Telegram, — а эти два живут только в виде ошибок.
Что это меняет, если вы ведёте постинг с нескольких аккаунтов
Соберём факты вместе. Отложку ставит человек со своего аккаунта, живёт она на сервере Telegram, интервалы повтора выбираются из закрытого списка, и в истории она помечена флагом. Для одного канала из этого следует «пользуйтесь штатной отложкой и не платите за планировщик». Для десятка площадок и флота аккаунтов — набор рабочих ограничений:
- Расписание ставится с того аккаунта, который потом и постит. Отдать это боту не выйдет. Значит, аккаунтов под задачу нужно столько же, сколько площадок, и каждый должен быть живым в момент постановки очереди.
- Один аккаунт — один набор очередей. Потерялся доступ, попал аккаунт в заморозку или ограничение — вместе с ним из работы вышли все его очереди сразу. Как понять причину и что делать, разобрано в статье про ограниченный аккаунт.
- Массовая постановка отложки — это серия запросов от одного аккаунта. Флуд-лимиты тут работают как на любой другой активности, а заход многими профилями с одного адреса собирает проблемы ровно так же.
Отсюда практическая часть. Живые аккаунты под площадки лежат в каталоге Telegram-аккаунтов — по странам и типам, каждый проверяется вживую в момент выдачи. Разводить их по адресам — резидентными прокси, а если сценарий чувствителен к качеству адреса, мобильными 4G/5G. Чем типы аккаунтов отличаются друг от друга, разобрано в материале про трастовые, физические и авторег.
Что это меняет, если вы собираете аудиторию
Прямо — ничего: отложенное сообщение, когда оно доехало, становится обычным сообщением чата и попадает в ленту как все. Активные писавшие соберутся вместе с ним, потому что это реальная реплика в реальном чате.
Косвенно — ещё один аргумент не судить о чате по одному признаку. Строчка «в чате пишут» перестала означать «в чате сидят люди» ровно в тот момент, когда постинг стало можно поставить на месяц вперёд и уйти. Смотреть стоит на расхождение между списком участников и теми, кто действительно писал за период; для каналов ту же роль играют комментаторы — комментарии остаются обычными сообщениями. Почему пять чатов одного кластера не дают пяти аудиторий, разобрано в материале про пересечение аудиторий.
Что делать прямо сейчас
- Откройте очередь своего канала и посмотрите, что в ней лежит. Про забытый пост полугодовой давности вспоминают обычно в момент, когда он выходит.
- Проверьте, не платите ли вы за планировщик зря. Если сервис делает только «выложить пост во вторник в 10:00», штатная отложка закрывает это бесплатно и надёжнее.
- Не ставьте отложку ближе десяти секунд. Уйдёт немедленно, флага не будет.
- Отладку повторов гоняйте в тестовом дата-центре. 60 секунд вместо суток — это разница между «проверил за обед» и «проверил за неделю».
- Заложите живой аккаунт на каждую площадку. Ботом расписание не поставить, а один аккаунт на всё — единая точка отказа.
Последний пункт упирается в то, с чего всё начинается: площадки надо сначала найти — этим занимается глобальный поиск чатов. И расписание, поставленное на год вперёд, стоит открывать и пересматривать хотя бы раз в квартал: за год в телеграмме успевает поменяться и аудитория, и сами правила площадки.
Частые вопросы
Как сделать отложенный постинг в Telegram без сторонних сервисов?
Штатно: набрать сообщение и вместо обычной отправки задержать палец на кнопке отправки — появится выбор даты и времени. Под капотом клиент кладёт будущую метку времени в поле schedule_date метода messages.sendMessage или messages.sendMedia, и сообщение уходит в серверную очередь того чата, куда его адресовали. Приложение после этого можно закрыть: ждёт сервер, а не телефон.
Может ли бот поставить сообщение на отложку?
Нет, и это записано прямым текстом. В машиночитаемом справочнике ошибок Telegram есть код SCHEDULE_BOT_NOT_ALLOWED с описанием «Bots cannot schedule messages» — «боты не могут планировать сообщения». Он закреплён за тремя методами: messages.sendMessage, messages.sendMedia и messages.forwardMessages. С другой стороны это подтверждается отсутствием: в справочнике Bot API слова schedule_date нет ни одного вхождения (проверено 29 августа 2026 года). Отложку умеет только клиент, работающий от лица человека.
Что значит «отправить, когда собеседник появится в сети»?
Это отдельный режим: вместо даты в schedule_date передаётся особая метка 0x7FFFFFFE. Работает только в личных чатах. Если человек в этот момент онлайн, сообщение уходит сразу, минуя очередь; если нет — встаёт в очередь и отправляется автоматически, когда он вернётся. Но если собеседник скрыл время последнего входа настройками приватности, сервер отвечает ошибкой SCHEDULE_STATUS_PRIVATE, и сообщение не будет ни отправлено, ни поставлено в очередь.
Можно ли сделать так, чтобы отложенное сообщение повторялось?
Да, для этого есть поле schedule_repeat_period — интервал в секундах, после которого сервер сам переставит сообщение на новый срок. Список допустимых значений закрытый: 86 400 (сутки), 7, 14, 30, 91, 182 и 365 суток в секундах. В тестовом дата-центре дополнительно разрешены 60 и 300 секунд. Повтор нельзя применить к альбому и к пересылке нескольких сообщений сразу, а сама возможность в документации отнесена к платной подписке.
Видно ли со стороны, что сообщение было отложенным?
Да, в объекте сообщения есть флаг from_scheduled с описанием «Whether this is a scheduled message». Рядом лежит флаг offline — он ставится, когда сообщение ушло по заранее заданному сценарию отправителя, например как автоответ или служебное приветствие. В Bot API у того же признака имя is_from_offline. То есть отложка не делает сообщение неотличимым от живого: метка происхождения лежит прямо в объекте и доступна любому клиенту, который читает историю.
Сколько сообщений можно поставить в отложку и на сколько вперёд?
Точные значения в открытой документации не опубликованы. Известно, что ограничения есть: ошибка SCHEDULE_TOO_MUCH означает «слишком много отложенных сообщений», SCHEDULE_DATE_TOO_LATE — «нельзя запланировать сообщение так далеко в будущее». Обе закреплены за пятью методами отправки. Соответствующих ключей в машиночитаемом конфиге нет: поиск по всем 228 описанным ключам на 29 августа 2026 года не даёт ни одного вхождения schedule.
Механика очереди, режим 0x7FFFFFFE, правило десяти секунд, список интервалов повтора и автоматическая обработка видео — со страницы core.telegram.org/api/scheduled-messages. Формулировки ошибок SCHEDULE_BOT_NOT_ALLOWED, SCHEDULE_STATUS_PRIVATE, SCHEDULE_TOO_MUCH, SCHEDULE_DATE_TOO_LATE и SCHEDULE_DATE_INVALID вместе со списками методов — из машиночитаемого справочника ошибок (слой 227). Описания флагов from_scheduled, offline и video_processing_pending — из конструктора message (слой 223). Отсутствие расписания у ботов и оговорка про message_id = 0 — из справочника Bot API. Отсутствие ключей в конфиге проверено по машиночитаемому config.json (слой 225). Всё снято и сверено 29 августа 2026 года.