File size: 4,408 Bytes
056f521 |
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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# CREATED BY: https://t.me/O_oKarma
# API CREDITS: @Qewertyy
# PROVIDED BY: https://github.com/Team-ProjectCodeX
# <============================================== IMPORTS =========================================================>
import asyncio
import aiohttp
from telethon import events
from Mikobot import tbot as client
# <=======================================================================================================>
BASE_URL = "https://lexica.qewertyy.dev"
SESSION_HEADERS = {"Host": "lexica.qewertyy.dev"}
# <=============================================== CLASS + FUNCTION ========================================================>
class AsyncClient:
def __init__(self):
self.url = BASE_URL
self.session = aiohttp.ClientSession()
async def generate(self, model_id, prompt, negative_prompt):
data = {
"model_id": model_id,
"prompt": prompt,
"negative_prompt": negative_prompt if negative_prompt else "",
"num_images": 1,
}
try:
async with self.session.post(
f"{self.url}/models/inference", data=data, headers=SESSION_HEADERS
) as resp:
return await resp.json()
except Exception as e:
print(f"Request failed: {str(e)}")
async def get_images(self, task_id, request_id):
data = {"task_id": task_id, "request_id": request_id}
try:
async with self.session.post(
f"{self.url}/models/inference/task", data=data, headers=SESSION_HEADERS
) as resp:
return await resp.json()
except Exception as e:
print(f"Request failed: {str(e)}")
async def generate_image_handler(event, model_id):
command_parts = event.text.split(" ", 1)
if len(command_parts) < 2:
await event.reply("Please provide a prompt.")
return
prompt = command_parts[1]
negative_prompt = ""
# Send the initial "Generating your image, wait sometime" message
reply_message = await event.reply("Generating your image, please wait...")
client = AsyncClient()
response = await client.generate(model_id, prompt, negative_prompt)
task_id = response["task_id"]
request_id = response["request_id"]
while True:
generated_images = await client.get_images(task_id, request_id)
if "img_urls" in generated_images:
for img_url in generated_images["img_urls"]:
# Delete the initial reply message
await reply_message.delete()
# Send the generated image
await event.reply(file=img_url)
break # Exit the loop when images are available
else:
# Wait for a few seconds before checking again
await asyncio.sleep(5)
# Optionally, you can add a timeout to avoid an infinite loop
timeout_seconds = 600 # 10 minutes (adjust as needed)
if timeout_seconds <= 0:
await reply_message.edit("Image generation timed out.")
break
timeout_seconds -= 5 # Decrement timeout by 5 seconds
@client.on(events.NewMessage(pattern=r"/meinamix"))
async def meinamix_handler(event):
await generate_image_handler(event, model_id=2)
@client.on(events.NewMessage(pattern=r"/sushi"))
async def darksushi_handler(event):
await generate_image_handler(event, model_id=7)
@client.on(events.NewMessage(pattern=r"/meinahentai"))
async def meinahentai_handler(event):
await generate_image_handler(event, model_id=8)
@client.on(events.NewMessage(pattern=r"/darksushimix"))
async def darksushimix_handler(event):
await generate_image_handler(event, model_id=9)
@client.on(events.NewMessage(pattern=r"/anylora"))
async def anylora_handler(event):
await generate_image_handler(event, model_id=3)
@client.on(events.NewMessage(pattern=r"/cetusmix"))
async def cetusmix_handler(event):
await generate_image_handler(event, model_id=10)
@client.on(events.NewMessage(pattern=r"/darkv2"))
async def darkv_handler(event):
await generate_image_handler(event, model_id=14)
@client.on(events.NewMessage(pattern=r"/creative"))
async def creative_handler(event):
await generate_image_handler(event, model_id=12)
# <================================================ END =======================================================>
|