start loop in init, use before loop, waiting on bot ready, to set up needed data.

This commit is contained in:
2023-09-09 11:38:03 -04:00
parent e7cfe8bd4c
commit 8b831fb6aa
+13 -12
View File
@@ -21,18 +21,8 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
self.bot = bot self.bot = bot
self.current_election = None self.current_election = None
@commands.Cog.listener() # pylint doesn't recognize that daily_loop is subclassed from tasks.loop.
async def on_ready(self): self.daily_loop.start() # pylint: disable=no-member
"""
Starts the loop when bot is ready.
"""
await self.bot.wait_until_ready()
# wait until the discord bot is all ready. Bot needs to know guilds.
self.current_election = self.get_current_cycle()
# pylint doesn't recognize that periodic_update_guild_data is subclassed from tasks.loop.
await self.daily_loop.start() # pylint: disable=no-member
@tasks.loop(time=time(hour=0, tzinfo=timezone("GMT"))) @tasks.loop(time=time(hour=0, tzinfo=timezone("GMT")))
async def daily_loop(self): async def daily_loop(self):
@@ -50,6 +40,17 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
if self.current_election.election_over: if self.current_election.election_over:
self.current_election = None self.current_election = None
@daily_loop.before_loop
async def before_loop(self):
"""
Actions run before the loop starts. Want to wait for bot to be ready and get the current cycle.
"""
await self.bot.wait_until_ready()
# Bot needs to know guilds to get the current cycle.
self.current_election = self.get_current_cycle()
def get_current_cycle(self) -> ElectionCycle: def get_current_cycle(self) -> ElectionCycle:
""" """
Creates an object for the current election cycle if one is active. An election is considered active Creates an object for the current election cycle if one is active. An election is considered active