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);
}