57 lines
2.9 KiB
TypeScript
57 lines
2.9 KiB
TypeScript
import { type Message, MessageType } from "@buape/carbon";
|
|
|
|
import { formatDiscordUserTag } from "./format.js";
|
|
|
|
export function resolveDiscordSystemEvent(message: Message, location: string): string | null {
|
|
switch (message.type) {
|
|
case MessageType.ChannelPinnedMessage:
|
|
return buildDiscordSystemEvent(message, location, "pinned a message");
|
|
case MessageType.RecipientAdd:
|
|
return buildDiscordSystemEvent(message, location, "added a recipient");
|
|
case MessageType.RecipientRemove:
|
|
return buildDiscordSystemEvent(message, location, "removed a recipient");
|
|
case MessageType.UserJoin:
|
|
return buildDiscordSystemEvent(message, location, "user joined");
|
|
case MessageType.GuildBoost:
|
|
return buildDiscordSystemEvent(message, location, "boosted the server");
|
|
case MessageType.GuildBoostTier1:
|
|
return buildDiscordSystemEvent(message, location, "boosted the server (Tier 1 reached)");
|
|
case MessageType.GuildBoostTier2:
|
|
return buildDiscordSystemEvent(message, location, "boosted the server (Tier 2 reached)");
|
|
case MessageType.GuildBoostTier3:
|
|
return buildDiscordSystemEvent(message, location, "boosted the server (Tier 3 reached)");
|
|
case MessageType.ThreadCreated:
|
|
return buildDiscordSystemEvent(message, location, "created a thread");
|
|
case MessageType.AutoModerationAction:
|
|
return buildDiscordSystemEvent(message, location, "auto moderation action");
|
|
case MessageType.GuildIncidentAlertModeEnabled:
|
|
return buildDiscordSystemEvent(message, location, "raid protection enabled");
|
|
case MessageType.GuildIncidentAlertModeDisabled:
|
|
return buildDiscordSystemEvent(message, location, "raid protection disabled");
|
|
case MessageType.GuildIncidentReportRaid:
|
|
return buildDiscordSystemEvent(message, location, "raid reported");
|
|
case MessageType.GuildIncidentReportFalseAlarm:
|
|
return buildDiscordSystemEvent(message, location, "raid report marked false alarm");
|
|
case MessageType.StageStart:
|
|
return buildDiscordSystemEvent(message, location, "stage started");
|
|
case MessageType.StageEnd:
|
|
return buildDiscordSystemEvent(message, location, "stage ended");
|
|
case MessageType.StageSpeaker:
|
|
return buildDiscordSystemEvent(message, location, "stage speaker updated");
|
|
case MessageType.StageTopic:
|
|
return buildDiscordSystemEvent(message, location, "stage topic updated");
|
|
case MessageType.PollResult:
|
|
return buildDiscordSystemEvent(message, location, "poll results posted");
|
|
case MessageType.PurchaseNotification:
|
|
return buildDiscordSystemEvent(message, location, "purchase notification");
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function buildDiscordSystemEvent(message: Message, location: string, action: string) {
|
|
const authorLabel = message.author ? formatDiscordUserTag(message.author) : "";
|
|
const actor = authorLabel ? `${authorLabel} ` : "";
|
|
return `Discord system: ${actor}${action} in ${location}`;
|
|
}
|