diff --git a/plugin/lib.py b/plugin/lib.py index f232fa3..e326d1c 100644 --- a/plugin/lib.py +++ b/plugin/lib.py @@ -17,22 +17,25 @@ def LOWER(expression: Expression) -> RawExpr: return RawExpr(final_expr, final_values) + def asexpr(value: Any) -> RawExpr: """ Turn a value into an expression. """ return RawExpr(sql.Placeholder(), (value,)) + async def fire_and_forget(awaitable, do_in=1, ignorable=(discord.HTTPException)): await asyncio.sleep(do_in) try: - await awaitable + await awaitable except ignorable: pass except Exception as e: # TODO: Log unexpected exceptions pass + class ThreadedWebhook(discord.Webhook): __slots__ = ("thread_id",) @@ -55,10 +58,14 @@ class ThreadedWebhook(discord.Webhook): kwargs.setdefault("thread", discord.Object(self.thread_id)) return await super().send(*args, **kwargs) + async def edit_message(self, *args, **kwargs): + if self.thread_id is not None: + kwargs.setdefault("thread", discord.Object(self.thread_id)) + return await super().edit_message(*args, **kwargs) + async def test_webhook(self): embed = discord.Embed( - title="Testing", - description="Testing logging webhook, feel free to delete." + title="Testing", description="Testing logging webhook, feel free to delete." ) result = await self.send(embed=embed, wait=True, silent=True) asyncio.create_task(fire_and_forget(result.delete()))