Discord Webhooks

Discord Webhooks

Webhooks are disabled initially. In webhooks.yml, set webhooks.enabled: true and place your Discord HTTPS webhook endpoint in webhooks.default-url. Keep that endpoint private. Reload with /wrongpunish reload.

The selected locale/*.yml supports MiniMessage, legacy &/hex colors, <br>, YAML block strings and lists. Text originating from a player or moderator is inserted literally. Prefix, date format, units, screens, history, confirmations and errors are configurable. The default palette is cyan &#25c8fa, white, gray and the dark arrow separator.

Supported placeholders include all punishment/player/staff/removal fields from the specification: {id}, {public_id}, {type}, {reason}, {duration}, {remaining}, {created}, {expires}, {permanent}, {silent}, {active}, {template}, {ladder}, {player}, {player_uuid}, {player_display_name}, {player_server}, {staff}, {staff_uuid}, {removal_staff}, {removal_reason}, {removal_date}, plus {server} and {scope}. Player display name is the observed plain account name; server is the issuing node. {player_bans}, {player_mutes}, {player_warnings}, {player_kicks} are immutable history-count snapshots taken when the punishment is issued, including that punishment. Public IDs use 64 bits of random data and can be disabled in display configuration.

Webhook events cover ban/temp-ban/IP-ban/unban, mute/temp-mute/IP-mute/unmute, warn/unwarn, kick, alts and lockdown. Configure explicit silent variants as needed. Webhooks are disabled by default and accept Discord HTTPS endpoints only. Payloads use proper JSON escaping, embeds, field length limits, disabled mentions, a bounded queue and bounded retries for rate limits/transient errors. Address fields are omitted. Field labels are configurable, and webhooks.field-values.<field> can format values using punishment placeholders. Notifications are sent once by the originating node, not by every synchronized server.

Shipped payload settings

# Send webhooks once from the issuing server
webhooks:
  enabled: false
  default-url: ''
  title: 'WrongPunish > {event}'
  color: 15158332
  fields:
    player: Player
    player_uuid: UUID
    reason: Reason
    duration: Duration
    staff: Staff
    server: Server
    public_id: Punishment ID
    template: Template
    created: Time
    removal_staff: Removal staff
  events:
    ban: true
    temp-ban: true
    ip-ban: true
    unban: true
    mute: true
    temp-mute: true
    ip-mute: true
    unmute: true
    warn: true
    unwarn: true
    kick: true
    alts: true
    lockdown: true
    # Missing silent events use the normal event setting
    silent-ban: false
    silent-temp-ban: false
    silent-ip-ban: false
    silent-mute: false
    silent-temp-mute: false
    silent-ip-mute: false
    silent-warn: false
    silent-kick: false