feat: sanction DM links and per-event colour coding (#13)
Node.js CI / CI (push) Successful in 28s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 2m12s

## Summary

- Adds resource links (appeal form, sanction logs, contact page, community invite) to all sanction DMs, separated from the sanction text by a Components v2 separator
- Adds a unique accent colour for every mod log and activity log event type, giving each action a distinct visual identity at a glance

## Changes

- `src/utils/components.ts` — Added `sanctionDmMessage` helper with two-section container (sanction text + links); added full `Colours` palette covering all sanction and activity event types; added `ColourKey` export
- `src/commands/{ban,kick,mute,softban,warn}.ts` — Updated DMs to use `sanctionDmMessage` with the appropriate colour
- `src/modules/logModAction.ts` / `logActivity.ts` — Thread `colour` parameter through to message builders
- All event and command files updated with their respective colours

 This PR was created with help from Hikari~ 🌸

Reviewed-on: #13
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
This commit was merged in pull request #13.
This commit is contained in:
2026-03-31 17:33:35 -07:00
committed by Naomi Carrigan
parent 01d6da8a33
commit 453ebd0f15
20 changed files with 140 additions and 23 deletions
+4
View File
@@ -41,6 +41,7 @@ export const onGuildMemberUpdate = async(
await logActivity({
client: newMember.client,
colour: "nicknameChange",
emoji: "📝",
fields: [
`**User**: ${username} (\`${userId}\`)`,
@@ -64,6 +65,7 @@ export const onGuildMemberUpdate = async(
await logActivity({
client: newMember.client,
colour: "rolesAdded",
emoji: "",
fields: [
`**User**: ${username} (\`${userId}\`)`,
@@ -86,6 +88,7 @@ export const onGuildMemberUpdate = async(
await logActivity({
client: newMember.client,
colour: "rolesRemoved",
emoji: "",
fields: [
`**User**: ${username} (\`${userId}\`)`,
@@ -98,6 +101,7 @@ export const onGuildMemberUpdate = async(
if (oldMember.avatar !== newMember.avatar) {
await logActivity({
client: newMember.client,
colour: "serverAvatar",
emoji: "🖼️",
fields: [
`**User**: ${username} (\`${userId}\`)`,