Skip to content

Commit 03752c2

Browse files
authored
Merge pull request #3 from ae-utbm/create_club
create command for creating club
2 parents 09ca5b0 + 28dc72a commit 03752c2

4 files changed

Lines changed: 49 additions & 6 deletions

File tree

bot.toml.example

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,22 @@ log_level = "INFO"
55
[guild]
66
id = <the id of the server here>
77

8-
[guild.club.1] # AE
8+
[guild.clubs.1] # AE
99
president_role_id = <role id>
1010
member_role_id = <role id>
11-
[guild.club.29] # Club Welcome
11+
[guild.clubs.29] # Club Welcome
1212
president_role_id = <role id>
1313
member_role_id = <role id>
14-
[guild.club.38] # Troll Penché
14+
[guild.clubs.38] # Troll Penché
1515
president_role_id = <role id>
1616
member_role_id = <role id>
17-
[guild.club.43] # Reflex
17+
[guild.clubs.43] # Reflex
1818
president_role_id = <role id>
1919
member_role_id = <role id>
20-
[guild.club.79] # Cook'UT
20+
[guild.clubs.79] # Cook'UT
2121
president_role_id = <role id>
2222
member_role_id = <role id>
2323

2424
[sith_api]
2525
api_key = "<your sith api token here>"
26+
url = "https://ae.utbm.fr/"

src/commands/admin.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,7 @@ def __init__(self, bot: AeBot):
1919
async def sync_commands(self, ctx: Context):
2020
"""Actualise les commandes du bot."""
2121
synced: list[AppCommand] = await self._bot.tree.sync()
22-
msg = "\n".join([f"- {cmd.name}" for cmd in synced])
22+
await self._bot.tree.sync(guild=ctx.guild)
23+
cmd_list = "\n".join([f"- {cmd.name}" for cmd in synced])
24+
msg = f"Commandes synchronisées :\n{cmd_list}"
2325
await ctx.reply(msg)

src/commands/club.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from typing import TYPE_CHECKING
44

5+
import discord
56
from discord import Interaction, Member, app_commands
67
from discord.app_commands import Choice, Transform, Transformer
78
from discord.ext import commands
@@ -70,3 +71,19 @@ async def add_club_member(
7071
return
7172
await member.add_roles(interaction.guild.get_role(club.member_role_id))
7273
await interaction.followup.send("Rôle attribué :thumbs_up:")
74+
75+
@app_commands.command(name="create")
76+
@app_commands.autocomplete(club=autocomplete_club)
77+
async def create_club(
78+
self, interaction: Interaction, club: Transform[ClubSchema, ClubTransformer]
79+
):
80+
await interaction.response.defer(thinking=True)
81+
serv = interaction.guild
82+
83+
# look if the club is already create
84+
if discord.utils.get(serv.categories, name=club.name) is None:
85+
await self.club_service.create_club(club.name, serv)
86+
await interaction.followup.send(f"Le club : {club.name} à été créé")
87+
88+
else:
89+
await interaction.followup.send(f"Le club : {club.name} existe déjà...")

src/services/club.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from typing import TYPE_CHECKING
44
from urllib.parse import urljoin
55

6+
import discord
67
from discord import Embed
78

89
from src.settings import Settings
@@ -49,3 +50,25 @@ def embed(self, club: ClubSchema) -> Embed:
4950
url=urljoin(str(self._client._base_url), club.logo)
5051
)
5152
return embed
53+
54+
async def create_club(self, club_name: str, serv):
55+
# create the role for member, presidence and treasurer
56+
president = await serv.create_role(name=f"Président {club_name}")
57+
tresorier = await serv.create_role(name=f"Trésorier {club_name}")
58+
membre = await serv.create_role(name=f"Membre {club_name}", mentionable=True)
59+
60+
# create the clubs category
61+
overwrites = {
62+
serv.default_role: discord.PermissionOverwrite(read_messages=False),
63+
president: discord.PermissionOverwrite(
64+
read_messages=True, manage_channels=True
65+
),
66+
membre: discord.PermissionOverwrite(read_messages=True),
67+
tresorier: discord.PermissionOverwrite(read_messages=True),
68+
}
69+
70+
categorie = await serv.create_category(club_name, overwrites=overwrites)
71+
72+
# create default channel
73+
await serv.create_text_channel(f"Général-{club_name}", category=categorie)
74+
await serv.create_voice_channel(f"Général-{club_name}", category=categorie)

0 commit comments

Comments
 (0)