diff --git a/classes/election_cycle.py b/classes/election_cycle.py index 2f10901..fa506cf 100644 --- a/classes/election_cycle.py +++ b/classes/election_cycle.py @@ -23,9 +23,8 @@ from database_setup.sql_data_classes import ( from utils import ( build_highcouncil_votes_str, build_votes_str, - edit_clan_message, + edit_clan_council_message, get_cl_election_name, - get_cycle_name, get_datetime, get_dm_election_name, get_election_cycle_name, @@ -439,7 +438,7 @@ class ElectionCycle: ) await election_thread.edit(archived=True, locked=True) - await self.edit_clan_council_message() + await edit_clan_council_message(self.guild, self.config) def get_election_info(self) -> ElectionInformation: """ @@ -469,51 +468,3 @@ class ElectionCycle: message += f"to <#{self.get_election_info().ThreadId}> to cast your vote!" await general.send(content=message) - - async def edit_clan_council_message(self): - clan_info_channel: nextcord.TextChannel = await self.guild.fetch_channel( - self.config.params.clan_info_channel_id - ) - - election = get_election_cycle_name(self.config) - with Session(engine) as session: - stmt = ( - select(CouncilMembers.MemberId) - .where(CouncilMembers.ElectionCycle == election) - .where(CouncilMembers.DiscordManager == true()) - ) - discord_manager = session.scalar(stmt) - stmt = ( - select(CouncilMembers.MemberId) - .where(CouncilMembers.ElectionCycle == election) - .where(CouncilMembers.ClanLeader == true()) - ) - clan_leader = session.scalar(stmt) - stmt = ( - select(CouncilMembers.MemberId) - .where(CouncilMembers.ElectionCycle == election) - .where(CouncilMembers.Elected == true()) - ) - - council_members_strs = [ - f"<@{id}>" - for id in session.scalars(stmt) - if id not in (discord_manager, clan_leader) - ] - - quarter = get_cycle_name(self.config) - - with open( - "bot_messages/council_members.txt", mode="r", encoding="utf8" - ) as file: - message = file.read() - message = message.format( - quarter=quarter, - council="\n".join(council_members_strs), - clan_leader=clan_leader, - discord_manager=discord_manager, - ) - - await edit_clan_message( - session, clan_info_channel, "council_members.txt", message - ) diff --git a/utils.py b/utils.py index 3efc71b..e09a6c5 100644 --- a/utils.py +++ b/utils.py @@ -6,7 +6,7 @@ import os from datetime import datetime import nextcord -from sqlalchemy import select, update +from sqlalchemy import select, true, update from sqlalchemy.orm import Session from config import DakinyConfig @@ -527,3 +527,59 @@ async def edit_clan_message( ) session.execute(stmt) session.commit() + + +async def edit_clan_council_message(guild: nextcord.Guild, config: DakinyConfig): + """ + Gets the winners of the elections and updates the perminant message that states the current council. + + Args: + guild (nextcord.Guild): Guild object that to use to get channel. + config (DakinyConfig): Configs + """ + clan_info_channel: nextcord.TextChannel = await guild.fetch_channel( + config.params.clan_info_channel_id + ) + + election = get_election_cycle_name(config) + with Session(engine) as session: + stmt = ( + select(CouncilMembers.MemberId) + .where(CouncilMembers.ElectionCycle == election) + .where(CouncilMembers.DiscordManager == true()) + ) + discord_manager = session.scalar(stmt) + stmt = ( + select(CouncilMembers.MemberId) + .where(CouncilMembers.ElectionCycle == election) + .where(CouncilMembers.ClanLeader == true()) + ) + clan_leader = session.scalar(stmt) + stmt = ( + select(CouncilMembers.MemberId) + .where(CouncilMembers.ElectionCycle == election) + .where(CouncilMembers.Elected == true()) + ) + + council_members_strs = [ + f"<@{id}>" + for id in session.scalars(stmt) + if id not in (discord_manager, clan_leader) + ] + + quarter = get_cycle_name(config) + + with open( + "bot_messages/council_members.txt", mode="r", encoding="utf8" + ) as file: + message = file.read() + message = message.format( + quarter=quarter, + council="\n".join(council_members_strs), + clan_leader=clan_leader, + discord_manager=discord_manager, + ) + + await edit_clan_message( + session, clan_info_channel, "council_members.txt", message + )