-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
70 lines (59 loc) · 2.67 KB
/
utils.py
File metadata and controls
70 lines (59 loc) · 2.67 KB
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
from email import header
from wsgiref import headers
from flask import request
import requests
from dotenv import load_dotenv
import os
load_dotenv()
class Oauth:
client_id = os.environ["CLIENT_ID"]
client_secret = os.environ["CLIENT_SECRET"]
redirect_uri = os.environ['REDIRECT_URI']
discord_login_url = "https://discord.com/api/oauth2/authorize?client_id=817419214679703612&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Foauth%2Fdiscord&response_type=code&scope=identify%20guilds"
discord_token_url = "https://discord.com/api/oauth2/token"
discord_api_url = "https://discord.com/api"
@staticmethod
def get_access_token(code):
payload = {
"client_id":Oauth.client_id,
"client_secret":Oauth.client_secret,
"grant_type": "authorization_code",
"code":code,
"redirect_uri":Oauth.redirect_uri,
"scope":'identify guilds'
}
access_token = requests.post(url=Oauth.discord_token_url, data=payload).json()
return access_token.get("access_token")
@staticmethod
def get_user_json(access_token):
url = f'{Oauth.discord_api_url}/v6/users/@me'
headers = {"Authorization":f"Bearer {access_token}"}
user_object = requests.get(url=url, headers = headers).json()
return user_object
@staticmethod
def get_user_guild(access_token):
response = requests.get(url=f'{Oauth.discord_api_url}/v6/users/@me/guilds', headers={"Authorization":f"Bearer {access_token}"})
response.raise_for_status()
return response.json()
@staticmethod
def get_bot_guilds():
bot_token = os.environ['BOT_TOKEN']
url = (f'{Oauth.discord_api_url}/v6/users/@me/guilds')
headers = {"Authorization":f"Bot {bot_token}"}
bot_guild_object = requests.get(url=url, headers=headers)
return bot_guild_object.json()
@staticmethod
def get_mutual_guilds(user_guilds :list, bot_guilds :list):
return [guild for guild in user_guilds if guild['id'] in map(lambda i: i['id'], bot_guilds)]
@staticmethod
def get_guild_data(guild_id:int, token:str):
bot_token = os.environ['BOT_TOKEN']
response = requests.get(f'{Oauth.discord_api_url}/v6/guilds/{guild_id}', headers={"Authorization":f"Bot {bot_token}"})
response.raise_for_status()
return response.json()
@staticmethod
def get_channel_from_guild(guild_id:int):
bot_token = os.environ['BOT_TOKEN']
response = requests.get(f'{Oauth.discord_api_url}/guilds/{guild_id}/channels', headers={"Authorization":f"Bot {bot_token}"})
response.raise_for_status()
return response.json()