From d665e95f024881a9593424c3ebefa70fdeabf440 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Wed, 4 Mar 2026 17:39:31 +0000 Subject: [PATCH] discord --- .../notificationProviders/discord.ts | 21 ++++++++----------- server/src/types/alert.ts | 14 +++++++++++++ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/server/src/service/infrastructure/notificationProviders/discord.ts b/server/src/service/infrastructure/notificationProviders/discord.ts index 2f0b07fe8..e630e4e86 100644 --- a/server/src/service/infrastructure/notificationProviders/discord.ts +++ b/server/src/service/infrastructure/notificationProviders/discord.ts @@ -1,14 +1,15 @@ const SERVICE_NAME = "DiscordProvider"; -import type { Notification } from "@/types/index.js"; +import type { AlertDiscordPayload, DiscordEmbedField, Notification } from "@/types/index.js"; import { INotificationProvider } from "@/service/index.js"; import { getTestMessage } from "@/service/infrastructure/notificationProviders/utils.js"; -import type { NotificationMessage } from "@/types/notificationMessage.js"; +import type { NotificationMessage, NotificationSeverity } from "@/types/notificationMessage.js"; import got from "got"; +import { ILogger } from "@/utils/logger.js"; export class DiscordProvider implements INotificationProvider { - private logger: any; + private logger: ILogger; - constructor(logger: any) { + constructor(logger: ILogger) { this.logger = logger; } @@ -36,9 +37,6 @@ export class DiscordProvider implements INotificationProvider { } }; - /** - * New unified message format implementation - */ async sendMessage(notification: Notification, message: NotificationMessage): Promise { if (!notification.address) { this.logger.warn({ @@ -71,18 +69,17 @@ export class DiscordProvider implements INotificationProvider { } } - private buildDiscordEmbed(message: NotificationMessage): any { - // Map severity to Discord embed colors - const colorMap: Record = { + private buildDiscordEmbed(message: NotificationMessage): AlertDiscordPayload { + const colorMap: Record = { critical: 0xdc2626, // red-600 warning: 0xf59e0b, // amber-500 info: 0x3b82f6, // blue-500 success: 0x10b981, // green-500 }; - const color = colorMap[message.severity] || colorMap.info; + const color = colorMap[message.severity] ?? colorMap.info; - const fields: Array<{ name: string; value: string; inline?: boolean }> = []; + const fields: Array = []; // Add monitor details fields.push({ diff --git a/server/src/types/alert.ts b/server/src/types/alert.ts index 8f5bf509e..3cb9d7734 100644 --- a/server/src/types/alert.ts +++ b/server/src/types/alert.ts @@ -15,6 +15,20 @@ export interface AlertMatrixPayload { htmlText: string; } +export interface DiscordEmbedField { + name: string; + value: string; + inline?: boolean; +} + +export interface AlertDiscordPayload { + title: string; + description: string; + color: number; + fields: DiscordEmbedField[]; + timestamp: string; +} + export interface Alert { channel: NotificationChannel; address?: string;