Update message builder and add a test command.
build

This commit is contained in:
2023-07-01 22:05:18 -04:00
parent 8a48c193ab
commit d223a6b14e
4 changed files with 98 additions and 12 deletions
+42 -11
View File
@@ -1,8 +1,21 @@
"""
Contains the MessageBuilder class.
"""
from datetime import datetime
from config import DakinyConfig
class MessageBuilder:
"""
Contains all the announcements that the bot will send regarding elections.
"""
def __init__(self, config: DakinyConfig, cycle: int) -> None:
self.config = config
self.cycle = cycle
def get_vote_start(self) -> str:
"""
Builds the voting start message out of template and configurations.
@@ -11,17 +24,35 @@ class MessageBuilder:
str: Message to send
"""
message = "<@&{{clan_member_id}}>, it's time to vote for clan council.\
\
React with <:Rank_Admin:479008185240518656> to vote.\
Voting ends next Wednesday , {{voting_end_date}}.\
Announcement of the results to whole clan will happen April 6th.\
\
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.\
\
**Just a reminder:** only the people listed below are eligible to vote, and each clan member may **only vote for one person**. Votes from guests, diplomats, or allies will be annulled. Votes for multiple candidates from the same person will not be counted. \
\
RS3 Clan Members\
vote_end = self.get_datetime(self.config.election_cycles[self.cycle].voting_end)
message = f"====================\n\
<@&{self.config.params.clan_member_role_id}>, it's time to vote for clan council.\n\n\
React with <:{self.config.params.voting_emote_id}:> to vote. \
Voting ends next Wednesday , {vote_end.date()}. \
Announcement of the results to whole clan will happen {vote_end.date()}.\n\n\
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.\n\n\
**Just a reminder:** only the people listed below are eligible to vote, and each \
clan member may **only vote for one person**. Votes from guests, diplomats, or allies \
will be annulled. Votes for multiple candidates from the same person will not be counted. \n\n\
RS3 Clan Members\n\
OSRS Clan Members"
return message
def get_datetime(self, day: str) -> datetime:
"""
Takes in a string month and day and returns a datetime object of that Month/Day this year.
Args:
day (str): Month/Day in that format.
Returns:
datetime: Datetime representation of Month/Day.
"""
today = datetime.today()
month = int(day.split("/")[0])
day = int(day.split("/")[1])
return datetime(today.year, month, day)