import os from flask import Flask, redirect, url_for from flask_discord import DiscordOAuth2Session, requires_authorization app = Flask(__name__) app.secret_key = b"%\xe0'\x01\xdeH\x8e\x85m|\xb3\xffCN\xc9g" os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "true" # !! Only in development environment. app.config["DISCORD_CLIENT_ID"] = 490732332240863233 app.config["DISCORD_CLIENT_SECRET"] = os.getenv("DISCORD_CLIENT_SECRET") app.config["DISCORD_BOT_TOKEN"] = os.getenv("DISCORD_BOT_TOKEN") app.config["DISCORD_REDIRECT_URI"] = "http://127.0.0.1:5000/callback" discord = DiscordOAuth2Session(app) HYPERLINK = '{}' def welcome_user(user): dm_channel = discord.bot_request("/users/@me/channels", "POST", json={"recipient_id": user.id}) return discord.bot_request( f"/channels/{dm_channel['id']}/messages", "POST", json={"content": "Thanks for authorizing the app!"} ) @app.route("/") def index(): if not discord.authorized: return f""" {HYPERLINK.format(url_for(".login"), "Login")}
{HYPERLINK.format(url_for(".login_with_data"), "Login with custom data")}
{HYPERLINK.format(url_for(".invite_bot"), "Invite Bot with permissions 8")}
{HYPERLINK.format(url_for(".invite_oauth"), "Authorize with oauth and bot invite")} """ return f""" {HYPERLINK.format(url_for(".me"), "@ME")}
{HYPERLINK.format(url_for(".logout"), "Logout")}
{HYPERLINK.format(url_for(".user_guilds"), "My Servers")}
{HYPERLINK.format(url_for(".add_to_guild", guild_id=475549041741135881), "Add me to 475549041741135881.")} """ @app.route("/login/") def login(): return discord.create_session() @app.route("/login-data/") def login_with_data(): return discord.create_session(data=dict(redirect="/me/", coupon="15off", number=15, zero=0, status=False)) @app.route("/invite-bot/") def invite_bot(): return discord.create_session(scope=["bot"], permissions=8, guild_id=464488012328468480, disable_guild_select=True) @app.route("/invite-oauth/") def invite_oauth(): return discord.create_session(scope=["bot", "identify"], permissions=8) @app.route("/callback/") def callback(): data = discord.callback() redirect_to = data.get("redirect", "/") user = discord.fetch_user() welcome_user(user) return redirect(redirect_to) @app.route("/me/") def me(): user = discord.fetch_user() return f""" {user.name}

Is avatar animated: {str(user.is_avatar_animated)}

Connections
""" @app.route("/me/guilds/") def user_guilds(): guilds = discord.fetch_guilds() return "
".join([f"[ADMIN] {g.name}" if g.permissions.administrator else g.name for g in guilds]) @app.route("/add_to//") def add_to_guild(guild_id): user = discord.fetch_user() return user.add_to_guild(guild_id) @app.route("/me/connections/") def my_connections(): user = discord.fetch_user() connections = discord.fetch_connections() return f""" {user.name} {str([f"{connection.name} - {connection.type}" for connection in connections])} """ @app.route("/logout/") def logout(): discord.revoke() return redirect(url_for(".index")) @app.route("/secret/") @requires_authorization def secret(): return os.urandom(16) if __name__ == "__main__": app.run(debug=True)