// Next.js API route support: https://nextjs.org/docs/api-routes/introduction import type { NextApiRequest, NextApiResponse } from "next"; import clientPromise from "lib/mongo"; export default async function handler( req: NextApiRequest, res: NextApiResponse ) { const headers = { Authorization: `Bearer ${req.cookies["discotools_token_key"]}`, }; const headers_bot = { authorization: `Bot ${process.env.DISCORD_BOT_TOKEN}`, }; const userRequest = await fetch("https://discord.com/api/users/@me", { headers, }); const user = await userRequest.json(); if (!user) return null; let resUser: any; try { const memberRequest = await fetch( `https://discord.com/api/guilds/${process.env.DISCORD_GUILD_ID}/members/${user.id}`, { headers: headers_bot, } ); const member = await memberRequest.json(); resUser = { ...resUser, username: member?.nick || user.username, id: user.id, avatar: user.avatar, banner: user?.banner, accent_color: user?.accent_color, roles: [], }; } catch { const addGuildRequest = await fetch( `https://discord.com/api/guilds/${process.env.DISCORD_GUILD_ID}/members/${user.id}`, { method: "PUT", headers: headers_bot, body: JSON.stringify({ access_token: req.cookies["discotools_token_key"], }), } ); const addGuild = await addGuildRequest.json(); if (addGuild) { return { ...resUser, roles: undefined, isStaff: false, }; } else { return { ...resUser, roles: undefined, isStaff: false, }; } } res.json(resUser); }