diff --git a/apps/discord-bot/src/index.ts b/apps/discord-bot/src/index.ts index 26315ba..4e0ac61 100644 --- a/apps/discord-bot/src/index.ts +++ b/apps/discord-bot/src/index.ts @@ -9,24 +9,24 @@ export default async function handler(request: Request) { if (url.pathname.endsWith('/deploy')) { if (request.method !== 'GET') return new Response(':O', { status: 405 }); + const passedSecret = url.searchParams.get('secret'); if (passedSecret !== env.DISCORD_CLIENT_ID) return new Response(':(', { status: 401 }); await client.handleDeployRequest(); + return new Response(':)', { status: 200 }); } if (url.pathname.endsWith('/interactions')) { if (request.method !== 'POST') return new Response(':O', { status: 405 }); - // @ts-expect-error - validateInteraction is a private method - const isValid = await client.validateDiscordRequest(request); - if (!isValid) return new Response('>:(', { status: 401 }); + // @ts-expect-error - validateDiscordRequest is a private method + const valid = await client.validateDiscordRequest(request); + if (!valid) return new Response('>:(', { status: 401 }); const interaction = await request.json(); - if (interaction.type === 1) return Response.json({ type: 1 }); - if (interaction.type === InteractionType.ApplicationCommand) await client.commandHandler.handleCommandInteraction(interaction); if (interaction.type === InteractionType.MessageComponent) @@ -38,5 +38,20 @@ export default async function handler(request: Request) { return new Response(':)', { status: 200 }); } + if (url.pathname.endsWith('/events')) { + if (request.method !== 'POST') return new Response(':O', { status: 405 }); + + // @ts-expect-error - validateDiscordRequest is a private method + const valid = await client.validateDiscordRequest(request); + if (!valid) return new Response('>:(', { status: 401 }); + + const event = await request.json(); + if (event.type === 1) return new Response(':)', { status: 200 }); + await client.eventHandler.handleEvent(event); + + await posthog?.shutdown(); + return new Response(':)', { status: 200 }); + } + return new Response(':/', { status: 404 }); }