diff --git a/payphone/bot.py b/payphone/bot.py index 30ecc9b..65ab2b6 100644 --- a/payphone/bot.py +++ b/payphone/bot.py @@ -69,6 +69,12 @@ class Payphone(commands.AutoShardedBot): owner_ids=[898569996949676052, 777338793803513886], ) + @tasks.loop(seconds=5) + async def update_heartbeat(self) -> None: + """Updates the heartbeat timestamp.""" + + self.heartbeat.value = int(datetime.now(timezone.utc).timestamp()) + async def on_ready(self) -> None: """Initializes the bot. @@ -80,6 +86,8 @@ class Payphone(commands.AutoShardedBot): await self.redis.ping() + self.update_heartbeat.start() + print(f"Ready! Logged in as {self.user.display_name}.") async def on_shard_ready(self, shard_id: int) -> None: diff --git a/payphone/cogs/utility/cog.py b/payphone/cogs/utility/cog.py index 0a360a0..c111e46 100644 --- a/payphone/cogs/utility/cog.py +++ b/payphone/cogs/utility/cog.py @@ -12,17 +12,6 @@ class Utility(base.Cog): def __init__(self, bot_instance: bot.Payphone): self.bot = bot_instance - self.update_heartbeat.start() - - def cog_unload(self) -> None: - self.update_heartbeat.cancel() - - @tasks.loop(seconds=5) - async def update_heartbeat(self) -> None: - """Updates the heartbeat timestamp.""" - - self.bot.heartbeat.value = int(datetime.now(timezone.utc).timestamp()) - @commands.command() @commands.cooldown(1, 60, commands.BucketType.user) @checks.is_unbanned() diff --git a/run.py b/run.py index 2b69ca0..3b7b275 100644 --- a/run.py +++ b/run.py @@ -31,6 +31,9 @@ def shard( bot.heartbeat = heartbeat try: + # Skip uvloop initialization, it stops tasks from running for some reason. + raise ImportError() + import uvloop # pylint: disable=import-error bot.loop = uvloop.new_event_loop()