From 56e0afd0a7777e04e6a6696415027ab6d606e936 Mon Sep 17 00:00:00 2001 From: Gene Kogan Date: Thu, 1 Feb 2024 18:22:48 -0800 Subject: [PATCH 1/6] check config --- src/cogs/LogosCharacterCog.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cogs/LogosCharacterCog.py b/src/cogs/LogosCharacterCog.py index bc76398..bdf981f 100644 --- a/src/cogs/LogosCharacterCog.py +++ b/src/cogs/LogosCharacterCog.py @@ -111,7 +111,10 @@ async def on_message(self, message: discord.Message) -> None: if not config: return - mode = config.pop("generator") + if config.get("generator"): + mode = config.pop("generator") + else: + return if config.get("text_input"): text_input = config["text_input"] From a7b242563b057a22ce592cfa88b3b98ff43fdf56 Mon Sep 17 00:00:00 2001 From: Gene Kogan Date: Thu, 1 Feb 2024 18:23:59 -0800 Subject: [PATCH 2/6] on_welcome --- src/bots/kojii/EdenLogosCharacterCog.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bots/kojii/EdenLogosCharacterCog.py b/src/bots/kojii/EdenLogosCharacterCog.py index ecd2f7c..5f4559b 100644 --- a/src/bots/kojii/EdenLogosCharacterCog.py +++ b/src/bots/kojii/EdenLogosCharacterCog.py @@ -6,6 +6,11 @@ class EdenLogosCharacterCog(LogosCharacterCog): def __init__(self, bot: commands.bot) -> None: super().__init__(bot) + @commands.Cog.listener() + async def on_member_join(self, member): + print(f"{member} has joined the guild id: {member.guild.id}") + await member.send("Welcome to the server! Please read the rules and enjoy your stay!") + def setup(bot: commands.Bot) -> None: bot.add_cog(EdenLogosCharacterCog(bot)) From f0a2511e1fea7087208bbf18cf83818bee0c053b Mon Sep 17 00:00:00 2001 From: Gene Kogan Date: Tue, 6 Feb 2024 23:47:21 -0800 Subject: [PATCH 3/6] on welcome and other stuff --- src/bots/eden/EdenGeneratorCog.py | 11 ++++++-- src/bots/kojii/EdenLogosCharacterCog.py | 23 ++++++++++++++- src/cogs/AssistantCog.py | 8 +++--- src/cogs/CharacterCog.py | 8 +++--- src/cogs/CharacterGeneratorCog.py | 14 +++++----- src/cogs/GeneratorCog.py | 14 +++++----- src/cogs/LogosCharacterCog.py | 14 ++++++++-- src/common/eden.py | 37 +++++++++++++++++-------- src/common/models.py | 2 +- 9 files changed, 91 insertions(+), 40 deletions(-) diff --git a/src/bots/eden/EdenGeneratorCog.py b/src/bots/eden/EdenGeneratorCog.py index 8eaab7f..5c9e53c 100644 --- a/src/bots/eden/EdenGeneratorCog.py +++ b/src/bots/eden/EdenGeneratorCog.py @@ -1,11 +1,18 @@ +import asyncio from discord.ext import commands from cogs.CharacterGeneratorCog import CharacterGeneratorCog - class EdenCharacterGeneratorCog(CharacterGeneratorCog): def __init__(self, bot: commands.bot) -> None: super().__init__(bot) + # self.bot.loop.create_task(self.run_in_background()) + # async def run_in_background(self): + # await self.bot.wait_until_ready() + # channel = self.bot.get_channel(1006143747588898849) + # while not self.bot.is_closed(): + # await channel.send("Hello, world!") + # await asyncio.sleep(5) # wait for 5 seconds before sending the next message def setup(bot: commands.Bot) -> None: - bot.add_cog(EdenCharacterGeneratorCog(bot)) + bot.add_cog(EdenCharacterGeneratorCog(bot)) \ No newline at end of file diff --git a/src/bots/kojii/EdenLogosCharacterCog.py b/src/bots/kojii/EdenLogosCharacterCog.py index 5f4559b..ecf866a 100644 --- a/src/bots/kojii/EdenLogosCharacterCog.py +++ b/src/bots/kojii/EdenLogosCharacterCog.py @@ -2,14 +2,35 @@ from cogs.LogosCharacterCog import LogosCharacterCog +GUILD_ID = 1128729869535150260 + +welcome_message = """🎨 Welcome to kojii.ai Discord! 🤖✨ + +Hello **{name}** and welcome to our creative space! 🚀 I'm excited to have you here as part of our community of art enthusiasts and tech explorers. + +🌟 Dive into our various channels. Introduce yourself in and head over to for a relaxed conversation. + +💬 Our team is here to help! If you have any questions, ideas, or need assistance, feel free to reach out to us in . + +🎙️ This Discord is a hub for creativity! Share your thoughts, ideas, or even your latest artworks in . + +🤖 Ready to unleash your creativity? Head over to your favorite artist channel and play with the models. Don't forget to share your masterpieces with the community! + +🌈 Enjoy Your Stay: +We hope you have an incredible time exploring, creating, and connecting. Thank you for joining! +""" + + class EdenLogosCharacterCog(LogosCharacterCog): def __init__(self, bot: commands.bot) -> None: super().__init__(bot) @commands.Cog.listener() async def on_member_join(self, member): + if member.guild.id != GUILD_ID: + return print(f"{member} has joined the guild id: {member.guild.id}") - await member.send("Welcome to the server! Please read the rules and enjoy your stay!") + await member.send(welcome_message.format(name=member.name)) def setup(bot: commands.Bot) -> None: diff --git a/src/cogs/AssistantCog.py b/src/cogs/AssistantCog.py index df35367..bea0232 100644 --- a/src/cogs/AssistantCog.py +++ b/src/cogs/AssistantCog.py @@ -17,7 +17,7 @@ EdenAssistantConfig, GenerationLoopInput, SignInCredentials, - StableDiffusionConfig, + EdenConfig, ) ALLOWED_CHANNELS = [int(c) for c in os.getenv("ALLOWED_CHANNELS", "").split(",")] @@ -122,13 +122,13 @@ async def on_message(self, message: discord.Message) -> None: if not config.get("seed"): config["seed"] = random.randint(1, 1e8) - config = StableDiffusionConfig(generator_name=mode, **config) + config = EdenConfig(generator_name=mode, **config) config = self.add_lora(config) source = get_source(ctx) - is_video_request = mode in ["interpolate", "real2real"] + is_video_request = mode in ["interpolate", "real2real", "monologue", "dialogue", "story"] start_bot_message = f"**{text_input}** - <@!{ctx.author.id}>\n" original_text = ( @@ -158,7 +158,7 @@ def message_preprocessor(self, message: discord.Message) -> str: message_content = message_content.strip() return message_content - def add_lora(self, config: StableDiffusionConfig): + def add_lora(self, config: EdenConfig): if self.lora: config.lora = self.lora.lora_id config.lora_strength = self.lora.lora_strength diff --git a/src/cogs/CharacterCog.py b/src/cogs/CharacterCog.py index 6a84f7b..7ea1c04 100644 --- a/src/cogs/CharacterCog.py +++ b/src/cogs/CharacterCog.py @@ -14,7 +14,7 @@ from common.models import ( GenerationLoopInput, SignInCredentials, - StableDiffusionConfig, + EdenConfig, ) ALLOWED_CHANNELS = [int(c) for c in os.getenv("ALLOWED_CHANNELS", "").split(",")] @@ -117,13 +117,13 @@ async def on_message(self, message: discord.Message) -> None: if not config.get("seed"): config["seed"] = random.randint(1, 1e8) - config = StableDiffusionConfig(generator_name=mode, **config) + config = EdenConfig(generator_name=mode, **config) config = self.add_lora(config, concept) source = get_source(ctx) - is_video_request = mode in ["interpolate", "real2real"] + is_video_request = mode in ["interpolate", "real2real", "monologue", "dialogue", "story"] start_bot_message = f"**{text_input}** - <@!{ctx.author.id}>\n" original_text = ( @@ -153,7 +153,7 @@ def message_preprocessor(self, message: discord.Message) -> str: message_content = message_content.strip() return message_content - def add_lora(self, config: StableDiffusionConfig, concept: str): + def add_lora(self, config: EdenConfig, concept: str): if concept: config.lora = concept config.lora_strength = 0.6 diff --git a/src/cogs/CharacterGeneratorCog.py b/src/cogs/CharacterGeneratorCog.py index 47e6e3c..9a6262f 100644 --- a/src/cogs/CharacterGeneratorCog.py +++ b/src/cogs/CharacterGeneratorCog.py @@ -14,7 +14,7 @@ from common.models import ( GenerationLoopInput, SignInCredentials, - StableDiffusionConfig, + EdenConfig, ) ALLOWED_GUILDS = [g for g in os.getenv("ALLOWED_GUILDS", "").split(",")] or [] @@ -54,7 +54,7 @@ async def test( ): print("Received test") - config = StableDiffusionConfig( + config = EdenConfig( generator_name="test", ) @@ -112,7 +112,7 @@ async def create( width, height, upscale_f = self.get_dimensions(aspect_ratio, large) steps = 15 if fast else 35 - config = StableDiffusionConfig( + config = EdenConfig( generator_name="create", text_input=text_input, width=width, @@ -166,7 +166,7 @@ async def remix( steps = 50 width, height = 1024, 1024 - config = StableDiffusionConfig( + config = EdenConfig( generator_name="remix", text_input="remix", init_image_data=image1.url, @@ -228,7 +228,7 @@ async def real2real( steps = 40 width, height = 768, 768 - config = StableDiffusionConfig( + config = EdenConfig( generator_name="real2real", stream=True, stream_every=1, @@ -308,7 +308,7 @@ async def lerp( steps = 40 width, height, upscale_f = self.get_video_dimensions(aspect_ratio, False) - config = StableDiffusionConfig( + config = EdenConfig( generator_name="interpolate", stream=True, stream_every=1, @@ -374,7 +374,7 @@ def perm_check(self, ctx): return False return True - def add_lora(self, config: StableDiffusionConfig): + def add_lora(self, config: EdenConfig): _, concept = get_assistant( api_url=EDEN_API_URL, character_id=self.characterId, diff --git a/src/cogs/GeneratorCog.py b/src/cogs/GeneratorCog.py index 16b5574..305e91e 100644 --- a/src/cogs/GeneratorCog.py +++ b/src/cogs/GeneratorCog.py @@ -14,7 +14,7 @@ from common.models import ( GenerationLoopInput, SignInCredentials, - StableDiffusionConfig, + EdenConfig, ) ALLOWED_GUILDS = [g for g in os.getenv("ALLOWED_GUILDS", "").split(",")] or [] @@ -53,7 +53,7 @@ async def test( ): print("Received test") - config = StableDiffusionConfig( + config = EdenConfig( generator_name="test", ) @@ -111,7 +111,7 @@ async def create( width, height, upscale_f = self.get_dimensions(aspect_ratio, large) steps = 15 if fast else 35 - config = StableDiffusionConfig( + config = EdenConfig( generator_name="create", text_input=text_input, width=width, @@ -165,7 +165,7 @@ async def remix( steps = 50 width, height = 1024, 1024 - config = StableDiffusionConfig( + config = EdenConfig( generator_name="remix", text_input="remix", init_image_data=image1.url, @@ -227,7 +227,7 @@ async def real2real( steps = 40 width, height = 768, 768 - config = StableDiffusionConfig( + config = EdenConfig( generator_name="real2real", stream=True, stream_every=1, @@ -307,7 +307,7 @@ async def lerp( steps = 40 width, height, upscale_f = self.get_video_dimensions(aspect_ratio, False) - config = StableDiffusionConfig( + config = EdenConfig( generator_name="interpolate", stream=True, stream_every=1, @@ -373,7 +373,7 @@ def perm_check(self, ctx): return False return True - def add_lora(self, config: StableDiffusionConfig): + def add_lora(self, config: EdenConfig): if self.lora: config.lora = self.lora.lora_id config.lora_strength = self.lora.lora_strength diff --git a/src/cogs/LogosCharacterCog.py b/src/cogs/LogosCharacterCog.py index bdf981f..498bbdf 100644 --- a/src/cogs/LogosCharacterCog.py +++ b/src/cogs/LogosCharacterCog.py @@ -22,7 +22,7 @@ from common.models import ( GenerationLoopInput, SignInCredentials, - StableDiffusionConfig, + EdenConfig, ) ALLOWED_CHANNELS = [int(c) for c in os.getenv("ALLOWED_CHANNELS", "").split(",")] @@ -57,6 +57,14 @@ def __init__( @commands.Cog.listener("on_message") async def on_message(self, message: discord.Message) -> None: + + try: + print("on msg") + print(message) + + except Exception as e: + print(e) + if ( message.channel.id not in ALLOWED_CHANNELS or message.author.id == self.bot.user.id @@ -126,11 +134,11 @@ async def on_message(self, message: discord.Message) -> None: if not config.get("seed"): config["seed"] = random.randint(1, 1e8) - config = StableDiffusionConfig(generator_name=mode, **config) + config = EdenConfig(generator_name=mode, **config) source = get_source(ctx) - is_video_request = mode in ["interpolate", "real2real"] + is_video_request = mode in ["interpolate", "real2real", "monologue", "dialogue", "story"] start_bot_message = f"**{text_input}** - <@!{ctx.author.id}>\n" original_text = ( diff --git a/src/common/eden.py b/src/common/eden.py index 78e2c27..e03f8e3 100644 --- a/src/common/eden.py +++ b/src/common/eden.py @@ -209,7 +209,6 @@ async def generation_loop( refresh_interval = loop_input.refresh_interval is_video_request = loop_input.is_video_request prefer_gif = loop_input.prefer_gif - try: task_id = await request_creation(api_url, eden_credentials, source, config) current_output_url = None @@ -238,12 +237,13 @@ async def generation_loop( result, is_video_request, prefer_gif ) view = ui.View() - view.add_item( - LinkButton( - "View this on Eden", - f"{frontend_url}/creations/{result['creation']['_id']}", - ) - ) + + # view.add_item( + # LinkButton( + # "View this on Eden", + # f"{frontend_url}/creations/{result['creation']['_id']}", + # ) + # ) if not is_connected: view.add_item( @@ -253,16 +253,31 @@ async def generation_loop( ) ) + + creation_url = f"{frontend_url}/creations/{result['creation']['_id']}" + print("THE CREATION URL", creation_url) + if parent_message: + + #if is_video_request: await parent_message.reply( - start_bot_message, - files=[file], + start_bot_message + " -> " + creation_url, + files=[], view=view, ) + # else: + # await parent_message.reply( + # start_bot_message, + # files=[file], + # view=view, + # ) + else: await message.channel.send( - start_bot_message, - files=[file], + #start_bot_message, + start_bot_message + " -> " + creation_url, + files=[], + #files=[file], view=view, ) await message.delete() diff --git a/src/common/models.py b/src/common/models.py index d1801aa..35e0fbf 100644 --- a/src/common/models.py +++ b/src/common/models.py @@ -22,7 +22,7 @@ class SourceSettings: @dataclass -class StableDiffusionConfig: +class EdenConfig: def __init__(self, **kwargs): for key, value in kwargs.items(): setattr(self, key, value) From db06c5d4b536bc37ee8a31fae78a34b494ba292c Mon Sep 17 00:00:00 2001 From: Gene Kogan Date: Tue, 6 Feb 2024 23:53:21 -0800 Subject: [PATCH 4/6] embed --- src/bots/kojii/EdenLogosCharacterCog.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bots/kojii/EdenLogosCharacterCog.py b/src/bots/kojii/EdenLogosCharacterCog.py index ecf866a..ceadcc3 100644 --- a/src/bots/kojii/EdenLogosCharacterCog.py +++ b/src/bots/kojii/EdenLogosCharacterCog.py @@ -8,11 +8,11 @@ Hello **{name}** and welcome to our creative space! 🚀 I'm excited to have you here as part of our community of art enthusiasts and tech explorers. -🌟 Dive into our various channels. Introduce yourself in and head over to for a relaxed conversation. +🌟 Dive into our various channels. Introduce yourself in https://discord.com/channels/1128729869535150260/1203819263731834961 and head over to https://discord.com/channels/1128729869535150260/1203819229066043433 for a relaxed conversation. -💬 Our team is here to help! If you have any questions, ideas, or need assistance, feel free to reach out to us in . +💬 Our team is here to help! If you have any questions, ideas, or need assistance, feel free to reach out to us in https://discord.com/channels/1128729869535150260/1203819834836656128. -🎙️ This Discord is a hub for creativity! Share your thoughts, ideas, or even your latest artworks in . +🎙️ This Discord is a hub for creativity! Share your thoughts, ideas, or even your latest artworks in https://discord.com/channels/1128729869535150260/1203819881481506876. 🤖 Ready to unleash your creativity? Head over to your favorite artist channel and play with the models. Don't forget to share your masterpieces with the community! From b8f0548d7b561ec74c99333ff93a2e590e0f45d2 Mon Sep 17 00:00:00 2001 From: Gene Kogan Date: Fri, 9 Feb 2024 15:47:27 -0800 Subject: [PATCH 5/6] biennale bot --- src/bots/biennale/.env.example | 14 ++++++++++++++ src/bots/biennale/EdenGeneratorCog.py | 11 +++++++++++ src/bots/biennale/EdenLogosCharacterCog.py | 11 +++++++++++ 3 files changed, 36 insertions(+) create mode 100644 src/bots/biennale/.env.example create mode 100644 src/bots/biennale/EdenGeneratorCog.py create mode 100644 src/bots/biennale/EdenLogosCharacterCog.py diff --git a/src/bots/biennale/.env.example b/src/bots/biennale/.env.example new file mode 100644 index 0000000..004dd0c --- /dev/null +++ b/src/bots/biennale/.env.example @@ -0,0 +1,14 @@ +DISCORD_TOKEN= +MONGO_URI= +MONGO_DB_NAME= + +EDEN_API_URL= +EDEN_API_KEY= +EDEN_API_SECRET= +EDEN_CHARACTER_ID= + +ALLOWED_GUILDS= +ALLOWED_GUILDS_TEST= +ALLOWED_CHANNELS= + +LOGOS_URL= diff --git a/src/bots/biennale/EdenGeneratorCog.py b/src/bots/biennale/EdenGeneratorCog.py new file mode 100644 index 0000000..8eaab7f --- /dev/null +++ b/src/bots/biennale/EdenGeneratorCog.py @@ -0,0 +1,11 @@ +from discord.ext import commands +from cogs.CharacterGeneratorCog import CharacterGeneratorCog + + +class EdenCharacterGeneratorCog(CharacterGeneratorCog): + def __init__(self, bot: commands.bot) -> None: + super().__init__(bot) + + +def setup(bot: commands.Bot) -> None: + bot.add_cog(EdenCharacterGeneratorCog(bot)) diff --git a/src/bots/biennale/EdenLogosCharacterCog.py b/src/bots/biennale/EdenLogosCharacterCog.py new file mode 100644 index 0000000..ecd2f7c --- /dev/null +++ b/src/bots/biennale/EdenLogosCharacterCog.py @@ -0,0 +1,11 @@ +from discord.ext import commands +from cogs.LogosCharacterCog import LogosCharacterCog + + +class EdenLogosCharacterCog(LogosCharacterCog): + def __init__(self, bot: commands.bot) -> None: + super().__init__(bot) + + +def setup(bot: commands.Bot) -> None: + bot.add_cog(EdenLogosCharacterCog(bot)) From caea3924cfa84f3132e328d48e7d34fb1026e2c4 Mon Sep 17 00:00:00 2001 From: Gene Kogan Date: Sun, 11 Feb 2024 11:07:35 -0800 Subject: [PATCH 6/6] dont load file --- src/cogs/LogosCharacterCog.py | 18 +++++++++++------- src/common/discord.py | 4 ++++ src/common/eden.py | 29 +++++++++++++++-------------- 3 files changed, 30 insertions(+), 21 deletions(-) diff --git a/src/cogs/LogosCharacterCog.py b/src/cogs/LogosCharacterCog.py index 498bbdf..816c359 100644 --- a/src/cogs/LogosCharacterCog.py +++ b/src/cogs/LogosCharacterCog.py @@ -57,10 +57,12 @@ def __init__( @commands.Cog.listener("on_message") async def on_message(self, message: discord.Message) -> None: - + print("thios is a message") + print("--->") try: print("on msg") print(message) + print(message.content) except Exception as e: print(e) @@ -79,15 +81,15 @@ async def on_message(self, message: discord.Message) -> None: cutoff = message.created_at - timedelta(minutes=90) conversation_history = await message.channel.history(after=cutoff).flatten() conversation = "" - for message in conversation_history[-10:]: - timestamp = message.created_at.strftime("%I:%M %p") - author = message.author.name + for msg in conversation_history[-10:]: + timestamp = msg.created_at.strftime("%I:%M %p") + author = msg.author.name content = replace_mentions_with_usernames( - message.content, - message.mentions, + msg.content, + msg.mentions, ) conversation += f"\n{author} — {timestamp}\n{content}\n" - #if message.attachments: + #if msg.attachments: request = { "character_id": self.characterId, @@ -101,6 +103,8 @@ async def on_message(self, message: discord.Message) -> None: if not trigger_reply: trigger_reply = logos_think(LOGOS_URL, request) + print("TRIG REPLY", trigger_reply) + if trigger_reply: ctx = await self.bot.get_context(message) async with ctx.channel.typing(): diff --git a/src/common/discord.py b/src/common/discord.py index 8eaeae1..a9ca77a 100644 --- a/src/common/discord.py +++ b/src/common/discord.py @@ -20,6 +20,10 @@ def is_mentioned(message: discord.Message, user: discord.User) -> bool: :param user: The user to check. :return: True if the user is mentioned, False otherwise. """ + print("--======") + print(message) + print(message.content) + print("mentions", [m.id for m in message.mentions], "---", user.id) return user.id in [m.id for m in message.mentions] diff --git a/src/common/eden.py b/src/common/eden.py index e03f8e3..2b948fa 100644 --- a/src/common/eden.py +++ b/src/common/eden.py @@ -220,22 +220,23 @@ async def generation_loop( is_video_request, prefer_gif, ) - if output_url != current_output_url: - current_output_url = output_url - message_update = get_message_update(result) - await edit_message( - message, - start_bot_message, - message_update, - file_update=file, - ) + ## Intermediate results + # if output_url != current_output_url: + # current_output_url = output_url + # message_update = get_message_update(result) + # await edit_message( + # message, + # start_bot_message, + # message_update, + # file_update=file, + # ) if result["status"] == "completed": is_connected = await query_user_discord_connection( api_url, eden_credentials, source.author_id ) - file, output_url = await get_file_update( - result, is_video_request, prefer_gif - ) + # file, output_url = await get_file_update( + # result, is_video_request, prefer_gif + # ) view = ui.View() # view.add_item( @@ -261,7 +262,7 @@ async def generation_loop( #if is_video_request: await parent_message.reply( - start_bot_message + " -> " + creation_url, + start_bot_message + "\n" + creation_url, files=[], view=view, ) @@ -275,7 +276,7 @@ async def generation_loop( else: await message.channel.send( #start_bot_message, - start_bot_message + " -> " + creation_url, + start_bot_message + "\n" + creation_url, files=[], #files=[file], view=view,