Spaces:
Running
Running
File size: 2,009 Bytes
ccec886 ddbc9ac 9034804 ddbc9ac afc2013 ddbc9ac a04ed72 ddbc9ac 91bbd67 ddbc9ac 820afe6 ddbc9ac 10ee58a ddbc9ac 91bbd67 820afe6 f37ec25 3110228 820afe6 ddbc9ac 820afe6 ddbc9ac 820afe6 |
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 |
import gradio as gr
import os
import threading
from urllib.parse import urlparse, parse_qs
import discord
from discord.ext import commands
# discord bot -----------------------------------------------------------------------------------------------
intents = discord.Intents.all()
bot = commands.Bot(command_prefix="!", intents=intents)
GRADIO_APP_URL = "https://huggingface.co/spaces/lunarflu/gradio-oauth2"
DISCORD_TOKEN = os.environ.get("DISCORD_TOKEN", None)
@bot.event
async def on_ready():
print(f'Logged in as {bot.user}')
@bot.command()
async def sendlink(ctx, user: discord.User):
if ctx.author.id == 811235357663297546:
unique_link = f"{GRADIO_APP_URL}?user_id={user.id}"
await user.send(f"Click the link to sign in with Hugging Face: {unique_link}")
def run_bot():
bot.run(DISCORD_TOKEN)
threading.Thread(target=run_bot).start()
# gradio------------------------------------------------------------------------------------------------------------
def hello(profile: gr.OAuthProfile | None, request: gr.Request) -> str:
url_str = str(request.url)
query_params = parse_qs(urlparse(url_str).query)
user_id = query_params.get('user_id', [None])[0]
if profile is None:
return f"❌ Not logged in. User ID: {user_id}"
return f"✅ Successfully logged in as {profile.username}. User ID: {user_id}"
with gr.Blocks() as demo:
gr.Markdown("# Gradio OAuth Space")
login_button = gr.LoginButton()
m1 = gr.Markdown()
demo.load(hello, inputs=None, outputs=m1)
def check_login_status():
try:
return login_button.get_session().get("oauth_info", None)
except AttributeError:
return None
def check_login_wrapper():
session = check_login_status()
if session is None:
return "Not logged in."
else:
return f"Logged in as {session.get('username', 'Unknown')}"
login_button.click(check_login_wrapper, inputs=None, outputs=m1)
demo.launch()
|