
Documentation
Complete command reference, setup guides, and feature deep-dives. Last updated for v2.2.3.
Getting Started
Three steps to get ZT Plush running in your server:
- Click the invite link and choose your server.
- Authorize the requested permissions. The bot needs Manage Roles, Manage Messages, Send Messages, Embed Links, Add Reactions, and a few more — it asks only for what it actually uses.
- In any channel, run
/infofor a full feature overview, or/helpfor category-organized commands.
First-time setup tip: The Server Owner should run zt!setrole <tier> @Role to assign staff tiers. Tiers are helper, mod, senior, and owner. This unlocks the bot's permission system.
Permission Tiers
ZT Plush has four staff tiers plus the Server Owner. Each tier has clearly defined responsibilities:
Read-only access to mod tools. Can view warnings and use /messagelog snipe.
Day-to-day moderation. Run giveaways, toggle emoji/sticker policy, view AutoMod settings, all moderation actions.
Server configuration. Configure tickets, welcome messages, reaction roles, AutoMod tweaks, music settings, stats channels, verification.
Bot identity and sensitive settings. Assign staff tiers, control mod log, toggle AutoMod, toggle Message Logger, sync commands, unban users.
Moderation
Severity-based warnings with auto-escalation. Warnings have three severities: low, medium, high. The bot automatically escalates based on a member's total active warnings.
| Command | Description |
|---|---|
zt!warn @user low|medium|high <reason> | Issue a warning |
zt!warnings @user | View a member's warnings |
zt!unwarn <id> | Low: Mod+, Med: Senior+, High: Owner |
zt!timeout @user <duration> <reason> | Up to 7d for Mod+, 28d for Senior+ |
zt!untimeout @user | Remove timeout |
zt!kick @user <reason> | Kick member |
zt!ban @user <reason> | Ban member |
zt!unban <user_id> | Unban (irreversible action — Owner only) |
Auto-escalation thresholds trigger when total active warnings reach: 3 → automatic timeout, 6 → kick, 8 → ban. Low/medium severity warnings clear when a member leaves; high severity persists across rejoins (capped at 5).
AutoMod (Phishing Protection)
Detects and removes phishing/scam links automatically. Uses a curated Discord-targeted list plus the URLhaus public threat-intel feed (~14,000 domains, refreshed every 12 hours).
Default escalation per member, within 24 hours:
- 1st offense: Delete + high-severity warning + DM offender + ping staff
- 2nd offense: Delete + high warning + 1-hour timeout
- 3rd offense: Delete + 24-hour timeout
- 4th+ offense: Delete + ban
| Command | Description |
|---|---|
/automod view | Current settings (read-only) |
/automod toggle <on|off> | Enable/disable globally |
/automod dm <on|off> | DM offenders on first hit |
/automod alert_role @Role | Staff role to ping in mod log |
/automod response <mode> | default / delete_only / delete_warn / delete_ban |
/automod refresh_threats | Manually update threat list |
Staff are exempt from AutoMod. Members at Helper+ tier and above will never have their messages removed, even if they post a flagged link.
Giveaways
Run prize drawings with role-based entry multipliers.
| Command | Description |
|---|---|
zt!start <duration> <winners> <prize> | Start a giveaway. Duration: 30s, 5m, 2h, 1d, 1w. Winners: 1-20 |
zt!end <id> | End early |
zt!reroll <id> | Pick a new winner |
zt!multiplier add @Role <2-10> | Weighted entries for a role |
zt!multiplier remove @Role | Remove a multiplier |
zt!multiplier list | Show all multipliers |
zt!setlogchannel #channel | Where giveaway logs go |
Support Tickets
13 ticket categories with auto-transcripts. Set up the panel once; members open tickets via dropdown.
| Command | Description |
|---|---|
zt!ticketsetup #channel | Post the ticket panel |
zt!resetticketpanel | Recreate the panel |
zt!setsupportrole @Role | Role pinged when ticket opens |
zt!setticketlogs #channel | Where ticket transcripts go on close |
Music Player
Lavalink-powered with multi-source playback. Best results: SoundCloud URLs — text queries open a picker. YouTube major-label tracks may require login; SoundCloud and indie YouTube work reliably.
| Command | Description |
|---|---|
/music play <query> | Play or queue a track |
/music skip | Skip current track |
/music queue | View the queue |
/music nowplaying | Show what's playing |
/music pause / resume / stop / leave | Playback controls |
/music volume / shuffle / loop / filter | Tweak playback |
/music remove / clear | Manage queue |
/music lyrics | Fetch lyrics |
/music playlist save / load / delete | Saved playlists (Plush+ unlimited) |
/music 247 <on|off> | 24/7 mode |
/music stayinvc <on|off> | Don't auto-leave when VC empties |
Welcome / Auto-Roles
Customizable welcome and goodbye messages with variable substitution. Auto-assign roles on join.
| Command | Description |
|---|---|
zt!setwelcomechannel #channel | Where welcomes post |
zt!setgoodbyechannel #channel | Where goodbyes post |
zt!setwelcomemsg <text> | Welcome template |
zt!setgoodbyemsg <text> | Goodbye template |
zt!setjoinrole @Role | Auto-role on join |
Variables you can use:
{user}, {user.tag}, {user.name}, {server}, {membercount}, {date}, {time}
Reaction Roles
Click-to-assign role panels. Pipe-separated syntax, supports unicode and custom emojis.
| Command | Description |
|---|---|
zt!rrcreate #channel | Title | 🎮 @Role | 🎬 @Role | Create panel |
zt!rredit <message_id> add <emoji> @Role | Add reaction to existing panel |
zt!rredit <message_id> remove <emoji> | Remove reaction |
zt!rrlist | List all panels |
zt!rrdelete <message_id> | Delete panel |
Verification Gate
Bot-protected entry gate, free for everyone. New members see a button → solve a colored-button challenge → role assigned. Stops raid bots cold.
| Command | Description |
|---|---|
/verify setup channel:#x verified_role:@Role rules:"text" | Set up the panel |
/verify view | Current settings |
/verify disable | Disable verification |
Anti-spam: 5 failed attempts triggers a 1-hour cooldown. Make sure the bot's role is above the verified role in Server Settings → Roles.
Message Logger (Plush+)
Plush+ Recover recently deleted messages with /messagelog snipe. Plush+ exclusive feature.
| Command | Description |
|---|---|
/messagelog snipe [count] | Show recently deleted in this channel |
/messagelog view | Current settings |
/messagelog toggle <on|off> | Enable/disable (privacy-sensitive) |
/messagelog post_to_modlog <on|off> | Auto-post deletions to mod log |
Plush+: 10 messages per channel, 1-hour retention. Bots and DMs are never logged.
Translation
DeepL-powered translation in 25 languages. Free tier: 5 per user per day.
| Command | Description |
|---|---|
/translate text:<text or msg ID> to:<lang> | Translate text or quote a message ID |
Cached translations don't count against your quota — same text + same target = free repeat. Plush+ users get unlimited translations.
Polls, AFK, Reminders
| Command | Description |
|---|---|
/poll create <question> <options> [duration] | Pipe-separated options, 2-10 |
/poll end <message_id> | End early |
/afk set <reason> | Set AFK status |
/afk clear | Clear AFK manually |
/remind me <duration> <message> | Set a reminder |
/remind list | View your reminders |
/remind cancel <id> | Cancel a reminder |
Content Extraction
Extract emojis, stickers, avatars from any message. Embed social media URLs cleanly.
| Command | Description |
|---|---|
/emoji steal <input> | Up to 10 emojis or a message ID |
/sticker steal <message_id> | Steal a sticker |
/avatar [@user] | View avatar with download buttons |
/tweet embed <url> | Embed Twitter/X URL |
/reddit embed <url> | Embed Reddit URL |
/instagram embed <url> | Embed Instagram URL |
/tiktok embed <url> | Embed TikTok URL |
/emoji toggle <on|off> | Toggle emoji extraction |
/sticker toggle <on|off> | Toggle sticker extraction |
Command Updates — When New Commands Don't Show
Discord caches command lists per-server. After updates, new commands may not appear immediately. This is normal — here's how to fix it:
- Refresh your Discord client first: Press Ctrl+R on desktop, force-close and reopen on mobile.
- Still missing? Server Owner runs
/sync refresh— instant per-server sync (5-min cooldown). - Need to reset?
/sync resetremoves guild-specific overrides.
Why this happens: ZT Plush registers commands globally. Discord's CDN propagates updates within ~1 hour, but Ctrl+R and /sync refresh skip the wait.