Moderation

Manual moderation actions via Slash-Commands

The Moderation module provides Slash-Commands for all common moderation actions. Every action is logged in a dedicated mod-log channel and optionally reported to the affected user via DM. Moderators must hold a configured Moderator role to use the commands.

Setup

  1. Enable Moderation in the dashboard
  2. Select Moderator roles (roles that are allowed to use all mod commands)
  3. Select immune roles (e.g. Admins — these cannot be banned or muted)
  4. Select a mod-log channel (recommended: a private channel visible only to mods)
  5. Enable or disable DM-on-punishment (default: ON)
  6. Save

Slash-Commands

All commands require a Moderator role. The target user must be on the server (except for /unban).

/ban

slash
/ban <@user> [duration] [reason]

Bans the user from the server. Without a duration: permanent ban. With a duration: temporary ban that is automatically lifted after it expires.

/kick

slash
/kick <@user> [reason]

Kicks the user from the server. No automatic unban — the user can rejoin immediately.

/mute

slash
/mute <@user> [duration] [reason]

Silences the user via Discord timeout. Without a duration: 10 minutes (Discord minimum). The user cannot send messages or join voice channels.

/unmute

slash
/unmute <@user> [reason]

Lifts an active timeout immediately.

/warn

slash
/warn <@user> <reason>

Issues a warning. Saved in the mod log and in the action history. Has no direct Discord consequence — but you can escalate manually if someone accumulates too many warnings.

/unban

slash
/unban <user-ID> [reason]

Lifts an active ban. Since the user is no longer on the server, an ID is used instead of a mention.

/history

slash
/history <@user>

Shows the complete chronological action history for a user: all warnings, mutes, kicks, and bans with date, duration, reason, and responsible Moderator.

Duration syntax

For /ban and /mute, durations are specified in the format <number><unit>:

InputMeaning
30m30 minutes
2h2 hours
7d7 days
2w2 weeks
(no value)Permanent (no expiry)
slash
Example: /ban @Spammer 7d Spam in #general

Mod log

Every moderation action creates an Embed post in the configured mod-log channel. The Embed contains: action type, affected user (avatar + name + ID), Moderator, reason, duration, and timestamp.

Create a private channel for the mod log that is only visible to Moderators. This keeps documentation internal.

DM to affected users

When DM-on-punishment is enabled (default), the bot attempts to send the user a direct message before the action. The DM contains the action type, duration, reason, and a note with the server name. If the user has DMs disabled, the action is carried out anyway — the bot just shows a silent note in the command response.

For bans, the DM is sent before the ban, since DMs are not possible after the ban takes effect.

Troubleshooting

Command does not appear in Discord
Slash-Commands can take up to 1 hour to register after activation. With a custom bot: up to 1 hour after the bot restarts.
"Missing permissions" on /ban
Check the role hierarchy: TeraOne must be above the target user in the hierarchy. The bot also needs the "Ban members" permission.
Mod-log post does not appear
Check that the bot has write and embed permissions in the mod-log channel.

Frequently asked questions

Can I restrict Moderators to specific actions (e.g. warnings only, no bans)?
Currently permissions are binary: Moderator role = access to all mod commands. Granular per-command permissions are planned.
What happens to a temporary ban if the bot goes offline?
The expiry timestamp is stored in the database. When the bot comes back online, all expired bans are lifted retroactively.
Can the warning history be deleted?
No, mod actions are stored immutably — this is intentional to maintain a complete audit trail.
Moderation · TeraOne Docs · TeraOne