Skip to content

Commit 5e85439

Browse files
authored
Merge pull request #13 from ae-utbm/club_non_repris
create /club arret
2 parents d7a2a1e + 4757a96 commit 5e85439

2 files changed

Lines changed: 55 additions & 5 deletions

File tree

src/commands/club.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,16 +153,37 @@ async def handover(
153153

154154
if annonce:
155155
await annonce.send(
156-
f"La passation est réussie !! {new_president.mention} Vous êtes"
156+
f"La passation est réussie !! {new_president.mention}, vous êtes "
157157
f"le nouveau président du club {club.name}"
158158
f" et {new_treasurer.mention} le nouveau trésorier !!"
159159
)
160160

161161
else:
162162
await interaction.followup.send(
163-
"Attention, ce club n'a ses salons de discussion.\n"
163+
"Attention, ce club n'a pas ses salons de discussion.\n"
164164
"La passation va quand même se faire, mais il faut "
165165
"contacter un des mainteneurs du bots pour remettre "
166166
"les salons en place"
167167
)
168168
await interaction.followup.send("Passation effectuée")
169+
170+
@app_commands.command(name="arret")
171+
@app_commands.autocomplete(club=autocomplete_existing_club)
172+
@app_commands.checks.has_permissions(manage_guild=True)
173+
async def stop_club(
174+
self, interaction: Interaction, club: Transform[ClubSchema, ClubTransformer]
175+
):
176+
await interaction.response.defer(thinking=True)
177+
guild = interaction.guild
178+
discord_club = DiscordClub.load(club.id)
179+
await self.club_service.stop_club(discord_club, interaction.guild)
180+
annonce = await self.club_service.get_channel(
181+
guild, discord_club.category_id, f"annonces {club.name}".lower()
182+
)
183+
184+
if annonce:
185+
await annonce.send(
186+
"Le club, n'ayant pas été repris, est "
187+
"temporairement fermé jusqu'à reprise du club"
188+
)
189+
await interaction.followup.send(f"Le club : {club.name} à été arrété")

src/services/club.py

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ async def create_club(self, club: ClubSchema, guild: Guild):
109109
# create the clubs category
110110
overwrites = {
111111
guild.default_role: PermissionOverwrite(read_messages=False),
112-
president: PermissionOverwrite(read_messages=True, manage_channels=True),
112+
president: PermissionOverwrite(
113+
read_messages=True, manage_channels=True, manage_permissions=True
114+
),
113115
member: PermissionOverwrite(read_messages=True),
114116
treasurer: PermissionOverwrite(read_messages=True),
115117
former_member: PermissionOverwrite(read_messages=True),
@@ -151,8 +153,8 @@ async def add_member(self, club: DiscordClub, member: Member):
151153
async def remove_member(self, club: DiscordClub, member: Member):
152154
role = utils.get(member.guild.roles, id=club.member_role_id)
153155
former = utils.get(member.guild.roles, id=club.former_member_role_id)
154-
await member.remove_roles(role, reason=f"{member.name} leaved club {club.name}")
155-
await member.add_roles(former, reason=f"{member.name} leaved club {club.name}")
156+
await member.remove_roles(role, reason=f"{member.name} left club {club.name}")
157+
await member.add_roles(former, reason=f"{member.name} left club {club.name}")
156158
club.save()
157159

158160
async def handover(
@@ -179,3 +181,30 @@ async def handover(
179181
)
180182
await new_pres.add_roles(role_pres, reason=f"Passation du club : {club.name}")
181183
await new_treso.add_roles(role_treso, reason=f"Passation du club : {club.name}")
184+
category = utils.get(guild.categories, id=club.category_id)
185+
if category.name.endswith("[inactif]"):
186+
await category.edit(name=club.name)
187+
highest_inactive = utils.find(
188+
lambda c: c.name.endswith("[inactif]"),
189+
sorted(guild.categories, key=lambda c: c.position),
190+
)
191+
await category.move(above=highest_inactive)
192+
193+
async def stop_club(self, club: DiscordClub, guild: Guild):
194+
role_pres = utils.get(guild.roles, id=club.president_role_id)
195+
role_treso = utils.get(guild.roles, id=club.treasurer_role_id)
196+
role_member = utils.get(guild.roles, id=club.member_role_id)
197+
role_former = utils.get(guild.roles, id=club.former_member_role_id)
198+
old_member = {*role_pres.members, *role_treso.members, *role_member.members}
199+
total_channels = len(guild.channels)
200+
category = utils.get(guild.categories, id=club.category_id)
201+
await category.edit(position=total_channels - 1, name=club.name + " [inactif]")
202+
203+
for e in old_member:
204+
await e.remove_roles(
205+
role_pres,
206+
role_treso,
207+
role_member,
208+
reason=f"Arrêt du club : {club.name}",
209+
)
210+
await e.add_roles(role_former, reason=f"Arrêt du club : {club.name}")

0 commit comments

Comments
 (0)