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 (
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
)
+57 -1
View File
@@ -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
)