Compare commits

..
6 Commits
Author SHA1 Message Date
imcompiling 7b335efbe6 Merge branch '22-daily-loop-not-starting-election'
build_latest / build (push) Successful in 44s
build_release / build (push) Successful in 43s
build_develop / build (push) Successful in 45s
2023-09-13 10:52:08 -04:00
imcompiling e686cf88e5 Be inclusive when checkign for an election cycle.
build_develop / build (push) Has been cancelled
2023-09-13 10:51:16 -04:00
imcompiling 117dea48c4 Standardize variable name of dates. 2023-09-13 10:42:01 -04:00
imcompiling 62e4417ce8 Use correct action on voting start. 2023-09-13 10:32:59 -04:00
imcompiling 672df41f19 Make the configs and timeline more clear. 2023-09-13 10:16:50 -04:00
imcompiling 328f3fea78 Merge branch 'main' into 22-daily-loop-not-starting-election 2023-09-13 09:31:53 -04:00
5 changed files with 29 additions and 25 deletions
+8 -8
View File
@@ -34,16 +34,16 @@ The Clan Council will be denoted by the Discord ranks of <@&{clan_council_id}> a
<:Rank_Owner:479008325137072155> Clan Leader <:Rank_Owner:479008325137072155> Clan Leader
---message_break--- ---message_break---
__Here's the timeline:__ __Here's the timeline:__
Election begins: {election_start_date} Election begins: {election_start}
Term: {term_start_date} - {term_end_date} Term: {term_start} - {term_end}
**{election_start_date}**: Post here to announce candidacy **{election_start}**: Post here to announce candidacy
**{voting_start_date}**: Voting begins **{voting_start}**: Voting begins
**{voting_end_date}**: Votes are tallied and winners are announced **{voting_end}**: Votes are tallied and winners are announced
**{highcouncil_election_date}**: The new Clan Council votes who among them shall receive the two High Council positions of: Clan Leader and Discord Server Manager. **{highcouncil_election}**: The new Clan Council votes who among them shall receive the two High Council positions of: Clan Leader and Discord Server Manager.
**{term_start_date}**: The new Clan Council is officially inaugurated and a drop party (or a giveaway event) begins to commemorate the new leadership. **{term_start}**: The new Clan Council is officially inaugurated and a drop party (or a giveaway event) begins to commemorate the new leadership.
This process will begin again next quarter on {next_election_start_date} with the inauguration scheduled for {term_end_date}. This process will begin again next quarter on {next_election_start} with the inauguration scheduled for {term_end}.
---message_break--- ---message_break---
**You may now announce your candidacy for a seat on the Dakiny Clan Council! **You may now announce your candidacy for a seat on the Dakiny Clan Council!
** **
+1 -1
View File
@@ -2,7 +2,7 @@
<@&{clan_member_id}>, it's time to vote for clan council. <@&{clan_member_id}>, it's time to vote for clan council.
React with <{voting_emote_id}> to vote. React with <{voting_emote_id}> to vote.
Voting ends next {voting_end_day}, {voting_end_date}. Voting ends next {voting_end_day}, {voting_end}.
Results will then be announced. Results will then be announced.
After a candidate receives 3 votes, their spot is secured in the new council, but you can still vote for them to show your support. After a candidate receives 3 votes, their spot is secured in the new council, but you can still vote for them to show your support.
+16 -15
View File
@@ -2,7 +2,7 @@
Contains the election cycle class Contains the election cycle class
""" """
from datetime import datetime, timedelta from datetime import datetime
import nextcord import nextcord
from sqlalchemy import select from sqlalchemy import select
@@ -20,6 +20,7 @@ class ElectionCycle:
""" """
def __init__(self, cycle: int, config: DakinyConfig, guild: nextcord.Guild) -> None: def __init__(self, cycle: int, config: DakinyConfig, guild: nextcord.Guild) -> None:
# TODO update
""" """
Generates all dates relevant to the election cycle from input election start, term start and end dates. Generates all dates relevant to the election cycle from input election start, term start and end dates.
@@ -37,9 +38,9 @@ class ElectionCycle:
self.term_end: datetime = get_datetime(self.elecion_cycle.term_end) self.term_end: datetime = get_datetime(self.elecion_cycle.term_end)
self.voting_start: datetime = get_datetime(self.elecion_cycle.voting_start) self.voting_start: datetime = get_datetime(self.elecion_cycle.voting_start)
self.voting_end: datetime = get_datetime(self.elecion_cycle.voting_end) self.voting_end: datetime = get_datetime(self.elecion_cycle.voting_end)
self.highcouncil_election_announce: datetime = self.voting_end + timedelta(days=1) self.highcouncil_election_announce: datetime = get_datetime(self.elecion_cycle.highcouncil_election_announce)
self.highcouncil_election_start: datetime = self.highcouncil_election_announce + timedelta(days=3) self.highcouncil_election_start: datetime = get_datetime(self.elecion_cycle.highcouncil_election_start)
self.highcouncil_election_end: datetime = self.term_start - timedelta(days=1) self.highcouncil_election_end: datetime = get_datetime(self.elecion_cycle.highcouncil_election_end)
self.guild: nextcord.Guild = guild self.guild: nextcord.Guild = guild
self.election_over: bool = False self.election_over: bool = False
@@ -60,13 +61,13 @@ class ElectionCycle:
message = message.format( message = message.format(
clan_council_id=self.config.params.clan_council_role_id, clan_council_id=self.config.params.clan_council_role_id,
high_council_id=self.config.params.high_council_role_id, high_council_id=self.config.params.high_council_role_id,
election_start_date=self.election_start.strftime("%B %d"), election_start=self.election_start.strftime("%B %d"),
term_start_date=self.term_start.strftime("%B %d"), term_start=self.term_start.strftime("%B %d"),
term_end_date=self.term_end.strftime("%B %d"), term_end=self.term_end.strftime("%B %d"),
voting_start_date=self.voting_start.strftime("%B %d"), voting_start=self.voting_start.strftime("%B %d"),
voting_end_date=self.voting_end.strftime("%B %d"), voting_end=self.voting_end.strftime("%B %d"),
highcouncil_election_date=self.highcouncil_election_start.strftime("%B %d"), highcouncil_election=self.highcouncil_election_start.strftime("%B %d"),
next_election_start_date=next_election.strftime("%B %d"), next_election_start=next_election.strftime("%B %d"),
) )
return message.split("---message_break---") return message.split("---message_break---")
@@ -87,7 +88,7 @@ class ElectionCycle:
highcouncil_election_announce=self.highcouncil_election_announce.strftime("%B %d"), highcouncil_election_announce=self.highcouncil_election_announce.strftime("%B %d"),
highcouncil_election_start=self.highcouncil_election_start.strftime("%B %d"), highcouncil_election_start=self.highcouncil_election_start.strftime("%B %d"),
highcouncil_election_end=self.highcouncil_election_end.strftime("%B %d"), highcouncil_election_end=self.highcouncil_election_end.strftime("%B %d"),
term_start_date=self.term_start.strftime("%B %d"), term_start=self.term_start.strftime("%B %d"),
) )
def build_highcouncil_vote_start(self) -> str: def build_highcouncil_vote_start(self) -> str:
@@ -103,7 +104,7 @@ class ElectionCycle:
return message.format( return message.format(
clan_council_elect_role_id=self.config.params.clan_council_elect_role_id, clan_council_elect_role_id=self.config.params.clan_council_elect_role_id,
term_start_date=self.term_start.strftime("%B %d"), term_start=self.term_start.strftime("%B %d"),
) )
def build_vote_start(self) -> str: def build_vote_start(self) -> str:
@@ -121,7 +122,7 @@ class ElectionCycle:
return message.format( return message.format(
clan_member_id=self.config.params.clan_member_role_id, clan_member_id=self.config.params.clan_member_role_id,
voting_emote_id=self.config.params.voting_emote_id, voting_emote_id=self.config.params.voting_emote_id,
voting_end_date=vote_end.strftime("%B %d"), voting_end=vote_end.strftime("%B %d"),
voting_end_day=vote_end.strftime("%A"), voting_end_day=vote_end.strftime("%A"),
) )
@@ -135,7 +136,7 @@ class ElectionCycle:
if today.date() == self.election_start.date(): if today.date() == self.election_start.date():
await self.election_start_action() await self.election_start_action()
elif today.date() == self.voting_start.date(): elif today.date() == self.voting_start.date():
await self.voting_end_action() await self.voting_start_action()
elif today.date() == self.voting_end.date(): elif today.date() == self.voting_end.date():
await self.voting_end_action() await self.voting_end_action()
elif today.date() == self.highcouncil_election_start.date(): elif today.date() == self.highcouncil_election_start.date():
+1 -1
View File
@@ -81,7 +81,7 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
for cycle, election in enumerate(config.election_cycles): for cycle, election in enumerate(config.election_cycles):
if ( if (
today.date() >= get_datetime(election.election_start).date() today.date() >= get_datetime(election.election_start).date()
and today.date() < get_datetime(election.term_start).date() and today.date() <= get_datetime(election.term_start).date()
): ):
current_election = ElectionCycle(cycle, config, self.bot.get_guild(config.params.guild_id)) current_election = ElectionCycle(cycle, config, self.bot.get_guild(config.params.guild_id))
+3
View File
@@ -31,6 +31,9 @@ class ElectionCycle:
""" """
election_start: str election_start: str
highcouncil_election_announce: str
highcouncil_election_end: str
highcouncil_election_start: str
name: str name: str
term_end: str term_end: str
term_start: str term_start: str