📦 Post Rules - Lifecycle for whole Posts & Threads
Post Rules manage whole posts/threads — not the messages inside them. Use them to automatically archive, lock, or delete posts that went quiet, got answered, or outlived their purpose.
Typical uses:
- “Archive support posts 3 days after the last reply, delete after 14 days”
- “Lock introduction posts once they’re 24h old”
- “Delete posts tagged
solvedafter 2 days of silence” - “Delete a post once autodelete has emptied it”
✨ Premium: Post Rules are currently a Premium feature during the staged rollout.
Where to manage them
- Run
/forum-setupand pick the forum (or media channel) - Click “Post Rules”
- Create a rule, configure it (all options below), then Enable it
One rule per forum. Message autodelete inside posts stays a separate setting (the config menu above, see Forum Setup) — both can run at once and don’t interfere.
🔐 Permissions: Manage Threads is required — Discord hard-requires it for locking and deleting threads, and it’s also what lets the bot cover private threads. The bot checks this when you enable the rule and will tell you exactly what’s missing; it will not bother servers that never use thread features.
The lifecycle model
A rule tracks every post of the forum and runs its actions as soon as any trigger matches. Think:
“WHEN [trigger] matches a post (with [conditions/exclusions] in effect), DO [stage 1], then [stage 2] after [delay], then …”
Everything is time-anchored to the moment the trigger first matched, and a post can “escape” again — for example, a new reply restarts the inactivity clock, and a community manager pinning it removes it from consideration entirely. The bot also re-checks each post’s live state right before every action, so it never acts on stale assumptions.
Triggers
All are optional; a rule needs at least one to do anything. Multiple triggers use OR logic — whichever matches first starts the actions.
| Trigger | What it means | Notes |
|---|---|---|
| Inactive for | Time since the last message in the post | Resets on every new message. Great for “went quiet” workflows |
| Max post age | Time since the post was created | Never resets. Great for time-boxed content (“weekly Q&A”) |
| Max messages | The post reaches at least N messages | Checked as messages arrive |
| When emptied | Autodelete has removed all tracked messages in the post | Fires after this bot itself emptied the post. Verified live before acting — no false positives |
Durations accept the usual syntax (30s, 45m, 12h, 7d). Leaving a field empty turns that trigger off.
ℹ️ Info on the timestamps: for posts that already existed when the rule was enabled, the bot anchors to their real last-activity time (not “now”), so a long-dead post gets treated as long-dead immediately — it doesn’t gain a fresh grace period just because you adopted the feature today.
Conditions & Exclusions
Posts matching an exclusion are never touched — even mid-sequence: if a post becomes excluded between two stages, the remaining stages are skipped automatically.
| Option | Meaning |
|---|---|
| Skip pinned posts | Pinned posts are never affected (on by default; unpinning + archiving by a moderator removes the pin flag and makes the post manageable again) |
| Skip owners… | Comma-separated user IDs whose posts are never touched (e.g. staff accounts). Enable Discord’s developer mode to copy user IDs |
| Skip roles… | Posts whose author has one of the selected roles are never touched (role picker). New members gaining/losing the role become eligible/ineligible from the next check onwards |
| Require tags… | Only act on posts that carry at least one of these forum tags (comma-separated tag IDs) |
| Skip tags… | Never act on posts carrying one of these forum tags (comma-separated tag IDs) |
About tag IDs: for now, tags are entered by ID (developer mode → right-click a tag). If unsure, open the forum’s tag list and copy via right-click.
Actions (stages)
Actions run in order, each waiting its configured delay after the trigger first matched. Think escalation, not instant doom.
| Action | Effect | Reversible? |
|---|---|---|
| Archive | The post disappears from the active list and becomes read-only. It stays searchable and restorable | ✅ Reversible |
| Lock | + archived; regular members can no longer post | ✅ Reversible (by moderators) |
| Delete | Post and its content are gone | ❌ Permanent |
Editing tools per stage: ⏱ set delay, ▲ move up, 🗑 remove. Plus “Add stage” to append new ones. Rules:
- Delete is terminal — anything after it could never run, so it’s allowed once, and only as the last stage
- Up to 3 stages per rule (covers every realistic escalation)
Canonical example — “soft-close support posts”:
Trigger: Inactive for 7 days
Actions: 1. Archive — 0s (close it once quiet)
2. Delete — 23d (hard-delete a month-ish after it went quiet)
Exclusions: Skip pinnedNew replies before stage 2 lands revive the post: the trigger un-matches, the clock restarts — the post stays alive as long as the conversation does.
How it decides what’s “real”
Instead of trusting old snapshots, before every single action the bot asks Discord for the post’s current state. Practical consequences you can rely on:
- A moderator manually archiving/unarchiving is respected, never fought
- A pin that happened after the trigger matched still protects the post in time
- A post that was deleted by hand doesn’t produce errors — the rule simply lets go
And if permissions are lost along the way, the rule backs off that post instead of spamming failures.
Coverage & the permission-based limits
Enabling a rule immediately covers:
- existing known posts (everything the bot has ever seen), and
- already-archived posts, found via the Discord API where your server’s permissions allow:
| Post type | Coverage when enabling |
|---|---|
| Public posts (all forum posts are public!) | ✅ Active and already-archived ones |
| Private threads (text channels only) | ✅ If the bot has Manage Threads or was invited into them; ❌ otherwise impossible — Discord hides their very existence |
Existing posts are seeded with their true history, so a “delete after 30 days inactive” rule correctly catches a post that has already been idle for 45 days on day one of using the feature.
New posts are registered the instant they’re created.
Managing an existing rule
- Edit any part while it’s enabled or disabled — running instances see updates within moments
- Disable pauses everything for that rule (stages stop wherever they are) — re-enabling resumes from live state
- Delete removes the rule and unwinds all running instances immediately
- The rule is configured per forum; use
/forum-setup→ “Post Rules” again to reopen the editor
Troubleshooting
“Nothing happens to old posts” → Check the rule actually got Enabled (top of the editor shows 🟢 Active), that a trigger is set, and that the posts you expect aren’t excluded (pinned? author role?)
“A post got archived while people were still talking” → Impossible if the trigger is inactivity — replies reset the clock — but possible with the Max age or Max messages triggers, which don’t care about activity. That’s by design; use “Inactive for” for conversation-driven behavior.
“Posts disappeared with no warning” → Sounds like the Delete stage. If that’s spicier than intended, insert an Archive stage with a delay before it, and keep “Skip pinned posts” on.
See also: Forum Setup · Include Threads · Category Setup