All checks were successful
Continuous Integration / Update Development (push) Successful in 2m24s
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
import { bus } from "../events/eventBus";
|
|
import { logger } from "../logging/logger";
|
|
|
|
export function initializeDiscordIntegrations() {
|
|
bus.on('application.create', async (event) => {
|
|
|
|
if (!process.env.DISCORD_APPLICATIONS_WEBHOOK) {
|
|
logger.error("app", 'Discord Applications Webhook is not defined')
|
|
return;
|
|
}
|
|
|
|
let applicantName = event.payload.member_discord_id || event.payload.member_name;
|
|
if (event.payload.member_discord_id) {
|
|
applicantName = `<@${event.payload.member_discord_id}>`;
|
|
}
|
|
const link = `${process.env.CLIENT_URL}/administration/applications/${event.payload.application}`;
|
|
|
|
const embed = {
|
|
title: "Application Posted",
|
|
description: `[View Application](${link})`,
|
|
color: 0x00ff00, // optional: green color
|
|
timestamp: new Date().toISOString(), // <-- Discord expects ISO8601
|
|
fields: [
|
|
{
|
|
name: "Submitted By",
|
|
value: applicantName,
|
|
inline: false,
|
|
},
|
|
],
|
|
};
|
|
|
|
// send to Discord webhook
|
|
await fetch(process.env.DISCORD_APPLICATIONS_WEBHOOK!, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ embeds: [embed] }),
|
|
});
|
|
});
|
|
}
|