@@ -4,11 +4,14 @@ const { resolve } = require('node:path');
44
55const { EmbedBuilder } = require ( 'discord.js' ) ;
66
7- const request = require ( 'request' ) ;
7+ const qs = require ( 'qs' ) ;
8+ // eslint-disable-next-line no-unused-vars
9+ const Axios = require ( 'axios' ) ;
10+ const { default : axios } = require ( 'axios' ) ;
811
912const express = require ( 'express' ) ;
1013const session = require ( 'express-session' ) ;
11- const rateLimit = require ( 'express-rate-limit' ) ;
14+ const { rateLimit } = require ( 'express-rate-limit' ) ;
1215const bodyParser = require ( 'body-parser' ) ;
1316
1417const client = require ( './index' ) ;
@@ -49,93 +52,76 @@ server.use(express.static('assets'));
4952server . all ( '/' , ( req , res ) => res . send ( 'Bot is Running!' ) ) ;
5053
5154server . get ( '/verify' , async ( req , res ) => {
55+ /** @type {Axios.AxiosRequestConfig } */
5256 const oauthApiOptions = {
5357 method : 'POST' ,
5458 url : 'https://discord.com/api/oauth2/token' ,
5559 headers : { 'content-type' : 'application/x-www-form-urlencoded' } ,
56- form : {
60+ data : qs . stringify ( {
5761 client_id : client . application ?. id ,
5862 client_secret : process . env . CLIENT_SECRET ,
5963 grant_type : 'authorization_code' ,
6064 code : req . query . code ,
6165 redirect_uri : process . env . CALLBACK_URL ,
6266 scope : [ 'identify' , 'email' , 'guilds.join' ] ,
63- } ,
67+ } ) ,
6468 } ;
6569
66- request ( oauthApiOptions , function ( error , _ , body ) {
67- if ( error ) throw new Error ( error ) ;
68-
69- const oauth_parsed = JSON . parse ( body ) ;
70-
71- const apiUser = {
72- method : 'GET' ,
73- url : 'https://discord.com/api/users/@me' ,
74- headers : { authorization : `Bearer ${ oauth_parsed . access_token } ` } ,
75- } ;
70+ const response = await axios ( oauthApiOptions ) ;
7671
77- request ( apiUser , async ( error , response , body ) => {
78- if ( error ) throw new Error ( error ) ;
7972
80- if ( req . session . verify_userid ) {
81- res . render ( resolve ( './html/captcha.html' ) , {
82- recaptcha_sitekey : process . env . RECAPTCHA_SITEKEY ,
83- } ) ;
73+ const oauth_parsed = response . data ;
8474
85- return ;
86- }
87-
88- if ( response . statusCode !== 200 ) {
89- res . redirect (
90- `https://discord.com/oauth2/authorize?client_id=${ process . env . CLIENT_ID } &redirect_uri=${ process . env . CALLBACK_URL } &response_type=code&scope=guilds.join%20email%20identify` ,
91- ) ;
75+ /** @type {Axios.AxiosRequestConfig } */
76+ const apiUserOptions = {
77+ method : 'GET' ,
78+ url : 'https://discord.com/api/users/@me' ,
79+ headers : { authorization : `Bearer ${ oauth_parsed . access_token } ` } ,
80+ } ;
9281
93- return ;
94- }
82+ const response2 = await axios ( apiUserOptions ) ;
9583
96- const parsed = JSON . parse ( body ) ;
84+ const parsed = response2 . data ;
9785
98- const fetchedGuild = client . guilds . cache . get ( process . env . SERVER_ID ) ;
86+ const fetchedGuild = client . guilds . cache . get ( process . env . SERVER_ID ) ;
9987
100- const userfetch = await client . users . fetch ( parsed . id ) ;
88+ const userfetch = await client . users . fetch ( parsed . id ) ;
10189
102- await fetchedGuild ?. members . add ( userfetch , {
103- accessToken : oauth_parsed . access_token ,
104- } ) ;
90+ await fetchedGuild ?. members . add ( userfetch , {
91+ accessToken : oauth_parsed . access_token ,
92+ } ) ;
10593
106- const userguild = await fetchedGuild ?. members . fetch ( userfetch ) ;
94+ const userguild = await fetchedGuild ?. members . fetch ( userfetch ) ;
10795
108- if ( ! userguild ) {
109- res . render ( resolve ( './html/error.html' ) , {
110- messageText : 'You already verified!' ,
111- } ) ;
96+ if ( ! userguild ) {
97+ res . render ( resolve ( './html/error.html' ) , {
98+ messageText : 'You already verified!' ,
99+ } ) ;
112100
113- return ;
114- }
101+ return ;
102+ }
115103
116- if ( userguild . roles . cache . has ( process . env . VERIFIED_ROLE_ID ) ) {
117- res . render ( resolve ( './html/success.html' ) , {
118- messageText : 'You already verified!' ,
119- } ) ;
104+ if ( userguild . roles . cache . has ( process . env . VERIFIED_ROLE_ID ) ) {
105+ res . render ( resolve ( './html/success.html' ) , {
106+ messageText : 'You already verified!' ,
107+ } ) ;
120108
121- return ;
122- }
109+ return ;
110+ }
123111
124- req . session . verify_userid = parsed . id ;
112+ req . session . verify_userid = parsed . id ;
125113
126- if ( process . env . REQUIRE_VERIFIED_EMAIL === 'true' || parsed . verified ) {
127- req . session . verify_status = 'waiting_recaptcha' ;
128- res . render ( resolve ( './html/captcha.html' ) , {
129- recaptcha_sitekey : process . env . RECAPTCHA_SITEKEY ,
130- } ) ;
131- } else {
132- req . session . destroy ( ( ) => undefined ) ;
133- res . render ( resolve ( './html/error.html' ) , {
134- messageText : 'Please verify your email!' ,
135- } ) ;
136- }
114+ if ( process . env . REQUIRE_VERIFIED_EMAIL === 'true' || parsed . verified ) {
115+ req . session . verify_status = 'waiting_recaptcha' ;
116+ res . render ( resolve ( './html/captcha.html' ) , {
117+ recaptcha_sitekey : process . env . RECAPTCHA_SITEKEY ,
137118 } ) ;
138- } ) ;
119+ } else {
120+ req . session . destroy ( ( ) => undefined ) ;
121+ res . render ( resolve ( './html/error.html' ) , {
122+ messageText : 'Please verify your email!' ,
123+ } ) ;
124+ }
139125} ) ;
140126
141127server . post ( '/verify/solve/' , async ( req , res ) => {
@@ -144,53 +130,52 @@ server.post('/verify/solve/', async (req, res) => {
144130 return res . redirect ( '/verify' ) ;
145131 }
146132
133+ /** @type {Axios.AxiosRequestConfig } */
147134 const options = {
148135 method : 'POST' ,
149136 url : 'https://www.google.com/recaptcha/api/siteverify' ,
150137 headers : {
151138 'content-type' :
152139 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' ,
153140 } ,
154- formData : {
141+ data : qs . stringify ( {
155142 secret : process . env . RECAPTCHA_SECRET ,
156143 response : req . body [ 'g-recaptcha-response' ] ,
157- } ,
144+ } ) ,
158145 } ;
159146
160- request ( options , async ( error , _ , body ) => {
161- if ( error ) throw new Error ( error ) ;
147+ const response = await axios ( options ) ;
162148
163- const parsed = JSON . parse ( body ) ;
149+ const parsed = response . data ;
164150
165- if ( parsed . success && req . session . verify_userid ) {
166- const fetchedGuild = client . guilds . cache . get ( process . env . SERVER_ID ) ;
151+ if ( parsed . success && req . session . verify_userid ) {
152+ const fetchedGuild = client . guilds . cache . get ( process . env . SERVER_ID ) ;
167153
168- const userfetch = await client . users . fetch ( req . session . verify_userid ) ;
154+ const userfetch = await client . users . fetch ( req . session . verify_userid ) ;
169155
170- if ( ! fetchedGuild ) {
171- res . redirect ( '/verify' ) ;
156+ if ( ! fetchedGuild ) {
157+ res . redirect ( '/verify' ) ;
172158
173- return ;
174- }
159+ return ;
160+ }
175161
176- const member = await fetchedGuild . members . fetch ( userfetch . id ) ;
162+ const member = await fetchedGuild . members . fetch ( userfetch . id ) ;
177163
178- await member . roles . add ( process . env . VERIFIED_ROLE_ID , 'Verified' ) ;
164+ await member . roles . add ( process . env . VERIFIED_ROLE_ID , 'Verified' ) ;
179165
180- req . session . verify_status = 'done' ;
166+ req . session . verify_status = 'done' ;
181167
182- const embed = new EmbedBuilder ( )
183- . setTitle ( ':white_check_mark: Verified' )
184- . setDescription ( 'Now you can access to the server!' )
185- . setColor ( 'Green' ) ;
168+ const embed = new EmbedBuilder ( )
169+ . setTitle ( ':white_check_mark: Verified' )
170+ . setDescription ( 'Now you can access to the server!' )
171+ . setColor ( 'Green' ) ;
186172
187- member . send ( { embeds : [ embed ] } ) . catch ( ( ) => undefined ) ;
173+ member . send ( { embeds : [ embed ] } ) . catch ( ( ) => undefined ) ;
188174
189- res . redirect ( '/verify/succeed' ) ;
190- } else {
191- res . redirect ( '/verify' ) ;
192- }
193- } ) ;
175+ res . redirect ( '/verify/succeed' ) ;
176+ } else {
177+ res . redirect ( '/verify' ) ;
178+ }
194179} ) ;
195180
196181server . get ( '/verify/succeed' , async ( req , res ) => {
@@ -222,4 +207,4 @@ const PORT = process.env.PORT || 8080;
222207
223208server . listen ( PORT ) ;
224209
225- console . log ( `Server is running on port ${ PORT } ` )
210+ console . log ( `Server is running on port ${ PORT } ` ) ;
0 commit comments