File size: 2,736 Bytes
54389af 8a0bc2e 54389af 8a0bc2e 940edd3 54389af 8a0bc2e 54389af 8a0bc2e 54389af 8a0bc2e 54389af 8a0bc2e 54389af 8a0bc2e 54389af 8a0bc2e 54389af 940edd3 8a0bc2e 54389af 8a0bc2e 54389af 7f192d1 8a0bc2e 54389af 458a3b3 8a0bc2e 458a3b3 8a0bc2e eab20c1 8a0bc2e eab20c1 f7d01ae 54389af 8a0bc2e 54389af 8a0bc2e ec6916e 8a0bc2e |
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
import discord
from discord import app_commands
import gradio as gr
import os
import threading
from falcon import try_falcon
from falcon import continue_falcon
from deepfloydif import deepfloydif_stage_1
from deepfloydif import deepfloydif_stage_2_react_check
# HF GUILD SETTINGS
MY_GUILD_ID = 1077674588122648679 if os.getenv("TEST_ENV", False) else 879548962464493619
MY_GUILD = discord.Object(id=MY_GUILD_ID)
DISCORD_TOKEN = os.environ.get("DISCORD_TOKEN", None)
class MyClient(discord.Client):
"""This structure allows slash commands to work instantly."""
def __init__(self, *, intents: discord.Intents):
super().__init__(intents=intents)
self.tree = app_commands.CommandTree(self)
async def setup_hook(self):
# This copies the global commands over to our guild
self.tree.copy_global_to(guild=MY_GUILD)
await self.tree.sync(guild=MY_GUILD)
client = MyClient(intents=discord.Intents.all())
@client.event
async def on_ready():
print(f"Logged in as {client.user} (ID: {client.user.id})")
print("------")
@client.tree.command()
@app_commands.describe(prompt="Enter some text to chat with the bot! Like this: /falcon Hello, how are you?")
async def falcon(interaction: discord.Interaction, prompt: str):
"""Command that begins a new conversation with Falcon"""
try:
await try_falcon(interaction, prompt)
except Exception as e:
print(f"Error: {e}")
@client.event
async def on_message(message):
"""Checks channel and continues Falcon conversation if it's the right Discord Thread"""
try:
await continue_falcon(message)
except Exception as e:
print(f"Error: {e}")
@client.tree.command()
@app_commands.describe(prompt="Enter a prompt to generate an image! Can generate realistic text, too!")
async def deepfloydif(interaction: discord.Interaction, prompt: str):
"""DeepfloydIF stage 1 generation"""
try:
await deepfloydif_stage_1(interaction, prompt, client)
except Exception as e:
print(f"Error: {e}")
@client.event
async def on_reaction_add(reaction, user):
"""Checks for a reaction in order to call dfif2"""
try:
await deepfloydif_stage_2_react_check(reaction, user)
except Exception as e:
print(f"Error: {e} (known error, does not cause issues, low priority)")
def run_bot():
client.run(DISCORD_TOKEN)
threading.Thread(target=run_bot).start()
"""This allows us to run the Discord bot in a Python thread"""
with gr.Blocks() as demo:
gr.Markdown("""
# Huggingbots Server
This space hosts the huggingbots discord bot.
Currently supported models are Falcon and DeepfloydIF
""")
demo.queue(concurrency_count=20)
demo.launch() |