From 6c9de43e735fd44833b1f4554e146f3ac23b8019 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Mon, 15 May 2023 11:34:14 -0400 Subject: [PATCH 01/11] 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() From 90c5fea67cabf2276e7714955c4d14a349650c0d Mon Sep 17 00:00:00 2001 From: imcompiling Date: Mon, 15 May 2023 11:36:11 -0400 Subject: [PATCH 02/11] Correct builds. --- .gitea/workflows/build_develop.yml | 3 +-- .gitea/workflows/build_latest.yml | 4 +++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/build_develop.yml b/.gitea/workflows/build_develop.yml index 68a1e75..24937c2 100644 --- a/.gitea/workflows/build_develop.yml +++ b/.gitea/workflows/build_develop.yml @@ -2,8 +2,7 @@ name: build_develop on: push: - branches: [main] - + jobs: build: runs-on: ubuntu-latest diff --git a/.gitea/workflows/build_latest.yml b/.gitea/workflows/build_latest.yml index d4c0db6..ce1c18e 100644 --- a/.gitea/workflows/build_latest.yml +++ b/.gitea/workflows/build_latest.yml @@ -1,7 +1,9 @@ -name: build_develop +name: build_latest on: push: + branches: [main] + jobs: build: From dfece4adf6e7a66f44bb471c763ff9e93cad556c Mon Sep 17 00:00:00 2001 From: imcompiling Date: Mon, 15 May 2023 11:50:49 -0400 Subject: [PATCH 03/11] add empty list of branches for action --- .gitea/workflows/build_develop.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitea/workflows/build_develop.yml b/.gitea/workflows/build_develop.yml index 24937c2..b52596e 100644 --- a/.gitea/workflows/build_develop.yml +++ b/.gitea/workflows/build_develop.yml @@ -2,6 +2,7 @@ name: build_develop on: push: + branches: [] jobs: build: From 43414abb711239d2d1a6bf7982da7c9b7612dd4d Mon Sep 17 00:00:00 2001 From: imcompiling Date: Mon, 15 May 2023 11:51:37 -0400 Subject: [PATCH 04/11] try different wording --- .gitea/workflows/build_develop.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitea/workflows/build_develop.yml b/.gitea/workflows/build_develop.yml index b52596e..e20688f 100644 --- a/.gitea/workflows/build_develop.yml +++ b/.gitea/workflows/build_develop.yml @@ -1,8 +1,6 @@ name: build_develop -on: - push: - branches: [] +on: [push] jobs: build: From f85d1aafd0dd268606f2e18fb816666ed7b22af8 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Thu, 18 May 2023 12:35:48 -0400 Subject: [PATCH 05/11] adjust test timing --- cogs/loops/daily_loop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cogs/loops/daily_loop.py b/cogs/loops/daily_loop.py index 4b43d8c..a5effb5 100644 --- a/cogs/loops/daily_loop.py +++ b/cogs/loops/daily_loop.py @@ -17,7 +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) + self.election = ElectionCycle(datetime(2023, 5, 18), datetime(2023, 5, 22), datetime(2023, 5, 23), self.bot) @commands.Cog.listener() async def on_ready(self): From f357df807b2c6e9b451e7b4bbee7bd9b81851312 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Thu, 18 May 2023 12:55:55 -0400 Subject: [PATCH 06/11] Move away from match case, don't think it worked. --- classes/election_cycle.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/classes/election_cycle.py b/classes/election_cycle.py index 9e80e4a..d54cc91 100644 --- a/classes/election_cycle.py +++ b/classes/election_cycle.py @@ -39,19 +39,18 @@ class ElectionCycle: today = datetime.today() # check all dates if action is needed - match today.date(): - case self._election_start.date(): - await self.election_start_action() - case self._voting_start.date(): - await self.voting_end_action() - case self._voting_end.date(): - await self.voting_end_action() - case self._highcouncil_election.date(): - 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() + if today.date() == self._election_start.dat(): + await self.election_start_action() + elif today.date() == self._voting_start.date(): + await self.voting_end_action() + elif today.date() == self._voting_end.date(): + await self.voting_end_action() + elif today.date() == self._highcouncil_election.date(): + await self.highcouncil_election_action() + elif today.date() == self._term_start.date(): + await self.term_start_action() + elif today.date() == self._term_end.date(): + await self.term_end_action() async def election_start_action(self) -> None: """ From 811317fc0a1a26fe6aecee4d31bee1cae32788f4 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Thu, 18 May 2023 20:16:58 -0400 Subject: [PATCH 07/11] Add more debug information --- classes/election_cycle.py | 4 ++++ cogs/loops/daily_loop.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/classes/election_cycle.py b/classes/election_cycle.py index d54cc91..acbc92b 100644 --- a/classes/election_cycle.py +++ b/classes/election_cycle.py @@ -37,6 +37,7 @@ class ElectionCycle: Function checks current date to see if something needs to be run. """ today = datetime.today() + print("checking the date") # check all dates if action is needed if today.date() == self._election_start.dat(): @@ -51,6 +52,9 @@ class ElectionCycle: await self.term_start_action() elif today.date() == self._term_end.date(): await self.term_end_action() + else: + print("today was not a special date") + print(today) async def election_start_action(self) -> None: """ diff --git a/cogs/loops/daily_loop.py b/cogs/loops/daily_loop.py index a5effb5..f0d050e 100644 --- a/cogs/loops/daily_loop.py +++ b/cogs/loops/daily_loop.py @@ -17,7 +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, 18), datetime(2023, 5, 22), datetime(2023, 5, 23), self.bot) + self.election = ElectionCycle(datetime(2023, 5, 19), datetime(2023, 5, 23), datetime(2023, 5, 24), self.bot) @commands.Cog.listener() async def on_ready(self): From 8bbe7388c62ca6c88230759800ea6565fd69d40d Mon Sep 17 00:00:00 2001 From: imcompiling Date: Wed, 24 May 2023 23:00:36 -0400 Subject: [PATCH 08/11] more print statements. --- cogs/loops/daily_loop.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cogs/loops/daily_loop.py b/cogs/loops/daily_loop.py index f0d050e..42ec27c 100644 --- a/cogs/loops/daily_loop.py +++ b/cogs/loops/daily_loop.py @@ -24,6 +24,7 @@ class DailyLoop(commands.Cog, name="Daily Loop"): """ Starts the loop when bot is ready. """ + print("on ready") await self.bot.wait_until_ready() # pylint doesn't recognize that periodic_update_guild_data is subclassed from tasks.loop. await self.do_thing.start() # pylint: disable=no-member @@ -31,4 +32,5 @@ class DailyLoop(commands.Cog, name="Daily Loop"): @tasks.loop(time=time(hour=0, tzinfo=timezone("GMT"))) async def do_thing(self): """ """ + print("loop") await self.election.check_date() From 512fa233871a3ac748c7697ebbe93d43f8e8b004 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Wed, 24 May 2023 23:06:51 -0400 Subject: [PATCH 09/11] unbuffer output stream to view print statements in docker logs. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7055d98..b545f5a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -r requirements.txt # remove build deps that aren't needed to run # RUN apt-get -y remove python3-dev build-essential && apt-get -y autoremove -CMD ["python3", "./dakiny_bot.py"] \ No newline at end of file +CMD ["python3", "-u", "./dakiny_bot.py"] \ No newline at end of file From 00580460c67f920c7978cf4901517a6686480d59 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Wed, 24 May 2023 23:16:45 -0400 Subject: [PATCH 10/11] update to new dates. --- cogs/loops/daily_loop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cogs/loops/daily_loop.py b/cogs/loops/daily_loop.py index 42ec27c..486c355 100644 --- a/cogs/loops/daily_loop.py +++ b/cogs/loops/daily_loop.py @@ -17,7 +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, 19), datetime(2023, 5, 23), datetime(2023, 5, 24), self.bot) + self.election = ElectionCycle(datetime(2023, 5, 25), datetime(2023, 5, 29), datetime(2023, 5, 30), self.bot) @commands.Cog.listener() async def on_ready(self): From afc4430b31ac326770afae11451f94ccfb38a42b Mon Sep 17 00:00:00 2001 From: imcompiling Date: Fri, 26 May 2023 17:15:44 -0400 Subject: [PATCH 11/11] Typo fix --- classes/election_cycle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/election_cycle.py b/classes/election_cycle.py index acbc92b..48d412f 100644 --- a/classes/election_cycle.py +++ b/classes/election_cycle.py @@ -40,7 +40,7 @@ class ElectionCycle: print("checking the date") # check all dates if action is needed - if today.date() == self._election_start.dat(): + if today.date() == self._election_start.date(): await self.election_start_action() elif today.date() == self._voting_start.date(): await self.voting_end_action()