# --------------------------------------------------------------------------------- # Author: @shiro_hikka # Name: Timer # Description: Creates fine adorned timer # Commands: timer # --------------------------------------------------------------------------------- # © Copyright 2025 # # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html # --------------------------------------------------------------------------------- # scope: hikka_only # meta developer: @shiro_hikka # meta banner: https://0x0.st/s/FIR0RnhUN5pZV5CZ6sNFEw/8KBz.jpg # --------------------------------------------------------------------------------- __version__ = (1, 0, 0) from .. import loader, utils from telethon.tl.types import Message import re import asyncio @loader.tds class Timer(loader.Module): """Creates fine adorned timer""" strings = { "name": "Timer", "q": "Current Timer for {}\n👾 {} left" } async def parseArgs(self, message, args, parsed): for arg in args: if arg[-1] not in ["h", "m", "s"]: args.remove(arg) for arg in args: parsed[arg[-1]] = int(re.sub(r"[^0-9]", "", arg)) return parsed async def timercmd(self, message: Message): """ [5h 5m 5s] - launch the timer""" args = (utils.get_args_raw(message)).split() parsed = {"h": None, "m": None, "s": None} if not args: return await utils.answer(message, "Specify time") _parsed = await self.parseArgs(message, args, parsed) if all(_parsed[i] is None for i in parsed): return await utils.answer(message, "Time isn't specified") hours = _parsed["h"] * 3600 if _parsed["h"] else 0 mins = _parsed["m"] * 60 if _parsed["m"] else 0 secs = _parsed["s"] if _parsed["s"] else 0 _time = secs + mins + hours c = f"{hours}:{mins}:{secs}" pretime = "{}:{}" while _time > -1: h = f"{_time//3600}" m = f"{_time%3600//60}" s = f"{_time%3600%60}" if _time > 59: q = self.strings["q"].format(c, pretime.format(h, m)) else: q = self.strings["q"].format(c, pretime.format(h, f"{m}:{s}")) try: await utils.answer(message, q) except: pass _time -= 1 await asyncio.sleep(1) regex = r"\..*\<.*?\>.*" answer = re.sub(regex, "\n Time's over", q.replace("\n", ".")) await utils.answer(message, answer)