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