From 02d50180f12cf80fd9126ce7fd96a10124457679 Mon Sep 17 00:00:00 2001 From: Zevaryx Date: Fri, 25 Mar 2022 12:48:33 -0600 Subject: [PATCH] Verify that target sizes are sane --- jarvis/cogs/image.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/jarvis/cogs/image.py b/jarvis/cogs/image.py index f924d7f..d15fdd8 100644 --- a/jarvis/cogs/image.py +++ b/jarvis/cogs/image.py @@ -58,6 +58,7 @@ class ImageCog(Scale): async def _resize( self, ctx: InteractionContext, target: str, attachment: Attachment = None, url: str = None ) -> None: + await ctx.defer() if not attachment and not url: await ctx.send("A URL or attachment is required", ephemeral=True) return @@ -73,10 +74,18 @@ class ImageCog(Scale): ) return - tgt_size = unconvert_bytesize(float(tgt.groups()[0]), tgt.groups()[1]) + try: + tgt_size = unconvert_bytesize(float(tgt.groups()[0]), tgt.groups()[1]) + except ValueError: + await ctx.send("Failed to read your target size. Try a more sane one", ephemeral=True) + return + if tgt_size > unconvert_bytesize(8, "MB"): await ctx.send("Target too large to send. Please make target < 8MB", ephemeral=True) return + elif tgt_size < 1024: + await ctx.send("Sizes < 1KB are extremely unreliable and are disabled", ephemeral=True) + return if attachment: url = attachment.url @@ -91,7 +100,7 @@ class ImageCog(Scale): size = len(data) if size <= tgt_size: - await ctx.send("Image already meets target.") + await ctx.send("Image already meets target.", ephemeral=True) return ratio = max(tgt_size / size - 0.02, 0.50)