add implementation
This commit is contained in:
57
src/utils/webhook.ts
Normal file
57
src/utils/webhook.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import axios from 'axios';
|
||||
require('dotenv').config();
|
||||
import { logger } from './logger';
|
||||
|
||||
// enum for webhook type (slack, telegram, ...)
|
||||
export enum WebhookType {
|
||||
Slack = 'slack',
|
||||
Discord = 'discord',
|
||||
Telegram = 'telegram',
|
||||
}
|
||||
|
||||
export async function webhookMessage(
|
||||
message: string,
|
||||
webhookUrl?: string,
|
||||
prefix?: string,
|
||||
webhookType?: WebhookType
|
||||
): Promise<void> {
|
||||
if (process.env.WEBHOOK_TYPE) {
|
||||
webhookType = process.env.WEBHOOK_TYPE as WebhookType;
|
||||
}
|
||||
if (!webhookType) {
|
||||
webhookType = WebhookType.Discord;
|
||||
}
|
||||
if (webhookUrl || process.env.WEBHOOK_URL) {
|
||||
const webhook = webhookUrl || process.env.WEBHOOK_URL;
|
||||
const fullMessage = prefix ? prefix + message : message;
|
||||
if (fullMessage && webhook) {
|
||||
try {
|
||||
let data;
|
||||
switch (webhookType) {
|
||||
case WebhookType.Slack:
|
||||
data = {
|
||||
text: fullMessage,
|
||||
};
|
||||
break;
|
||||
case WebhookType.Discord:
|
||||
data = {
|
||||
content: fullMessage,
|
||||
};
|
||||
break;
|
||||
case WebhookType.Telegram:
|
||||
data = {
|
||||
text: fullMessage,
|
||||
};
|
||||
break;
|
||||
default:
|
||||
logger.error(`webhookMessage: unknown webhookType: ${webhookType}`);
|
||||
return;
|
||||
}
|
||||
|
||||
await axios.post(webhook, data);
|
||||
} catch (err) {
|
||||
logger.info('webhook error');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user