File size: 4,174 Bytes
c674706
069699b
 
 
cf29d35
069699b
 
 
 
 
 
 
 
 
 
9f32e12
 
df08eaa
1cea653
655e8cd
 
 
 
 
cf29d35
 
 
 
 
fe5d109
cf29d35
 
 
ebe5be1
cf29d35
 
 
 
ebe5be1
c818f42
cf29d35
a59b0ae
 
 
 
cf29d35
2a46d18
cf29d35
448f731
 
fe5d109
f805a66
314ff34
cf29d35
 
8e2c4e2
 
 
fe5d109
8e2c4e2
1cea653
fe5d109
8eba0de
 
42eab28
d138499
 
 
 
fe5d109
d138499
 
 
 
 
 
 
 
 
 
 
 
 
 
409b21f
fe5d109
cf29d35
7a62795
 
 
 
 
 
 
42eab28
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
91
92
93
94
95
import discord
from discord import app_commands
from discord.ext import commands
import gradio_client
import gradio as gr
from gradio_client import Client
import os #
import threading 
import requests
import json
import random
import time
from PIL import Image
import asyncio
import glob

import falcon
from falcon import try_falcon
from falcon import continue_falcon

import deepfloydif
from deepfloydif import deepfloydif_stage_1
from deepfloydif import deepfloydif_stage_2
from deepfloydif import deepfloydif_stage_2_react_check
#-------------------------------------------------------------------------------------------------------------------------------------
MY_GUILD = discord.Object(id=1077674588122648679)  # HF = 879548962464493619, test = 1077674588122648679
DISCORD_TOKEN = os.environ.get("DISCORD_TOKEN", None)
#-------------------------------------------------------------------------------------------------------------------------------------
class MyClient(discord.Client):
    """This structure allows slash commands to work instantly (instead of needing to sync global commands for up to an hour)"""
    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)
        await message.remove_reaction('πŸ”', client.user) # test=πŸ”  hf=πŸ”  
    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)")        
#-------------------------------------------------------------------------------------------------------------------------------------        
"""This allows us to run the Discord bot in a Python thread"""
DISCORD_TOKEN = os.environ.get("DISCORD_TOKEN", None)
def run_bot():
    client.run(DISCORD_TOKEN)
threading.Thread(target=run_bot).start()
def greet(name):
    return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.queue(concurrency_count=20)
demo.launch()