MCPcopy Create free account
hub / github.com/code100x/cms / giveAccess

Function giveAccess

src/utiles/discord.ts:10–67  ·  view source on GitHub ↗
(
  code: string,
  roles: string[],
  GUILD_ID: string,
  BOT_TOKEN: string,
  DISCORD_ACCESS_KEY: string,
  DISCORD_ACCESS_SECRET: string,
  DISCORD_REDIRECT_URI: string,
)

Source from the content-addressed store, hash-verified

8};
9
10export const giveAccess = async (
11 code: string,
12 roles: string[],
13 GUILD_ID: string,
14 BOT_TOKEN: string,
15 DISCORD_ACCESS_KEY: string,
16 DISCORD_ACCESS_SECRET: string,
17 DISCORD_REDIRECT_URI: string,
18) => {
19 const oauth = new DiscordOauth2({
20 clientId: DISCORD_ACCESS_KEY,
21 clientSecret: DISCORD_ACCESS_SECRET,
22 redirectUri: DISCORD_REDIRECT_URI,
23 });
24
25 console.log(DISCORD_ACCESS_KEY, DISCORD_ACCESS_SECRET, DISCORD_REDIRECT_URI);
26 const data = {
27 client_id: DISCORD_ACCESS_KEY,
28 client_secret: DISCORD_ACCESS_SECRET,
29 code,
30 grant_type: 'authorization_code',
31 redirect_uri: DISCORD_REDIRECT_URI,
32 scope: 'identify',
33 };
34 const options = {
35 method: 'POST',
36 headers: { 'content-type': 'application/x-www-form-urlencoded' },
37 data: qs.stringify(data),
38 url: 'https://discord.com/api/oauth2/token',
39 };
40 const response = await axios(options);
41
42 const user = await oauth.getUser(response.data.access_token);
43
44 await oauth.addMember({
45 accessToken: response.data.access_token,
46 botToken: BOT_TOKEN,
47 guildId: GUILD_ID,
48 userId: user.id,
49 roles: [...roles.filter((x) => x !== '0')],
50 });
51
52 const DISCORD_CREDENTIALS = Buffer.from(
53 `${DISCORD_ACCESS_KEY}:${DISCORD_ACCESS_SECRET}`,
54 ).toString('base64');
55
56 // revole accessToken
57 await fetch(
58 `https://discord.com/api/v8/oauth2/token/revoke?token=${response.data.access_token}`,
59 {
60 method: 'POST',
61 headers: {
62 Authorization: `Basic ${DISCORD_CREDENTIALS}`,
63 },
64 },
65 );
66 return { discordId: user.id, discordUsername: user.username };
67};

Callers 2

POSTFunction · 0.90
POSTFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected