diff --git a/src/server/api/message.post.ts b/src/server/api/message.post.ts index c504922..d7f7603 100644 --- a/src/server/api/message.post.ts +++ b/src/server/api/message.post.ts @@ -7,6 +7,13 @@ const MessageValidator = z.object({ export default defineEventHandler(async (event) => { const { message } = await readValidatedBody(event, MessageValidator) const { user } = await requireUserSession(event) + + await sendDiscordWebhookMessage({ + title: 'New guestbook message ✨', + description: `**${user.username}** as signed the book : "*${message}*"`, + color: 15893567, + }) + return await usePrisma().guestbookMessage.upsert({ where: { email: user.email, diff --git a/src/server/api/suggestion.post.ts b/src/server/api/suggestion.post.ts index 10009f5..dc28532 100644 --- a/src/server/api/suggestion.post.ts +++ b/src/server/api/suggestion.post.ts @@ -7,6 +7,13 @@ const SuggestionValidator = z.object({ export default defineEventHandler(async (event) => { const { content } = await readValidatedBody(event, SuggestionValidator) const { user } = await requireUserSession(event) + + await sendDiscordWebhookMessage({ + title: 'New suggestion ✨', + description: `**${user.username}** as requested **${content}** for the talents page.`, + color: 15237114, + }) + return await usePrisma().suggestion.upsert({ where: { email: user.email, diff --git a/src/server/utils/discord.ts b/src/server/utils/discord.ts new file mode 100644 index 0000000..43b06a2 --- /dev/null +++ b/src/server/utils/discord.ts @@ -0,0 +1,29 @@ +/* eslint-disable node/prefer-global/process */ +interface WebhookContent { + title: string + description: string + color: number +} + +export async function sendDiscordWebhookMessage(content: WebhookContent) { + const id = process.env.NUXT_DISCORD_ID + const token = process.env.NUXT_DISCORD_TOKEN + await $fetch(`https://discordapp.com/api/webhooks/${id}/${token}`, { + method: 'POST', + body: { + embeds: [ + { + title: content.title, + description: content.description, + color: content.color, + url: 'https://arthurdanjou.fr/talents', + footer: { + text: 'Powered by Nuxt', + }, + timestamp: new Date().toISOString(), + }, + ], + username: 'ArtDanjRobot - Website', + }, + }) +}