# /ticket

# Résumé

La fonctionnalité /ticket permet aux utilisateurs de créer des tickets pour communiquer directement avec les modérateurs ou l'équipe d'administration dans un salon texte privé. Chaque ticket est un salon dédié, créé automatiquement avec des permissions spécifiques, permettant une gestion efficace des demandes, questions ou signalements. Les tickets peuvent être fermés, archivés ou utilisés pour mentionner à nouveau l'utilisateur ayant créé le ticket.

# Fonctionnalités prises en charge

  • Création d'un ticket privé avec un salon texte dédié.
  • Gestion des permissions pour limiter l'accès au créateur du ticket, au bot et aux rôles désignés.
  • Boutons interactifs pour fermer, archiver ou mentionner l'utilisateur dans le ticket.
  • Enregistrement d'une transcription des messages du ticket lors de la fermeture.
  • Envoi de la transcription au créateur du ticket et à un salon de logs configuré (si défini).
  • Support des catégories pour organiser les tickets.
  • Mention automatique des rôles configurés à l'ouverture du ticket.

# Comment ça fonctionne

  1. Ouvrir un ticket :

    • Un utilisateur clique sur un bouton configuré (par exemple, via un message d'intégration avec des boutons de ticket).
    • Un salon texte nommé ticket-<nom_utilisateur> est créé avec des permissions restreintes :
      • Seuls l'utilisateur, le bot et les rôles configurés (si spécifiés) peuvent voir et écrire dans le salon.
      • Le salon peut être placé dans une catégorie spécifique si configurée.
    • Un message initial est envoyé dans le salon avec un embed de bienvenue et trois boutons : Fermer, Archiver, et Mentionner.
    • Les rôles configurés pour être mentionnés (si définis) sont notifiés dans le message initial.
  2. Gérer un ticket :

    • Fermer : Supprime le salon après 5 secondes, envoie une transcription des messages (jusqu'à 100 messages) au créateur et au salon de logs (si configuré), et supprime l'entrée de la base de données.
    • Archiver : Retire les permissions de l'utilisateur pour voir ou écrire dans le salon, tout en conservant le salon pour consultation par les modérateurs.
    • Mentionner : Envoie un message dans le salon pour mentionner à nouveau l'utilisateur qui a créé le ticket, demandant une clarification ou une suite.
  3. Configuration :

    • Les paramètres des tickets sont stockés dans la base de données via ticketSetting.
    • Les administrateurs doivent configurer :
      • L'activation du système de tickets.
      • Les boutons valides (identifiants uniques).
      • Une catégorie optionnelle pour organiser les tickets.
      • Des rôles ayant accès aux tickets.
      • Des rôles à mentionner à l'ouverture d'un ticket.
      • Un salon de logs pour recevoir les transcriptions des tickets fermés.

# Paramètres

  • Activation / désactivation
    Active ou désactive le système de tickets pour le serveur.

  • Boutons de ticket
    Liste des identifiants de boutons valides pour ouvrir des tickets (doit être configurée dans la base de données).

  • Catégorie
    Définit une catégorie Discord où les nouveaux tickets seront créés (optionnel).

  • Rôles d'accès
    Liste des rôles ayant accès aux tickets (peuvent voir et écrire dans les salons de tickets).

  • Rôles à mentionner
    Liste des rôles à mentionner automatiquement dans le message initial du ticket.

  • Salon de logs
    Définit un salon texte où les transcriptions des tickets fermés et les notifications d'archivage sont envoyées.

# Prérequis

  • Le bot doit avoir la permission ManageChannels pour créer et gérer les salons de tickets.
  • Une configuration valide doit exister dans la base de données (ticketSetting) avec enabled: true et au moins un bouton configuré.
  • Les emojis utilisés pour les boutons (red.binTrash, gray.schedule, white.message) doivent être disponibles dans le serveur ou accessibles globalement.

# Limitations

  • Un utilisateur ne peut avoir qu'un seul ticket ouvert à la fois.
  • La transcription des tickets est limitée aux 100 derniers messages.
  • Les erreurs (par exemple, échec de récupération du salon de logs ou de la catégorie) sont gérées silencieusement pour éviter d'interrompre l'exécution.