import discord import os import threading import gradio as gr import requests import json import random import time import re from discord import Embed, Color from discord.ext import commands from gradio_client import Client from PIL import Image import asyncio import shutil # for doing image movement magic import concurrent.futures DFIF_TOKEN = os.getenv('HF_TOKEN') DISCORD_TOKEN = os.environ.get("GRADIOTEST_TOKEN", None) jojogan = Client("akhaliq/JoJoGAN", DFIF_TOKEN) intents = discord.Intents.default() intents.message_content = True bot = commands.Bot(command_prefix='!', intents=intents) @bot.command() async def lunar(ctx): await ctx.message.add_reaction('🤖') @bot.command() async def jojo(ctx): attachment = await discord_before(ctx) if attachment: asyncio.create_task(generation(ctx, attachment)) #await generation(ctx, attachment) async def discord_before(ctx): if ctx.message.attachments: await asyncio.gather( ctx.message.add_reaction('🤖'), ctx.message.add_reaction('⌛') ) attachment = ctx.message.attachments[0] return attachment else: await asyncio.gather( ctx.send(f"{ctx.author.mention} No attachments to be found... Can't animify dat! Try sending me an image 😉"), ctx.message.add_reaction('❌') ) return None async def generation(ctx, attachment): if attachment: style = 'JoJo' im = await asyncio.to_thread(jojogan.predict, attachment.url, style) #im = jojogan.predict(attachment.url, style) await asyncio.gather( ctx.send(f'{ctx.author.mention} Here is the jojo version of it'), ctx.send(file=discord.File(im)), ctx.message.remove_reaction('⌛', bot.user), ctx.message.add_reaction('✅') ) #-------------------------------------------------------- def run_bot(): bot.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.launch() #-------------------------------------------------------- ''' async def discord_after(ctx, im): await asyncio.gather( ctx.send(f'{ctx.author.mention} Here is the jojo version of it'), ctx.send(file=discord.File(im)), ctx.message.remove_reaction('⌛', bot.user), ctx.message.add_reaction('✅') ) ''' ''' def blocking_io(): #generate #return image async def main(): loop = asyncio.get_running_loop() exeresult = await loop.run_in_executor( None, blocking_io) print('default thread pool', exeresult) '''