move edit clan council message into utils.

This commit is contained in:
2024-05-16 16:04:08 -04:00
parent a8323c9a88
commit 39fd55146e
2 changed files with 59 additions and 52 deletions
+2 -51
View File
@@ -23,9 +23,8 @@ from database_setup.sql_data_classes import (
from utils import ( from utils import (
build_highcouncil_votes_str, build_highcouncil_votes_str,
build_votes_str, build_votes_str,
edit_clan_message, edit_clan_council_message,
get_cl_election_name, get_cl_election_name,
get_cycle_name,
get_datetime, get_datetime,
get_dm_election_name, get_dm_election_name,
get_election_cycle_name, get_election_cycle_name,
@@ -439,7 +438,7 @@ class ElectionCycle:
) )
await election_thread.edit(archived=True, locked=True) 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: def get_election_info(self) -> ElectionInformation:
""" """
@@ -469,51 +468,3 @@ class ElectionCycle:
message += f"to <#{self.get_election_info().ThreadId}> to cast your vote!" message += f"to <#{self.get_election_info().ThreadId}> to cast your vote!"
await general.send(content=message) 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
)
+57 -1
View File
@@ -6,7 +6,7 @@ import os
from datetime import datetime from datetime import datetime
import nextcord import nextcord
from sqlalchemy import select, update from sqlalchemy import select, true, update
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from config import DakinyConfig from config import DakinyConfig
@@ -527,3 +527,59 @@ async def edit_clan_message(
) )
session.execute(stmt) session.execute(stmt)
session.commit() 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
)