enzostvs's picture
enzostvs HF Staff
Upload 172 files
9cd6ddb verified
// 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);
}