# Ultroid - UserBot # Copyright (C) 2021-2025 TeamUltroid # # This file is a part of < https://github.com/TeamUltroid/Ultroid/ > # PLease read the GNU Affero General Public License in # . """ ✘ Commands Available - • `{i}logo ` Generate a logo of the given Text Or Reply To image , to write ur text on it. Or Reply To Font File, To write with that font. """ import glob import os import random from telethon.tl.types import InputMessagesFilterPhotos try: from PIL import Image except ImportError: Image = None from pyUltroid.fns.misc import unsplashsearch from pyUltroid.fns.tools import LogoHelper from . import OWNER_ID, OWNER_NAME, download_file, get_string, mediainfo, ultroid_cmd @ultroid_cmd(pattern="logo( (.*)|$)") async def logo_gen(event): xx = await event.eor(get_string("com_1")) name = event.pattern_match.group(1).strip() if not name: return await xx.eor("`Give a name too!`", time=5) bg_, font_ = None, None if event.reply_to_msg_id: temp = await event.get_reply_message() if temp.media: if hasattr(temp.media, "document") and ( ("font" in temp.file.mime_type) or (".ttf" in temp.file.name) or (".otf" in temp.file.name) ): font_ = await temp.download_media("resources/fonts/") elif "pic" in mediainfo(temp.media): bg_ = await temp.download_media() if not bg_: SRCH = [ "background", "neon", "anime", "art", "bridges", "streets", "computer", "cyberpunk", "nature", "abstract", "exoplanet", "magic", "3d render", ] res = await unsplashsearch(random.choice(SRCH), limit=1) bg_, _ = await download_file(res[0], "resources/downloads/logo.png") newimg = "resources/downloads/unsplash-temp.jpg" img_ = Image.open(bg_) img_.save(newimg) os.remove(bg_) bg_ = newimg if not font_: fpath_ = glob.glob("resources/fonts/*") font_ = random.choice(fpath_) if len(name) <= 8: strke = 10 elif len(name) >= 9: strke = 5 else: strke = 20 name = LogoHelper.make_logo( bg_, name, font_, fill="white", stroke_width=strke, stroke_fill="black", ) await xx.edit("`Done!`") await event.client.send_file( event.chat_id, file=name, caption=f"Logo by [{OWNER_NAME}](tg://user?id={OWNER_ID})", force_document=True, ) os.remove(name) await xx.delete() if os.path.exists(bg_): os.remove(bg_)