diff --git a/messages/en.json b/messages/en.json index 97dbcd9..0e3e919 100644 --- a/messages/en.json +++ b/messages/en.json @@ -73,5 +73,7 @@ "alreadyDonator": "You are already a donator!", "discordNeeded": "You need to link your Discord account to access this page", "discordRoleNeeded": "You need the Donator Discord role to access this page", - "addedDonator": "Added donator benefits to your account!" + "addedDonator": "Added donator benefits to your account!", + "errorDonatorCheck": "Something went wrong when checking your Discord donator status. Please try again later. {error}", + "discordRateLimit": "{message} Retry after {retry_after} seconds." } diff --git a/src/pages/donator/check.astro b/src/pages/donator/check.astro index 8d085db..4c407bf 100644 --- a/src/pages/donator/check.astro +++ b/src/pages/donator/check.astro @@ -1,8 +1,10 @@ --- import * as m from 'paraglide/messages' -import { DISCORD_DONATOR_ID } from 'astro:env/server' +import { DISCORD_DONATOR_ID, DISCORD_GUILD_ID } from 'astro:env/server' import prismaClient from 'utils/prisma-client' +import BaseLayout from 'layouts/base.astro' + const { session, user, roles } = Astro.locals async function getMessage() { @@ -22,13 +24,20 @@ async function getMessage() { return m.discordNeeded() } - const memberInfoRes = await fetch(`https://discord.com/api/users/@me/guilds/535484312124915714/member`, { + const memberInfoRes = await fetch(`https://discord.com/api/users/@me/guilds/${DISCORD_GUILD_ID}/member`, { headers: { Authorization: `Bearer ${discordAcc.accessToken}`, 'Content-Type': 'application/x-www-form-urlencoded' } }) + if (memberInfoRes.status == 429) { + const { message, retry_after }: { message: string; retry_after: number } = await memberInfoRes.json() + return m.discordRateLimit({ message, retry_after }) + } else if (memberInfoRes.status != 200) { + return m.errorDonatorCheck({ error: await memberInfoRes.json() }) + } + const memberInfo: { roles: string[] } = await memberInfoRes.json() const isDiscordDonator = memberInfo.roles.includes(DISCORD_DONATOR_ID) @@ -43,4 +52,6 @@ async function getMessage() { const message = await getMessage() --- -
{message}
+ +
{message}
+