|
9 | 9 | import json |
10 | 10 | import f1api |
11 | 11 | from datetime import timedelta |
| 12 | +from typing import Literal |
| 13 | + |
12 | 14 |
|
13 | 15 |
|
14 | 16 | @bot.event |
@@ -37,29 +39,57 @@ async def helping_tools(interaction: discord.Interaction): |
37 | 39 | # _______________________________________________________________________________________________________________________________ |
38 | 40 |
|
39 | 41 |
|
40 | | -@tree.command(name="pronos_course", description="Enregistre tes pronos ou modifie les si tu l'a déja fait par le passé(max 1 fois)") |
41 | | -@app_commands.describe(premier="Le premier", deuxieme="Le deuxième", troisieme="Le troisième", best_lap="Meilleur Tour") |
42 | | -async def submit(interaction: discord.Interaction, premier: str, deuxieme: str, troisieme: str, best_lap: str): |
| 42 | +@tree.command(name="pronos", description="Enregistre tes pronos ou modifie les si tu l'as déjà fait") |
| 43 | +@app_commands.describe( |
| 44 | + statue="Type de session (Qualif, Course, Sprint, Sprint_Qualif)", |
| 45 | + premier="Le premier", |
| 46 | + deuxieme="Le deuxième", |
| 47 | + troisieme="Le troisième", |
| 48 | + best_lap="Meilleur tour (uniquement pour Course et Sprint, optionnel pour Qualif)" |
| 49 | +) |
| 50 | +async def submit(interaction: discord.Interaction, |
| 51 | + statue: str, |
| 52 | + premier: str, |
| 53 | + deuxieme: str, |
| 54 | + troisieme: str, |
| 55 | + best_lap: str = None): |
43 | 56 | await interaction.response.defer(ephemeral=True) |
| 57 | + statue_lower = statue.lower() |
| 58 | + if statue_lower not in ["Qualif", "Course", "Sprint", "Sprint_Qualif"]: |
| 59 | + await embed.Error(interaction, "❌ Statue invalide. Choisis parmi : Qualif, Course, Sprint.") |
| 60 | + return |
| 61 | + |
| 62 | + if statue_lower in ["Course", "Sprint"] and not best_lap: |
| 63 | + await embed.Error(interaction, "❌ Pour Course et Sprint, le Meilleur tour est obligatoire.") |
| 64 | + return |
| 65 | + |
| 66 | + # Pour Qualif, on ignore best_lap |
| 67 | + if statue_lower in ["Qualif", "Sprint_Qualif"]: |
| 68 | + best_lap = None |
| 69 | + |
44 | 70 | if command_enabled: |
45 | 71 | try: |
46 | | - success = pr.pronos( |
| 72 | + success = pr.pronos_race( |
47 | 73 | interaction.user.id, |
48 | 74 | str(interaction.user), |
49 | | - premier, deuxieme, troisieme, best_lap |
| 75 | + premier, |
| 76 | + deuxieme, |
| 77 | + troisieme, |
| 78 | + best_lap, |
| 79 | + statue_lower |
50 | 80 | ) |
51 | 81 | except Exception as e: |
52 | | - logger.exception("Erreur pendant l'enregistrement du prono course") |
| 82 | + logger.exception("Erreur pendant l'enregistrement du prono") |
53 | 83 | await embed.Error(interaction, f"❌ Erreur pendant l'enregistrement du prono : `{e}`") |
54 | 84 | return |
55 | 85 |
|
56 | 86 | if success: |
57 | | - await interaction.followup.send("✅ Ton prono course a bien été pris en compte !", ephemeral=True) |
58 | | - logger.info(f'{interaction.user} à fais son pronos course') |
| 87 | + await interaction.followup.send("✅ Ton prono a bien été pris en compte !", ephemeral=True) |
| 88 | + logger.info(f'{interaction.user} a fait son pronostic {statue_lower}') |
59 | 89 | else: |
60 | 90 | await embed.Error(interaction, "❌ Tu ne peux modifier ton pronostic qu'une seule fois.") |
61 | 91 | else: |
62 | | - await embed.Error(interaction, "Il y a une heure pour tout faire, et celle ci n'est pas pour les pronos. Par conséquent ton prono n'a pas pu être enregistré. Si tu veux être notifié des prochaines sessions, utilise /role") |
| 92 | + await embed.Error(interaction, "Il y a une heure pour tout faire, et celle-ci n'est pas pour les pronos. Par conséquent ton prono n'a pas pu être enregistré. Si tu veux être notifié des prochaines sessions, utilise /role") |
63 | 93 |
|
64 | 94 | # _______________________________________________________________________________________________________________________________ |
65 | 95 |
|
@@ -150,20 +180,20 @@ async def bannissement(interaction: discord.Interaction, member: discord.Member, |
150 | 180 | # _______________________________________________________________________________________________________________________________ |
151 | 181 |
|
152 | 182 |
|
153 | | -@tree.command(name="admin_open", description="Ouvre une session de pronostics pour un temp donné") |
154 | | -@app_commands.describe(duration="temps en heures") |
155 | | -async def create(interaction: discord.Interaction, duration: float): |
| 183 | +@tree.command(name="admin_open", description="Ouvre une session de pronostics pour un temps donné") |
| 184 | +@app_commands.describe(duration="temps en heures", statue="Choix de la session") |
| 185 | +async def create(interaction: discord.Interaction, duration: float, statue: Literal["Course", "Qualif", "Sprint", "Sprint_Qualif"]): |
| 186 | + global current_session, command_enabled, auto, task |
| 187 | + |
156 | 188 | if interaction.user.guild_permissions.administrator: |
157 | | - global auto |
158 | | - if (not auto): |
| 189 | + if not auto: |
159 | 190 | await interaction.response.defer() |
160 | | - global task |
161 | | - global command_enabled |
| 191 | + current_session = statue |
162 | 192 | command_enabled = True |
163 | | - task = asyncio.create_task( |
164 | | - tool.start_Session(interaction, duration)) |
| 193 | + task = asyncio.create_task(tool.start_Session(interaction, duration)) |
165 | 194 | await task |
166 | 195 | command_enabled = False |
| 196 | + current_session = None # reset à la fin de la session |
167 | 197 | else: |
168 | 198 | await interaction.response.defer(ephemeral=True) |
169 | 199 | await embed.Error(interaction, "Cette commande n'est pas disponible en mode auto") |
|
0 commit comments