From 8058dbf6ec595db729744d754c3d492a6bfbeb68 Mon Sep 17 00:00:00 2001 From: timotheyca Date: Mon, 20 Dec 2021 16:47:38 +0300 Subject: [PATCH] serve --- v6d2ctx/context.py | 1 - v6d2ctx/serve.py | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 v6d2ctx/serve.py diff --git a/v6d2ctx/context.py b/v6d2ctx/context.py index ed501fe..203fc77 100644 --- a/v6d2ctx/context.py +++ b/v6d2ctx/context.py @@ -3,7 +3,6 @@ import time from io import StringIO from typing import Union, Optional, Callable, Awaitable -# noinspection PyPackageRequirements import discord usertype = Union[discord.abc.User, discord.user.BaseUser, discord.Member, discord.User] diff --git a/v6d2ctx/serve.py b/v6d2ctx/serve.py new file mode 100644 index 0000000..ea77eb6 --- /dev/null +++ b/v6d2ctx/serve.py @@ -0,0 +1,26 @@ +import asyncio +import signal + +import discord + + +def serve(main, client: discord.Client, loop: asyncio.AbstractEventLoop): + async def aclose(): + await client.change_presence(status=discord.Status.offline) + await client.close() + + def close(): + loop.run_until_complete(aclose()) + + def sigtermed(*_args): + loop.create_task(aclose()) + + if __name__ == '__main__': + signal.signal(signal.SIGTERM, sigtermed) + try: + loop.run_until_complete(main) + except (KeyboardInterrupt, InterruptedError, RuntimeError): + pass + finally: + if not client.is_closed(): + close()