Initial commit: bot Discord Vicy V1.8
This commit is contained in:
commit
56958c5832
70 changed files with 8469 additions and 0 deletions
66
commandes/Backup/absence_staff.py
Normal file
66
commandes/Backup/absence_staff.py
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
import discord
|
||||
from discord.ext import commands
|
||||
from discord import app_commands
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
class AbsenceStaff(commands.Cog):
|
||||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
self.absences = {}
|
||||
|
||||
@app_commands.command(name="absence_staff", description="Indiquez votre absence en tant que staff.")
|
||||
async def absence_staff(self, interaction: discord.Interaction, duree: str, debut: str, fin: str, raison: str, superieur: discord.Member):
|
||||
"""Indiquez votre absence en tant que staff."""
|
||||
try:
|
||||
# Convertir les dates
|
||||
debut_date = datetime.strptime(debut, "%d/%m/%Y")
|
||||
fin_date = datetime.strptime(fin, "%d/%m/%Y")
|
||||
|
||||
# Calculer la durée en jours
|
||||
if duree.endswith('s'): # Si la durée est en semaines
|
||||
duree_jours = int(duree[:-1]) * 7
|
||||
else:
|
||||
duree_jours = int(duree)
|
||||
|
||||
# Vérifier la cohérence des dates
|
||||
if (fin_date - debut_date).days != duree_jours:
|
||||
await interaction.response.send_message("❌ Erreur : La durée spécifiée ne correspond pas aux dates fournies.")
|
||||
return
|
||||
|
||||
# Enregistrer l'absence
|
||||
self.absences[interaction.user.id] = {
|
||||
"debut": debut_date,
|
||||
"fin": fin_date,
|
||||
"raison": raison,
|
||||
"superieur": superieur.id
|
||||
}
|
||||
|
||||
await interaction.response.send_message(f"✅ Votre absence a été enregistrée, {interaction.user.mention}.")
|
||||
|
||||
except Exception as e:
|
||||
await interaction.response.send_message(f"❌ Erreur : {str(e)}")
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_message(self, message):
|
||||
# Ignorer les messages envoyés par le bot
|
||||
if message.author.bot:
|
||||
return
|
||||
|
||||
# Vérifier si un utilisateur absent est mentionné
|
||||
for user_id, absence in self.absences.items():
|
||||
user = self.bot.get_user(user_id)
|
||||
if user and user in message.mentions:
|
||||
# Répondre avec un message indiquant l'absence
|
||||
await message.channel.send(
|
||||
f"{user.display_name} est actuellement absent(e).\n"
|
||||
f"Raison : {absence['raison']}\n"
|
||||
f"Retour prévu le : {absence['fin'].strftime('%d/%m/%Y')}"
|
||||
)
|
||||
|
||||
# Supprimer le message avec la mention
|
||||
await message.delete()
|
||||
break
|
||||
|
||||
async def setup(bot):
|
||||
await bot.add_cog(AbsenceStaff(bot))
|
||||
print("Commande /absence_staff chargée !")
|
||||
Loading…
Add table
Add a link
Reference in a new issue