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 c8fa, 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