Zagreus

Moderation

Content moderation, thread management, trade enforcement, and comprehensive audit logging.

Zagreus provides layered moderation tools that cover content filtering, trade enforcement, thread management, and audit logging. Every moderator action is permanently recorded and queryable, ensuring accountability and transparency.

Trade bans prevent users from posting in any monitored trade channel. Banned users' messages are automatically deleted and they receive an ephemeral notification explaining the ban.

Content Moderation

Per-user content blocking allows moderators to restrict specific types of content from individual users. This is more granular than channel-level permissions and does not require modifying Discord roles.

Blockable Content Types

Content TypeDescription
ImagesAttached image files (PNG, JPG, GIF, WebP)
VideosAttached video files (MP4, MOV, WebM)
LinksAny URL in the message content
EmbedsRich embeds from links (previews, OpenGraph cards)
FilesNon-media file attachments (ZIP, PDF, etc.)
SoundVoice messages and audio file attachments
Forwarded MessagesMessages forwarded from other channels or servers

How It Works

  • A moderator runs /content-block add @user <type> to block a content type for a specific user
  • When the user posts a message containing the blocked content type, the message is automatically deleted
  • The user receives an ephemeral message explaining what was blocked and why
  • Optionally, a timeout can be applied — the block expires automatically after the specified duration
  • Multiple content types can be blocked for the same user simultaneously
  • Blocks are logged in the audit trail with the moderator who set them

Trade Enforcement

Trade Bans

Trade bans prevent a user from posting in any monitored trade channel across the entire server.

Temporary Bans

  • Set a duration (hours, days, weeks) for the ban
  • The ban auto-expires when the duration elapses
  • The user receives a DM notification when banned and when the ban expires
  • A reason is recorded in the audit log

Permanent Bans

  • No expiry date — the ban persists until manually removed by a moderator
  • The user is notified via DM
  • Permanent bans are visually distinguished in the audit log and dashboard

Ban Behavior

  • Messages posted by banned users in monitored channels are immediately deleted
  • The user receives an ephemeral message with the ban reason and expiry (if temporary)
  • Ban status is visible on the user's trade profile
  • Bans are enforced even if the user leaves and rejoins the server

Trade Mutes

Trade mutes are a lighter alternative to bans. A muted user's messages are not deleted, but they are flagged and the user is rate-limited.

  • Always temporary: Mutes require a duration and auto-expire
  • Rate limiting: Muted users can only post one trade per configurable interval
  • Visual indicator: Muted users' trades may be marked with a mute indicator
  • DM notification: The user is informed of the mute, its reason, and when it expires

Suspicious Activity Detection

Zagreus automatically flags potentially suspicious trading behavior:

  • New account trading: Users with accounts younger than a configurable threshold posting trades
  • Rapid trade posting: Posting more than a configurable number of trades within a short window
  • Cross-channel duplication: Identical trade content posted in multiple monitored channels
  • Edited prices: Trade posts where the price was modified after initial posting
  • Deleted and reposted: Trades that are deleted and immediately reposted (potential scam pattern)

Flagged activity is sent to the configured notification channel for moderator review. No automatic action is taken.


Thread Management

Thread Rules

Per-thread content restrictions that function similarly to content blocks but apply to everyone within a specific thread.

  • Configure which content types are restricted in a thread (images, links, files, etc.)
  • Messages violating thread rules are auto-deleted with an ephemeral explanation
  • Optionally apply a timeout to rule violators — users who repeatedly break thread rules receive a Discord timeout
  • Thread rules persist until manually removed or the thread is archived
ConfigurationDescription
Restricted typesWhich content types are blocked in the thread
Timeout durationHow long to timeout repeat violators (optional)
Warning thresholdNumber of violations before a timeout is applied
Exempt rolesRoles that are not subject to thread rules

Thread Bans

Thread bans prevent specific users from participating in a thread.

Temporary Thread Bans

  • Set a duration for the ban
  • The user is removed from the thread and cannot rejoin until the ban expires
  • Auto-expiry with DM notification

Permanent Thread Bans

  • The user is permanently removed from the thread
  • If the user attempts to rejoin (via thread member updates), they are automatically removed again
  • Join attempt notifications are sent to the moderator who set the ban

Thread Ban Enforcement

  • When a banned user is detected joining a thread, they are immediately removed
  • The threadMembersUpdate event handler monitors for banned users rejoining
  • A notification is sent to the configured log channel when enforcement occurs

Delete and Edit Logging

Zagreus can log deleted and edited messages to a designated channel, providing a record of removed content.

Configurable Log Channels

  • Set one or more channels to receive delete/edit logs
  • Different channels can be configured for different categories (trades vs. general)

Who-Deleted Detection

When a message is deleted, Zagreus attempts to determine who deleted it:

  • Self-delete: The author deleted their own message
  • Moderator delete: A moderator or bot deleted the message (detected via audit logs)
  • Unknown: Could not determine the deleter (Discord audit log limitations)

Filtering

Fine-tune what gets logged to avoid noise:

FilterDescription
Ignored channelsMessages deleted in these channels are not logged
Ignored rolesMessages from users with these roles are not logged when deleted
Ignored prefixesMessages starting with these prefixes are not logged (useful for bot command prefixes)

Uncached Message Logging

When a message is deleted that was not in the bot's cache (sent before the bot started or too old):

  • The log entry shows "[Uncached Message]" with the message ID and channel
  • If the message was a trade, the trade database record is referenced

Attachment Metadata

When a deleted message contained attachments:

  • File names, sizes, and types are logged
  • Image dimensions are recorded when available
  • Attachment URLs are included (may expire after Discord's CDN retention period)

Audit Log

Every moderation action taken through Zagreus is permanently recorded in the audit log. This provides a complete, tamper-proof history of all moderation activity.

Recorded Actions

  • Trade bans and unbans (with reason, duration, moderator)
  • Trade mutes and unmutes
  • Content blocks added and removed
  • Thread bans and unbans
  • Thread rules changes
  • Giveaway moderation (end, cancel, reroll)
  • Configuration changes (channel monitoring, role assignments)

Querying the Audit Log

The audit log can be queried via:

  • Slash command: /trade audit-log with filters for user, action type, date range, and moderator
  • Web dashboard: Full-featured audit log viewer with search, filters, pagination, and export

Audit Log Fields

FieldDescription
TimestampWhen the action occurred
ActionThe type of moderation action
ModeratorWho performed the action
TargetThe user affected by the action
ReasonThe reason provided (if any)
DurationFor temporary actions, the duration
DetailsAdditional context specific to the action type

Commands

CommandDescription
/content-block <add|remove|list> <user> [type]Manage per-user content type restrictions. Add or remove blocks for images, videos, links, embeds, files, sound, or forwarded messages. List shows all active blocks for a user.
/thread-rules <set|clear|view> [thread]Configure content restrictions for a specific thread. Set restricted types, timeout duration, warning threshold, and exempt roles.
/thread-ban <add|remove|list> <user> [thread] [duration]Ban or unban a user from a specific thread. Supports temporary and permanent bans with duration. List shows all active thread bans.
/log-prefs <set|view>Configure delete/edit logging preferences. Set log channels, ignored channels, ignored roles, and ignored prefixes.

All moderation commands require the Trade Moderator role. Admin-level actions (like configuring log channels) require Discord Administrator permission.

On this page