diff --git a/classes/election_cycle.py b/classes/election_cycle.py index 373db04..345deb3 100644 --- a/classes/election_cycle.py +++ b/classes/election_cycle.py @@ -6,7 +6,7 @@ import collections from datetime import datetime, timedelta import nextcord -from sqlalchemy import select +from sqlalchemy import select, true from sqlalchemy.orm import Session from classes.nominate_views import NominateView @@ -276,9 +276,12 @@ class ElectionCycle: council_member.Elected = True session.commit() - user: nextcord.Member = self.guild.get_member(user_id) + member: nextcord.Member = self.guild.get_member(user_id) - await user.add_roles(council_elect_role) + await member.add_roles( + council_elect_role, + reason=f"{member.display_name} has won a nomination and become a Council Elect.", + ) await election_thread.send(message) @@ -300,6 +303,34 @@ class ElectionCycle: self.election_over = True + elect_role: nextcord.Role = self.guild.get_role( + self.config.params.clan_council_elect_role_id + ) + council_role: nextcord.Role = self.guild.get_role( + self.config.params.clan_council_role_id + ) + + # role management + with Session(engine) as session: + stmt = ( + select(CouncilMembers.MemberId) + .where( + CouncilMembers.ElectionCycle == get_election_cycle_name(self.config) + ) + .where(CouncilMembers.Elected == true()) + ) + + for member_id in session.scalars(stmt): + member = self.guild.get_member(member_id) + await member.remove_roles( + elect_role, + reason=f"{member.display_name} no longer needs the elect role.", + ) + await member.add_roles( + council_role, + reason=f"{member.display_name} has been elected to council.", + ) + election_thread: nextcord.Thread = self.guild.get_thread( self.get_election_info().ThreadId )