From 6c9de43e735fd44833b1f4554e146f3ac23b8019 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Mon, 15 May 2023 11:34:14 -0400 Subject: [PATCH] Set up bot to do initial test. Made changes in class to make test take less time. --- classes/election_cycle.py | 48 ++++++++++++++++++++++++++++++--------- cogs/loops/daily_loop.py | 10 ++++---- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/classes/election_cycle.py b/classes/election_cycle.py index 97769d1..9e80e4a 100644 --- a/classes/election_cycle.py +++ b/classes/election_cycle.py @@ -4,6 +4,7 @@ Contains the election cycle class from datetime import datetime, timedelta +import nextcord from nextcord.ext import commands @@ -26,12 +27,12 @@ class ElectionCycle: self._election_start: datetime = election_start self._term_start: datetime = term_start self._term_end: datetime = term_end # might not be needed - self._voting_start: datetime = self._election_start + timedelta(days=7) - self._voting_end: datetime = self._voting_start + timedelta(days=7) + self._voting_start: datetime = self._election_start + timedelta(days=1) + self._voting_end: datetime = self._voting_start + timedelta(days=1) self._highcouncil_election: datetime = self._voting_end + timedelta(days=1) self._bot: commands.Bot = bot - def check_date(self) -> None: + async def check_date(self) -> None: """ Function checks current date to see if something needs to be run. """ @@ -40,34 +41,59 @@ class ElectionCycle: # check all dates if action is needed match today.date(): case self._election_start.date(): - self.election_start_action() + await self.election_start_action() case self._voting_start.date(): - self.voting_end_action() + await self.voting_end_action() case self._voting_end.date(): - self.voting_end_action() + await self.voting_end_action() case self._highcouncil_election.date(): - self.highcouncil_election_action() + await self.highcouncil_election_action() + case self._term_start.date(): + await self.term_start_action() + case self._term_end.date(): + await self.term_end_action() - def election_start_action(self) -> None: + async def election_start_action(self) -> None: """ Performs required actions for when the election cycle starts. """ print("election cycle has started") + await self.message_me("election cycle has started") - def voting_start_action(self) -> None: + async def voting_start_action(self) -> None: """ Performs required actions for when voting for candidates starts. """ print("Voting has started") + await self.message_me("Voting has started") - def voting_end_action(self) -> None: + async def voting_end_action(self) -> None: """ Performs required actions for when voting time has ended. """ print("voting has ended") + await self.message_me("voting has ended") - def highcouncil_election_action(self) -> None: + async def highcouncil_election_action(self) -> None: """ Performs required actions for when the highcouncil is elected. """ print("Highcouncil election has started.") + await self.message_me("Highcouncil election has started.") + + async def term_start_action(self) -> None: + msg: str = "the term has started" + print(msg) + self.message_me(msg) + + async def term_end_action(self): + msg: str = "the term has ended" + print(msg) + self.message_me(msg) + + async def message_me(self, msg: str): + """ + message a string to me + """ + imcompiling: nextcord.User = await self._bot.fetch_user(206602713511886849) + await imcompiling.send(msg) diff --git a/cogs/loops/daily_loop.py b/cogs/loops/daily_loop.py index 2bec4ce..4b43d8c 100644 --- a/cogs/loops/daily_loop.py +++ b/cogs/loops/daily_loop.py @@ -2,11 +2,13 @@ _summary_ """ -import nextcord +from datetime import datetime, time + from nextcord.ext import commands, tasks -from datetime import time from pytz import timezone +from classes.election_cycle import ElectionCycle + class DailyLoop(commands.Cog, name="Daily Loop"): """ @@ -15,6 +17,7 @@ class DailyLoop(commands.Cog, name="Daily Loop"): def __init__(self, bot: commands.Bot) -> None: self.bot = bot + self.election = ElectionCycle(datetime(2023, 5, 16), datetime(2023, 5, 20), datetime(2023, 5, 21), self.bot) @commands.Cog.listener() async def on_ready(self): @@ -28,5 +31,4 @@ class DailyLoop(commands.Cog, name="Daily Loop"): @tasks.loop(time=time(hour=0, tzinfo=timezone("GMT"))) async def do_thing(self): """ """ - imcompiling: nextcord.User = await self.bot.fetch_user(206602713511886849) - await imcompiling.send("its reset in runescape") + await self.election.check_date()