Rework message builder to format from text file.
This commit is contained in:
@@ -1,58 +0,0 @@
|
|||||||
"""
|
|
||||||
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.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
str: Message to send
|
|
||||||
"""
|
|
||||||
|
|
||||||
vote_end = self.get_datetime(self.config.election_cycles[self.cycle].voting_end)
|
|
||||||
|
|
||||||
message = "====================\n"
|
|
||||||
message += f"<@&{self.config.params.clan_member_role_id}>, it's time to vote for clan council.\n\n"
|
|
||||||
message += f"React with <:{self.config.params.voting_emote_id}> to vote. "
|
|
||||||
message += f"Voting ends next Wednesday , {vote_end.date()}."
|
|
||||||
message += f"Announcement of the results to whole clan will happen {vote_end.date()}.\n\n"
|
|
||||||
message += "After a candidate receives 3 votes, their spot is secured in the new council, "
|
|
||||||
message += "but you can still vote for them to show your support.\n\n"
|
|
||||||
message += "**Just a reminder:** only the people listed below are eligible to vote, and each "
|
|
||||||
message += "clan member may **only vote for one person**. Votes from guests, diplomats, or allies "
|
|
||||||
message += "will be annulled.\nVotes for multiple candidates from the same person will not be counted. \n\n"
|
|
||||||
message += "RS3 Clan Members\n"
|
|
||||||
message += "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)
|
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
<@&{{clan_member_id}}>, it's time to vote for clan council.
|
====================
|
||||||
|
<@&{clan_member_id}>, it's time to vote for clan council.
|
||||||
|
|
||||||
React with <:Rank_Admin:479008185240518656> to vote.
|
React with <{voting_emote_id}> to vote.
|
||||||
Voting ends next Wednesday , {{voting_end_date}}.
|
Voting ends next {voting_end_day}, {voting_end_date}.
|
||||||
Announcement of the results to whole clan will happen April 6th.
|
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.
|
||||||
|
|
||||||
**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.
|
**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
|
RS3 Clan Members
|
||||||
OSRS Clan Members
|
OSRS Clan Members
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
"""
|
||||||
|
Contains the MessageBuilder class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from config import DakinyConfig
|
||||||
|
from utils import get_datetime
|
||||||
|
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: Message to send
|
||||||
|
"""
|
||||||
|
|
||||||
|
with open("bot_messages/vote_start.txt", mode="r", encoding="utf8") as file:
|
||||||
|
message = file.read()
|
||||||
|
vote_end: datetime = get_datetime(self.config.election_cycles[self.cycle].voting_end)
|
||||||
|
|
||||||
|
return message.format(
|
||||||
|
clan_member_id=self.config.params.clan_member_role_id,
|
||||||
|
voting_emote_id=self.config.params.voting_emote_id,
|
||||||
|
voting_end_date=vote_end.strftime("%B %d"),
|
||||||
|
voting_end_day=vote_end.strftime("%A"),
|
||||||
|
)
|
||||||
@@ -5,7 +5,7 @@ Commands for testing.
|
|||||||
import nextcord
|
import nextcord
|
||||||
from nextcord.ext import commands
|
from nextcord.ext import commands
|
||||||
|
|
||||||
from bot_messages.message_builder import MessageBuilder
|
from classes.message_builder import MessageBuilder
|
||||||
|
|
||||||
|
|
||||||
class TestCog(commands.Cog, name="Test commands."):
|
class TestCog(commands.Cog, name="Test commands."):
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
|
def get_datetime(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)
|
||||||
Reference in New Issue
Block a user