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"""
Is avatar animated: {str(user.is_avatar_animated)}
Connections