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()