Spaces:
Running
Running
| // 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); | |
| } | |