Spaces:
Running
Running
File size: 1,718 Bytes
9cd6ddb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
// 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);
}
|