# █ █ ▀ █▄▀ ▄▀█ █▀█ ▀ # █▀█ █ █ █ █▀█ █▀▄ █ # © Copyright 2022 # # https://t.me/hikariatama # # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html # meta pic: https://static.dan.tatar/craiyon_icon.png # meta banner: https://mods.hikariatama.ru/badges/craiyon.jpg # meta developer: @hikarimods # scope: hikka_only # scope: hikka_min 1.2.10 import base64 import requests from telethon.tl.types import Message from .. import loader, utils @loader.tds class CrAIyonMod(loader.Module): """Generates images by description using Craiyon AI (DALL-E)""" strings = { "name": "CrAIyon", "args": "🚫 No photo description specified", "generating": ( "🖌 Drawing request {} using craiyon. Be patient," " this takes some time" ), "error": "🚫 I can't draw {}", "drawing": "🖌 This is delicious {}", } strings_ru = { "args": "🚫 Не указано описание фотографии", "generating": ( "🖌 Рисую запрос {} через craiyon. Будьте терпеливы," " это занимает некоторое время" ), "error": "🚫 Я не могу нарисовать {}", "drawing": "🖌 Восхитительный {}", "_cmd_doc_craiyon": ( "<описание> - Сгенерировать изображение по описанию с помощью Craiyon AI" " (DALL-E)" ), "_cls_doc": "Генерирует изображения по описанию с помощью Craiyon AI (DALL-E)", } strings_de = { "args": "🚫 Keine Bildbeschreibung angegeben", "generating": ( "🖌 Zeichne Anfrage {} mit craiyon. Sei geduldig," " das dauert ein wenig" ), "error": "🚫 Kann nicht zeichnen {}", "drawing": "🖌 Das ist lecker {}", "_cmd_doc_craiyon": ( " - Generiert ein Bild nach Beschreibung mit Craiyon AI" " (DALL-E)" ), "_cls_doc": "Generiert Bilder nach Beschreibung mit Craiyon AI (DALL-E)", } strings_hi = { "args": "🚫 कोई फोटो विवरण निर्दिष्ट नहीं किया गया", "generating": ( "🖌 craiyon के साथ अनुरोध रचना {}। धैर्य रखें," " यह कुछ समय लेता है" ), "error": "🚫 मैं नहीं चित्र बना सकता {}", "drawing": "🖌 यह अद्भुत है {}", "_cmd_doc_craiyon": ( "<विवरण> - Craiyon AI (DALL-E) का उपयोग करके विवरण के अनुसार एक छवि उत्पन्न" " करता है" ), "_cls_doc": "Craiyon AI (DALL-E) का उपयोग करके विवरण के अनुसार छवियां उत्पन्न करता है", } strings_uz = { "args": "🚫 Rasm tavsifi ko'rsatilmadi", "generating": ( "🖌 craiyon orqali so'rovni chizish {}." " Sabr qiling, bu bir necha vaqt oladi" ), "error": "🚫 Rasmni chizib bo'lmadi {}", "drawing": "🖌 Bu juda yaxshi {}", "_cmd_doc_craiyon": ( " - Craiyon AI (DALL-E) orqali tavsifga mos rasm yaratadi" ), "_cls_doc": "Craiyon AI (DALL-E) orqali tavsifga mos rasmlar yaratadi", } strings_tr = { "args": "🚫 Fotoğraf açıklaması belirtilmedi", "generating": ( "🖌 craiyon ile istek çizimi {}." " Sabırlı olun, bu biraz zaman alır" ), "error": "🚫 Çizemiyorum {}", "drawing": "🖌 Bu lezzetli {}", "_cmd_doc_craiyon": ( " - Craiyon AI (DALL-E) kullanarak açıklamaya göre bir resim" " oluşturun" ), "_cls_doc": "Craiyon AI (DALL-E) kullanarak açıklamaya göre resimler oluşturur", } async def craiyoncmd(self, message: Message): """ - Generate an image by description using Craiyon AI (DALL-E)""" args = utils.get_args_raw(message) if not args: await utils.answer(message, self.strings("args")) return form = await self.inline.form( self.strings("generating").format(utils.escape_html(args)), message=message, gif="https://pa1.narvii.com/6074/b2f0163e5dd1ff7ee6582e1e032eb906b25228ac_hq.gif", silent=True, reply_markup={"text": "🧑‍🎨 Drawing...", "data": "empty"}, ttl=24 * 60 * 60, ) result = ( await utils.run_sync( requests.post, "https://backend.craiyon.com/generate", json={"prompt": args}, headers={ "accept": "application/json", "accept-encoding": "gzip, deflate, br", "accept-language": "en-US,en;q=0.9,ru;q=0.8", "content-type": "application/json", "origin": "https://www.craiyon.com", "referer": "https://www.craiyon.com/", "user-agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" " (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36" ), }, ) ).json() if not result.get("images"): await form.edit( self.strings("error").format(args), reply_markup=None, gif="https://data.whicdn.com/images/61134119/original.gif", ) return images = [base64.b64decode(i.encode()) for i in result["images"]] await message.respond(self.strings("drawing").format(args), file=images) await form.delete()