Fsoky

DASHBOARD для Discord Bot | Python

Aug 15th, 2020
2,373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.63 KB | None | 0 0
  1. # General Code
  2. from flask import Flask, request, redirect
  3. from oauth import Oauth
  4.  
  5. app = Flask(__name__)
  6.  
  7.  
  8. @app.route("/", methods = ["get"])
  9. def index():
  10.     return redirect(Oauth.discord_login_url)
  11.  
  12.  
  13. @app.route("/login", methods = ["get"])
  14. def login():
  15.     code = request.args.get("code")
  16.     at = Oauth.get_access_token(code)
  17.  
  18.     user_json = Oauth.get_user_json(at)
  19.     username, usertag = user_json.get("username"), user_json.get("discriminator")
  20.  
  21.     return f"{username}#{usertag}"
  22.  
  23.  
  24. if __name__ == "__main__":
  25.     app.run(debug = True)
  26.  
  27.  
  28. ############Oauth2 Code############
  29. import requests
  30.  
  31.  
  32. class Oauth:
  33.     client_id = "your client id"
  34.     client_secret = "your client secret"
  35.     redirect_uri = "http://127.0.0.1:5000/login"
  36.     scope = "identify%20email"
  37.     discord_login_url = f"https://discord.com/api/oauth2/authorize?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code&scope={scope}"
  38.     discord_token_url = "https://discord.com/api/oauth2/token"
  39.     discord_api_url = "https://discord.com/api"
  40.  
  41.  
  42.     @staticmethod
  43.     def get_access_token(code):
  44.         payload = {
  45.             "client_id": Oauth.client_id,
  46.             "client_secret": Oauth.client_secret,
  47.             "grant_type": "authorization_code",
  48.             "code": code,
  49.             "redirect_uri": Oauth.redirect_uri,
  50.             "scope": Oauth.scope
  51.         }
  52.  
  53.         access_token = requests.post(url = Oauth.discord_token_url, data = payload).json()
  54.         return access_token.get("access_token")
  55.  
  56.  
  57.     @staticmethod
  58.     def get_user_json(access_token):
  59.         url = f"{Oauth.discord_api_url}/users/@me"
  60.         headers = {"Authorization": f"Bearer {access_token}"}
  61.  
  62.         user_object = requests.get(url = url, headers = headers).json()
  63.         return user_object
Add Comment
Please, Sign In to add comment