← Back to Broadcasting
List Bot publishing

Turn a playlist into a dependable publishing schedule.

Choose the posts once. Let your List Bot publish them in order.

A Post Rotation sends one playlist item at a time to a live audience, following the interval, timezone, days, posting hours, and cleanup behavior you choose. One bot can have one unfinished managed rotation at a time.

Start a rotation in four steps

Prepare the content first, then decide where and when it should appear.

1. Create your posts

Save the posts you want to rotate in your Post Maker. Each saved post receives a number that you can add to the playlist.

2. Build the playlist

Add saved-post numbers in publication order. You can also reply to a supported message in the control group with /rotation add to capture that message as a frozen playlist item.

3. Save the schedule

Choose the audience, the earliest time for the first post, interval, timezone, active days, posting hours, repeat behavior, message cleanup, and any pause after deletion. The live timeline shows the resulting actions and waits before you save.

4. Start and watch

Choose the primary scheduled start to wait for the first time shown in the timeline, or confirm Publish first post now to bypass the schedule once. The manager then shows delivery activity, visible messages, and anything that needs your attention.

🧭 What you see in Rotation Manager

The page is arranged from live status at the top to history at the bottom.

Overview cards

State shows the rotation lifecycle and current phase. Next post shows the eligible run time in the configured timezone. Visible posts counts messages this rotation still has in destination chats.

Rotation controls

The available buttons follow the current state. Start on schedule waits for the next eligible time. Start now makes only the first post due immediately; later posts still follow active days and posting hours. Pause prevents another post from starting, Resume schedules the next eligible post, and Stop permanently ends the current run.

Playlist

Add up to 50 saved-post numbers, then move, replace, or remove items. Saved posts and replied messages are captured as frozen snapshots; later source changes do not silently rewrite an active playlist.

Timing and behavior

This form holds every scheduling choice. Some timing settings remain editable while running, while the first-post choice, between-post cleanup policy, and blank pause become locked after the rotation starts.

Rotation timeline

The server previews one ideal cycle below the settings. Boxes are publish or delete actions; connectors are visible time, an intentional blank gap, or a wait for posting hours. Repeating schedules point back to the beginning. Telegram delivery time and failures can make the real run take longer.

Message cleanup

These controls delete Telegram messages already published by this rotation. They never delete posts from the playlist or from your Post Maker.

History and recent activity

History contains completed and stopped runs. Latest status summarizes the newest schedule change, publishing result, cleanup work, or action needed for the current run.

⏱️ Every schedule option

Times and days are always interpreted together. Review the timezone before relying on a posting window.

Rotation name

A required label, up to 120 characters, used to recognize this run in status and history. It can be changed while the rotation is still a draft.

Audience

Follow the bot's Default audience, or choose Groups & channels, Private chats, Groups, or Channels for this rotation. A custom include/exclude audience created from the control group is preserved and shown here, but its targets must be edited from Telegram. The current reachable count is guidance; the audience is resolved again for every post.

First post

Choose the next allowed posting time or a local date and time in the rotation timezone. A custom time is a not-before boundary: active days and posting hours still apply. The server verifies daylight-saving transitions and shows the exact first publication time in the timeline. Publish first post now is a separate one-time override.

Posting interval

The minimum gap between scheduled posts. It must be from 1 minute through 365 days; a new rotation starts at 15 minutes. Missed times are skipped instead of being replayed in a burst.

Timezone

The IANA timezone used for posting hours, active days, and displayed run times. Use device timezone fills the detected zone; save the schedule to apply it.

Posting hours

Leave the window off to allow all-day posting, or choose a start-inclusive and end-exclusive window. Overnight windows such as 22:00–06:00 are supported and belong to the day on which they open.

Active days

Select at least one weekday. For an overnight window, selecting Monday permits the window that starts Monday night and continues into Tuesday morning.

After the last post

Stop the rotation completes the run after one pass. Repeat from the start returns to the first playlist item and continues until you pause, stop, or an issue needs attention.

When the rotation finishes

For a one-pass rotation, keep the final post, delete it after one interval, or delete it when posting hours close. The window-close option appears only when posting hours are enabled. Repeating rotations and per-post duration cleanup keep the final post setting fixed because their own rules already determine what happens next.

Between rotation posts

Delete the previous post before the next keeps each delivered post visible for a full posting interval, deletes it, then applies the optional blank pause before publishing the next one. If that pause crosses closing time, publishing waits for posting hours to reopen. A destination's first post has nothing to delete and does not wait. Keep every post leaves them all. Delete after a duration schedules each publication for independent removal after its chosen lifetime.

Save schedule

The complete form is applied in one atomic update only after you save it. Unsaved changes block both start actions, and revision checks prevent an older page from partially overwriting changes made elsewhere.

🚦 States and live changes

The state tells you what the scheduler can do next and which controls are safe to show.

Draft

Editable and not publishing. Add at least one healthy playlist item, save all schedule changes, then choose Start on schedule or Start now. Discard draft closes it without sending anything.

Active

The scheduler may be publishing, deleting the previous message, observing Pause after deletion, or waiting for the next eligible posting time. Only one occurrence is open at once, so posts never overlap inside one rotation.

Paused

No new playlist item starts. A publication that already began is allowed to finish; Resume calculates the next eligible time rather than replaying missed slots.

Needs attention

The rotation cannot safely continue without a decision, for example because the playlist is empty, no chats match the audience, or cleanup is blocked.

Completed

A stop-after-playlist run reached its end. Its settings, playlist, reports, and remaining published messages stay available.

Stopped

The run was ended manually and cannot be resumed. When stopping, explicitly choose whether to keep its published messages or request deletion of all of them. Use this setup again creates a new editable draft from the preserved schedule and playlist.

Editing while active

Playlist and supported schedule changes apply before a later item starts. An occurrence already publishing keeps its frozen content, audience, and timing snapshot.

🧹 Cleanup and deletion

Cleanup is durable work with its own progress. Telegram permissions can make some deletions impossible.

Clean up old posts

Removes older visible messages while preserving the latest currently visible message in each destination where possible. It does not interfere with an occurrence that is still open.

Clean up all posts

Available after a rotation is completed or stopped. It requests deletion of every message from that run that the system still believes is visible.

When cleanup is blocked

Latest status reports unsuccessful deletion work. Restore the bot's delete permission in the affected destination, then run the appropriate cleanup action again. Messages already absent are counted separately from failures.

Telegram deletion limits

A deletion can fail when the bot lost permission or Telegram no longer permits it. A message that is already absent is counted separately and is not treated as a leftover failure.

🕘 Reuse a previous setup

Terminal runs remain immutable history; reusing one always creates a fresh editable draft.

Previous rotations

Open History to browse completed and stopped runs with their playlist size, interval, timezone, completion time, and latest update.

Use setup

Use this setup again copies the selected run's playlist and reusable schedule into a new draft. It does not alter or restart the historical run, and it is available only when no other unfinished rotation exists. A past one-time first-post date is not reused.

Deleted or changed source posts

A changed saved post remains a frozen snapshot and is marked for awareness. A deleted source must be replaced or removed before the copied draft can start.

Two useful starting points

These examples show how the options combine; adjust the audience and timezone for your own bot.

Keep one rotating message visible

Playlist 1 2 3 · every 15 minutes · repeat from the start · all day · delete the previous post before the next · no pause after deletion. Each destination normally keeps only its latest rotation message.

Run a weekday campaign once

Playlist 4 5 6 · every 2 hours · Monday–Friday · 09:00–17:00 · stop after the playlist · keep every post. Anything that misses the window waits for the next eligible weekday.