@@ -6,36 +6,42 @@ def __init__(self, access_token, bot_token):
66 self .bot_token = bot_token
77
88 def identify (self ):
9- try :
10- headers = {
11- 'Authorization' : f'Bearer { self .token } '
12- }
13- user_object = requests .get (url = "https://discordapp.com/api/users/@me" ,headers = headers )
14- return user_object .json ()
15- except (requests .exceptions .HTTPError ) as error :
16- return error
9+ headers = {
10+ 'Authorization' : f'Bearer { self .token } '
11+ }
12+ user_object = requests .get (url = "https://discordapp.com/api/v9/users/@me" ,headers = headers )
13+ if user_object .status_code == 401 : raise Exception (f"Scope wasn't granted in OAuth2." )
14+ if user_object .status_code == 429 : raise Exception (f"You are being Rate Limited. Retry after: { user_object .json ()['retry_after' ]} " )
15+ return user_object .json ()
1716
1817 def connections (self ):
19- try :
20- headers = {
21- 'Authorization' : f'Bearer { self .token } '
22- }
23- user_object = requests .get (url = "https://discordapp.com/api/users/@me/connections" ,headers = headers )
24- return user_object .json ()
25- except (requests .exceptions .HTTPError ) as error :
26- return error
18+ headers = {
19+ 'Authorization' : f'Bearer { self .token } '
20+ }
21+ user_object = requests .get (url = "https://discordapp.com/api/v9/users/@me/connections" ,headers = headers )
22+ if user_object .status_code == 401 : raise Exception (f"Scope wasn't granted in OAuth2." )
23+ if user_object .status_code == 429 : raise Exception (f"You are being Rate Limited. Retry after: { user_object .json ()['retry_after' ]} " )
24+ return user_object .json ()
2725
2826 def guilds (self ):
29- try :
30- headers = {
31- 'Authorization' : f'Bearer { self .token } '
32- }
33- user_object = requests .get (url = "https://discordapp.com/api/users/@me/guilds" ,headers = headers )
34- return user_object .json ()
35- except (requests .exceptions .HTTPError ) as error :
36- return error
27+ headers = {
28+ 'Authorization' : f'Bearer { self .token } '
29+ }
30+ user_object = requests .get (url = "https://discordapp.com/api/v9/users/@me/guilds" ,headers = headers )
31+ if user_object .status_code == 401 : raise Exception (f"Scope wasn't granted in OAuth2." )
32+ if user_object .status_code == 429 : raise Exception (f"You are being Rate Limited. Retry after: { user_object .json ()['retry_after' ]} " )
33+ return user_object .json ()
3734
38- def join_guild (self , guild ):
35+ def guilds_member (self , guild ):
36+ headers = {
37+ 'Authorization' : f'Bearer { self .token } '
38+ }
39+ user_object = requests .get (url = f"https://discordapp.com/api/v9/users/@me/guilds/{ guild } /member" ,headers = headers )
40+ if user_object .status_code == 401 : raise Exception (f"Scope wasn't granted in OAuth2." )
41+ if user_object .status_code == 429 : raise Exception (f"You are being Rate Limited. Retry after: { user_object .json ()['retry_after' ]} " )
42+ return user_object .json ()
43+
44+ def guilds_join (self , guild ):
3945 try :
4046 headers = {
4147 'Authorization' : f'Bot { self .bot_token } ' ,
@@ -44,29 +50,44 @@ def join_guild(self, guild):
4450 data = {
4551 'access_token' : self .token
4652 }
47- user_object = requests .put (url = f"https://discordapp.com/api/guilds/{ guild } /members/{ self .identify } " , json = data , headers = headers )
48- return user_object .text
53+ user_object = requests .put (url = f"https://discordapp.com/api/v9/guilds/{ guild } /members/{ self .identify ()['id' ]} " , json = data , headers = headers )
54+ if user_object .status_code == 401 : raise Exception (f"Scope wasn't granted in OAuth2." )
55+ if user_object .status_code == 429 : raise Exception (f"You are being Rate Limited. Retry after: { user_object .json ()['retry_after' ]} " )
56+ if user_object .status_code == 403 : raise Exception (f"Provided token cannot invite people on Guild: { guild } . Guild ID may be incorrect." )
57+ return user_object
4958 except (requests .exceptions .HTTPError ) as error :
5059 return error
5160
61+ class access_token ():
62+ def __init__ (self , response , token ):
63+ self .access = token_instance (response ["access_token" ], token )
64+ self .expires = response ["expires_in" ]
65+ self .refresh_token = response ["refresh_token" ]
66+
5267class discordOauth2 ():
53- endpoint = 'https://discord.com/api/v8'
5468 def __init__ (self , client , secret , redirect , token = None ):
5569 self .client = client
5670 self .secret = secret
5771 self .redirect = redirect
5872 self .token = token
5973
6074 def exchange_code (self , token ):
61- data = {
75+ response = requests . post ( "https://discord.com/api/v9/oauth2/token" , data = {
6276 'client_id' : self .client ,
6377 'client_secret' : self .secret ,
6478 'grant_type' : 'authorization_code' ,
6579 'code' : token ,
6680 'redirect_uri' : self .redirect
67- }
68- headers = {
69- 'Content-Type' : 'application/x-www-form-urlencoded'
70- }
71- data = requests .post (discordOauth2 .endpoint + '/oauth2/token' , data = data , headers = headers ).json ()
72- return token_instance (data ['access_token' ], self .token )
81+ })
82+ if response .status_code == 429 : raise Exception (f"You are being Rate Limited" )
83+ return access_token (response .json (), self .token )
84+
85+ def refresh_token (self , refresh_token ):
86+ response = requests .post ("https://discord.com/api/v9/oauth2/token" , data = {
87+ 'client_id' : self .client ,
88+ 'client_secret' : self .secret ,
89+ 'grant_type' : 'refresh_token' ,
90+ 'refresh_token' : refresh_token
91+ })
92+ if response .status_code == 429 : raise Exception (f"You are being Rate Limited" )
93+ return access_token (response .json (), self .token )
0 commit comments