Guide
Everything you can set up with Packet, plus the message variables you can use in welcomes, announcements, and more. New here? Start with About for the big picture, then come back for the how-to.
Everything you can set up with Packet, plus the message variables you can use in welcomes, announcements, and more. New here? Start with About for the big picture, then come back for the how-to.
Your server is described by a blueprint— one document covering roles, channels, permissions, and Packet’s own features. Edit it on Configure, preview on Diff, then Apply. Nothing changes until you hit Apply, and Packet takes an automatic backup first.
Four steps, one line: author a blueprint, configure it visually or with AI, review the diff, then apply — and your live server matches, in a single commit.
Build these in the Configure editor, then apply — or author them in the blueprint directly (AutoMod is blueprint-authored). A glyph per group so the list reads at a glance.
Usable in any Packet-posted message (welcomes, scheduled messages, forum pings, first posts). Case-insensitive; anything unrecognized is left exactly as you typed it.
{user}Clickable mention (pings them){user.name}Display name (nick / global){user.tag}Their @handle{user.avatar}Avatar image URL — use in an embed image{server}Your server’s name{server.icon}Your server’s icon URL{memberCount}Total members (e.g. 1,234){memberCount.ordinal}As a rank (e.g. 1,234th){forum}The forum’s name{winner}The winning post{votes}Its vote count{link}Link to the post{reason}The ban reasoncase-insensitiveAnything Packet doesn’t recognize is left exactly as you typed it. In an embed’s title, author, or footer, mentions don’t render — use {user.name} there instead of {user}.
Everything you can set up with Packet, plus the message variables you can use in welcomes, announcements, and more. New here? Start with About for the big picture, then come back for the how-to.
Your server is described by a blueprint — one document covering your roles, channels, permissions, and Packet's own features. You edit it visually on the Configure page, preview exactly what will change on the Diff page, then Apply it to your live server. Nothing changes until you hit Apply, and Packet takes an automatic backup first.
Set every one of these up in the Configure editor — the section to open is noted with each — then preview the change and apply it. (You can also author any of them in the blueprint directly, or with the AI generator.)
Define your role hierarchy, colors, and per-role permissions. Role bands group roles by purpose (staff, color, activity, members) and keep them ordered correctly. Packet writes channel permission overwrites for you, so private and read-only channels are correct by construction. (Configure → Roles and Role bands.)
Text, voice, forum, announcement, and stage channels, organized into categories — created, renamed, moved, and kept in sync. Rename anything and Packet re-points every reference automatically. (Configure → Channels.)
A message members click to add or remove their own roles (buttons or a dropdown). Use several pickers to split menus by topic or across channels, and auto-assign roles on join. (Configure → Features.)
Let members pick their own name color. Offer a preset palette (organized into a single-select menu, auto-split across menus if it's large), or enable custom colors so members choose any hex color via a button. (Configure → Color roles for the palette; Custom colors for the pick-your-own option.)
Auto-assign a hoisted role while a member is playing a game or using an app (for example, a "Playing ARK" role, or a "Listening to Spotify" role) — removed shortly after they stop, so the member list groups people by what they're doing. (Configure → Activity roles.)
Sticky roles restore a member's roles when they rejoin. Temporary roles let
staff grant a role that auto-expires, via /temprole. (Configure → Features.)
Post a message when a member joins, leaves, or is banned — plain text, a
rich embed card, or both. Add an optional pinned welcome panel (a kept-in-sync
rules/welcome board) and an optional welcome DM. Uses variables like {user} and
{memberCount} (see below). (Configure → Greeter.)
Post a message to a channel on a schedule — every few hours, or on set days and times in your timezone (e.g. every Friday at 6pm, daylight-saving aware). Plain text or a rich embed. A Send now button posts on demand. (Configure → Scheduled messages.)
Run a community-engagement loop on a forum: Packet periodically opens a poll of the top posts, announces the winner, and can run a follow-up "should we implement it?" vote. It can also post and pin a first post (rules / how-it-works), archive stale threads, and ping a role when a poll opens. Configure tags, the default reaction, and guidelines per forum. (Configure → Forums.)
Discord's invite-time welcome screen (a description plus up to five channel shortcuts) and the embeddable server widget — both kept in sync, with a copy-ready embed builder for the widget. (Configure → Welcome & widget.)
Periodically capture a backup of your whole server on a schedule, keeping the most recent N. Automated snapshots are tamper-resistant — they can't be deleted manually, so your safety net stays intact. (Configure → Auto snapshots.)
Discord's native AutoMod, in your blueprint: keyword filters, username (member-profile) filters, the built-in profanity / sexual-content / slur presets, spam blocking, and mention-spam limits — each with exempt roles/channels and actions (block the message, send a staff alert, time the member out, or quarantine them). (Configure → AutoMod.)
Announce when a creator goes live or posts — your own channels or your favorite creators, Packet just watches public feeds. It posts a rich card to the channel you pick, exactly once per stream or post (no spam, no duplicates). (Configure → Social alerts.)
Platforms you can watch (what to put in the Creator box):
| Platform | What it announces | Creator field |
|---|---|---|
| Twitch | Goes live | Twitch username — shroud |
| Kick | Goes live | Kick username — xqc |
| YouTube | New upload | Channel ID — UC… (not the @handle) |
| New post | r/subreddit or u/username | |
| GitHub | New release | owner/repo — facebook/react (or owner/repo/commits) |
| Steam | Game update | App ID — the number in the store URL, e.g. 346110 |
| Bluesky | New post | Handle — name.bsky.social |
| Mastodon | New post | @[email protected] |
| RSS / Atom | New item | Any feed URL — covers blogs, podcasts, Substack, Medium, and more |
Setup: open Configure → Social alerts, + Add alert, pick a platform, paste
the creator, and choose the channel to post in. Twitch and Kick need a one-time setup
by the bot's operator (a free developer app — see .env.example); every other platform
works out of the box. Hit Send test alert to preview the card — it uses the
creator's most recent post (or current stream), so you can see a real alert without
waiting, even for someone who rarely posts.
Post style — each alert is one of two styles (pick it per alert; new alerts start on the recommended one for that platform, and you can switch any time):
Make it yours — each alert can also have:
Alert variables (for the message + embed): {creator}, {title}, {url},
{game}, {viewers}, {platform}, and {mention} (the ping role). Plus {server}
and {memberCount}. For example: {mention} **{creator}** is live playing {game}! {url}
Not supported (yet): TikTok, X/Twitter, Instagram, Facebook, and Threads don't offer a free way to watch arbitrary creators, so they're not available. Many of those creators cross-post to a platform above — watch them there.
Moderate your server from /mod in Discord: warn, mute (timeout), kick, and
ban members — each recorded as a numbered case with its reason, and /mod history
shows a member's whole record. Set up an escalation ladder so Packet auto-mutes, kicks,
or bans once a member accumulates enough strikes. Discord's own actions (a manual ban, an
AutoMod timeout) can feed the same record, so repeat offenders escalate even when no staff
are online. In Configure, choose the mod-log channel, which staff roles are exempt, whether
the member gets a DM, and the escalation thresholds. (Configure → Moderation; the actions
themselves are /mod commands in Discord.)
Keep a record of your server's activity. Packet mirrors joins and leaves, nickname and role changes, bans and kicks, channel and server edits, and members using Packet's own features — to a log channel in Discord AND a dashboard activity feed on the server's Status page. Route different kinds to different channels, exempt certain roles or channels, choose who each log entry posts as, and set how long the dashboard feed keeps history. (Configure → Logging.)
Let members open private, staff-only help rooms. Post a panel with a button members click
to open a ticket, and Packet creates a private channel and writes the permissions itself, so
a ticket can't leak. Staff claim, reply, close, and triage tickets right in
Discord (/ticket) or from a full dashboard with search, filters, priorities, tags, and canned
replies — and a cross-server Tickets hub manages every server you run in one place. Set the
staff roles, an auto-close timer for idle tickets, a satisfaction survey on close, and optional
questions asked before a ticket opens. (Configure → Tickets.)
Opt in to Packet's own announcements. Pick a channel and Packet posts new features, fixes, and news there as a clean, managed message — so you find out what's new without leaving your server. Add a ping role if you want members notified. (Configure → Packet updates.)
In any Packet-posted message (welcomes, scheduled messages, forum pings, first posts) you can drop in variables — they're filled in when the message is sent. They're case-insensitive, and anything Packet doesn't recognize is left exactly as you typed it.
| Variable | Becomes |
|---|---|
{user} / {user.mention} | A clickable mention of the member (and it pings) |
{user.name} | Their display name (nickname / global name) |
{user.tag} | Their @handle |
{user.avatar} | Their avatar image URL (use in an embed image field) |
{server} / {server.name} | Your server's name |
{server.icon} | Your server's icon URL |
{memberCount} | Total members (e.g. 1,234) |
{memberCount.ordinal} | Member count as a rank (e.g. 1,234th) |
{forum} | The forum's name (forum messages) |
{winner} / {votes} / {link} | The winning post / its votes / its link (poll winner announcements) |
{reason} | The ban reason (ban announcements) |
{creator} / {title} / {url} | The creator, the stream/post title, and its link (social alerts) |
{game} / {viewers} | The game and viewer count (live social alerts) |
{platform} / {mention} | The platform name, and the ping role (social alerts) |
Where each works: {user.*} only exists for the Greeter (welcome/goodbye/ban) —
those are the only per-member events. Scheduled messages, forum pings, and first posts
have {server}, {memberCount}, and (for forums) {forum}. Social alerts add
{creator}, {title}, {url}, {game}, {viewers}, {platform}, and {mention}.
@RoleName (the exact role name) to ping a role. @everyone and @here work
too.#channel-name (the exact channel name) to turn it into a clickable channel
link.One catch: Discord only renders mentions in a message's body and inside an embed's
description or field values — not in an embed title, author, or footer.
In those spots, use {user.name} (a plain name) instead of {user} (a mention), or
they'll show as raw code. (Packet handles this for you in titles — {user} there shows
the name automatically.)
Greeter messages, scheduled messages, forum posts, and social alerts can include a rich
embed: a title, description, accent color, author line, thumbnail and banner images,
fields, footer, and a timestamp. Set {user.avatar} as the thumbnail for a welcome card, use
{memberCount} in the footer, and so on. Leave the embed blank for a plain-text
message.