diff --git a/cogs/other.py b/cogs/other.py index e3f723b..c92a612 100644 --- a/cogs/other.py +++ b/cogs/other.py @@ -1397,20 +1397,23 @@ class OtherCog(commands.Cog): await ctx.defer() timings: Dict[str, float] = {} attachment: discord.Attachment - with Timer(timings, "download attachment"): + with Timer() as _t: data = await attachment.read() file = io.BytesIO(data) file.seek(0) - with Timer(timings, "Parse image"): + timings["Download attachment"] = _t.total + with Timer() as _t: img = await self.bot.loop.run_in_executor(None, Image.open, file) + timings["Parse image"] = _t.total try: - with Timer(timings, "Run OCR"): + with Timer() as _t: text = await self.bot.loop.run_in_executor(None, pytesseract.image_to_string, img) + timings["Perform OCR"] = _t.total except pytesseract.TesseractError as e: return await ctx.respond(f"Failed to perform OCR: `{e}`") if len(text) > 4096: - with Timer(timings, "Upload text to mystbin"): + with Timer() as _t: try: response = await self.http.put( "https://api.mystb.in/paste", @@ -1434,14 +1437,21 @@ class OtherCog(commands.Cog): colour=discord.Colour.dark_theme() ) await ctx.respond(embed=embed) + timings["Upload text to mystbin"] = _t.total + elif len(text) <= 1500 and text.count("\n") <= 7: + with Timer() as _t: + await ctx.respond(embed=discord.Embed(description=text)) + timings["Respond (Text)"] = _t.total else: - with Timer(timings, "Respond (File)"): + with Timer() as _t: out_file = io.BytesIO(text.encode("utf-8", "replace")) await ctx.respond(file=discord.File(out_file, filename="ocr.txt")) + timings["Respond (File)"] = _t.total if timings: + text = "Timings:\n" + "\n".join("%s: %s" % (k.title(), v) for k, v in timings.items()) await ctx.edit( - content="Timings:\n" + "\n".join("%s: %s" % (k.title(), v) for k, v in timings.items()), + content=text, ) @commands.slash_command(name="image-to-gif") diff --git a/cogs/timetable.py b/cogs/timetable.py index 75b9a7d..36b28d8 100644 --- a/cogs/timetable.py +++ b/cogs/timetable.py @@ -18,9 +18,6 @@ def schedule_times(): for h in range(24): for m in range(0, 60, 15): times.append(time(h, m, 0)) - console.print("[TimeTable Updater Task] Update times:") - for _time in times: - console.print("[TimeTable Updater Task] {0.hour}:{0.minute}".format(_time)) return times @@ -220,9 +217,9 @@ class TimeTableCog(commands.Cog): """Shows the current/next lesson.""" if date: try: - date = datetime.strptime(date, "%d/%m/%Y %H:%M") + date = datetime.strptime(date, "%d/%m/%y %H:%M") except ValueError: - return await ctx.respond("Invalid date (DD/MM/YYYY HH:MM).") + return await ctx.respond("Invalid date (DD/MM/YY HH:MM).") else: date = datetime.now() await ctx.defer() @@ -237,12 +234,11 @@ class TimeTableCog(commands.Cog): """Shows the timetable for today/the specified date""" if date: try: - date = datetime.strptime(date, "%d/%m/%Y") + date = datetime.strptime(date, "%d/%m/%y") except ValueError: - return await ctx.respond("Invalid date (DD/MM/YYYY).") + return await ctx.respond("Invalid date (DD/MM/YY).") else: date = datetime.now() - date = datetime.now() text = self.format_timetable_message(date) view = TimeTableDaySwitcherView(ctx.user, self, date) @@ -256,17 +252,13 @@ class TimeTableCog(commands.Cog): paper_2 = datetime(2023, 6, 21, 12, tzinfo=timezone.utc) paper_1_url = "https://classroom.google.com/c/NTQ5MzE5ODg0ODQ2/m/NTUzNjI5NjAyMDQ2/details" paper_2_url = "https://classroom.google.com/c/NTQ5MzE5ODg0ODQ2/m/NjA1Nzk3ODQ4OTg0/details" - response = await ctx.respond( + await ctx.respond( f"Paper A: [{discord.utils.format_dt(paper_1, 'R')}]({paper_1_url})\n" f"Paper B: [{discord.utils.format_dt(paper_2, 'R')}]({paper_2_url})" ) - await asyncio.sleep(2) - if response.message: - await response.message.edit(suppress=True) - else: - message_id = (await ctx.interaction.original_response()).id - message = await ctx.channel.fetch_message(message_id) - await message.edit(suppress=True) + message_id = (await ctx.interaction.original_response()).id + message = await ctx.channel.fetch_message(message_id) + await message.edit(suppress=True) def setup(bot): diff --git a/utils/__init__.py b/utils/__init__.py index fa93257..e630c9a 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -39,8 +39,10 @@ class Timer: @property def total(self) -> float: - if not self._start_time and not self._end_time: - raise RuntimeError("Timer has not been started or stopped.") + if not self._start_time: + raise RuntimeError("Timer has not been started.") + if not self._end_time: + return time.time() - self._start_time return self._end_time - self._start_time def __enter__(self):