Punishments
Zander gives your staff a consistent, accountable way to handle rule-breaking on Discord and on the website. Every punishment is logged, temporary punishments lift themselves automatically once their time is up, and players always have a way to appeal - so your moderation stays fair and transparent.
📸 Screenshot: The public punishment log at /punishments showing active bans and warnings with issue dates and reasons
:::warning Two separate punishment systems It's important to understand that Zander actually has two separate punishment systems. They sound similar and both use the word "punishment," but they punish different things and don't share the same records:
- In-game punishments (LiteBans) - these are the bans, kicks, mutes, and warnings your Minecraft anti-cheat/moderation plugins hand out in-game, using the popular LiteBans plugin. Zander doesn't create or manage these - it just displays them. The public /punishments page on your website simply reads and shows this LiteBans data live; it can't issue or remove a punishment, only display what already happened in-game.
- Web Punishments (dashboard) - these are punishments your staff issue from the website dashboard, and they act on a player's website account rather than their in-game access - for example, blocking someone from logging into your site. These are stored separately from LiteBans, in the same place Zander stores Discord punishments. Web Punishments never touch the LiteBans data and never show up on the public
/punishmentspage.
Discord punishments (covered next) and Web Punishments are close cousins - they're stored together and expire the same way - but staff issue them through two different places: the /punish command in Discord, versus the dashboard. In-game (LiteBans) punishments are a completely separate system that Zander only displays, never controls.
:::
Discord Punishments​
Staff issue Discord punishments using the /punish slash command right in Discord. To use it, a staff member needs their Minecraft account linked and the right permission group for the action they're taking.
Punishment Types​
| Type | Command | Duration | Description |
|---|---|---|---|
| Warning | /punish warn | Permanent | Formal warning logged against the user |
| Kick | /punish kick | - | Removes the user from the Discord guild immediately |
| Temporary Ban | /punish tempban | Required | Bans for a specified duration |
| Permanent Ban | /punish ban | Permanent | Bans indefinitely |
| Temporary Mute | /punish tempmute | Required | Mutes in chat and voice for a specified duration |
| Permanent Mute | /punish mute | Permanent | Mutes indefinitely (chat and voice) |
Duration format: <number><unit> - for example: 1h (1 hour), 7d (7 days), 2w (2 weeks).
All punishments support an optional evidence URL and a silent flag to suppress the public log message.
📸 Screenshot: The /punish command with subcommand options visible in Discord's command picker
Lifting Punishments​
| Action | Command | Permission |
|---|---|---|
| Unban | /punish unban <user> <reason> | zander.discord.punish.ban |
| Unmute | /punish unmute <user> <reason> | zander.discord.punish.mute |
You don't need to remember to lift temporary punishments yourself - Zander automatically checks for and lifts them the moment their time is up.
Viewing History​
/punish history accepts a Discord user, Minecraft username, or Discord tag/ID and returns the full cross-platform punishment record.
Configuration​
To set up which Discord role gets applied when someone is muted, which channel punishment logs post to, and which permission group is required for each punishment type, edit these settings in config.json:
"discord": {
"punishments": {
"logChannelId": "CHANNEL_ID",
"appealBaseUrl": "/appeal",
"permissions": {
"can_warn": "zander.discord.punish.warn",
"can_kick": "zander.discord.punish.kick",
"can_ban": "zander.discord.punish.ban",
"can_mute": "zander.discord.punish.mute",
"can_view_history": "zander.discord.punish.history"
},
"requireDmSuccess": false
},
"roles": {
"muted": "ROLE_ID"
}
}
Set requireDmSuccess: true if you want punishment commands to fail silently when a DM cannot be delivered to the user.
Web Punishments​
Web Punishments restrict what a player can do on your website - they don't affect a player in-game at all, and they're completely separate from the in-game LiteBans punishments described in the warning above. Staff issue and manage them entirely from Dashboard → Web Punishments at /dashboard/web-punishments, which requires the zander.web.punishment.manage permission. There's no way to issue or lift these from outside the dashboard.
📸 Screenshot: The web punishments dashboard showing active punishments with type badges, issue dates, and a "Lift" button
Punishment Types​
| Type | Value | Effect |
|---|---|---|
| Warning | WARN | Warning recorded on the account - no access restriction |
| Temporary Ban | TEMP_BAN | Prevents the user from logging in to the website for the specified duration |
| Permanent Ban | PERM_BAN | Permanently blocks website login |
Issuing a Punishment​
- Click Create (Issue Punishment) in the Web Punishments dashboard - posts to
POST /dashboard/web-punishments/create. - Enter the target username, punishment type, reason, and duration (required for temporary bans; format
30m,1h,7d,2w). - Save. This looks up the target account, inserts a
discord_punishmentsrow withplatform = 'WEB', and takes effect immediately.
If the player has a linked Discord account, they'll receive a direct message letting them know, and a notification is posted using the same behind-the-scenes notification system the Discord /punish command uses.
Lifting a Punishment​
Find the active punishment in the dashboard and click Lift. You can only lift punishments that are currently active.
Just like Discord punishments, temporary Web Punishments are lifted automatically once their time runs out - no need to check back and remove them manually.
For Players - Appeals​
If you believe a punishment was issued unfairly, you can appeal at /appeal.
Discord Punishment Appeals​
- Navigate to
/appealand locate your punishment. - Enter a clear reason for your appeal and submit.
Appeal rules:
- Only you can appeal your own punishment.
- You cannot submit a duplicate appeal while one is still pending.
- Inactive punishments cannot be appealed.
Your appeal will be reviewed by staff, who may approve or reject it with optional notes.
Web Punishment Appeals​
Web punishment appeals are handled through the ticket system. Head to /appeal and your request will be routed into a dedicated appeal support ticket for staff review.
Public Punishment Log​
The /punishments page shows a public log of active punishments so your moderation stays transparent and your community can see it's being applied fairly. This log shows only in-game (LiteBans) punishments - not Discord or Web Punishments - and lists recent bans, kicks, mutes, and warnings, with player names shown instead of raw account IDs. Anyone can view this page; no login is required.