from typing import Optional, List from io import BytesIO from os import getenv import discord from discord import app_commands from discord.app_commands import Choice from dotenv import load_dotenv from create_calendar import get_calendar, get_eleves, display load_dotenv() MY_GUILD = discord.Object(id=getenv("GUILD_ID")) # replace with your guild id class MyClient(discord.Client): def __init__(self): super().__init__(intents=discord.Intents.none()) self.tree = app_commands.CommandTree(self) self.initial_extensions = ["cogs." + f[:-3] for f in os.listdir("./cogs") if f.endswith(".py") and f.name != "__init__.py"] async def setup_hook(self): # cogs for extension in self.initial_extensions: await self.load_extension(extension) self.tree.copy_global_to(guild=MY_GUILD) await self.tree.sync(guild=MY_GUILD) client = MyClient() eleves = get_eleves() @client.event async def on_ready(): print(f'Logged in as {client.user} (ID: {client.user.id})') print('------') @client.tree.command() @app_commands.choices(langues=[ Choice(name='Anglais LV1, Autre ou Pas de LV2', value="EN"), Choice(name='Anglais LV1, Allemand LV2', value="EN-DE"), Choice(name='Anglais LV1, Espagnol LV2', value="EN-ES"), Choice(name='Allemand LV1, Anglais LV2', value="DE-EN"), Choice(name='Espagnol LV1, Anglais LV2', value="ES-EN") ] ) @app_commands.describe(groupe="Votre groupe de colle, groupe ∈ ⟦1, 15⟧") @app_commands.describe( langues="Les options de langue que vous suivez. (Les langues suivies à H4 ne sont pas gérées, mettez 'Autres')") @app_commands.describe(split="Créer deux fichiers différentes, un pour les colles et un pour le rest de l'EDT.") async def edt( interaction: discord.Interaction, groupe: app_commands.Range[int, 1, 15], langues: Choice[str], split: bool = False): """ Génère un emploi du temps prenant compte des colles, des langues et de la semaine. """ cal_list = get_calendar(str(groupe), langues.value, split) fichiers = [] if split: fichiers.append(discord.File(fp=BytesIO(cal_list[0]), filename=f"EDT-{groupe}-{langues.value}-WO.ics")) fichiers.append(discord.File(fp=BytesIO(cal_list[1]), filename=f"Colles-{groupe}.ics")) message = f""" \nVotre emploi du temps (`EDT-{groupe}-{langues.value}-WO.ics`) pour le groupe `{groupe}`, `{langues.name}` au format `.ics` a bien été généré, **sans les colles** \n\nLes colles ont été généré séparemment pour le groupe `{groupe}` : `Colles-{groupe}.ics` \n\nVous pouvez importer ces fichiers dans la plupart des calendriers, mais il est recommandé de créer un nouveau sous-calendrier pour facilement pouvoir le changer. """ else: fichiers.append(discord.File(fp=BytesIO(cal_list[0]), filename=f"EDT-{groupe}-{langues.value}.ics")) message = f""" \nVotre emploi du temps (`EDT-{groupe}-{langues.value}.ics`) pour le groupe `{groupe}`, `{langues.name}` au format `.ics` a bien été généré, **avec les colles** \n\nVous pouvez importer ces fichiers dans la plupart des calendriers, mais il est recommandé de créer un nouveau sous-calendrier pour facilement pouvoir le changer. """ await interaction.response.send_message(message, files=fichiers) client.run(getenv("TOKEN"))