Kuby/commandes/ticket/TODO.md

4.3 KiB

🎫 Ticket System - TODO & Documentation

Vue d'ensemble

Système de tickets modulaire et complet pour Discord bot.

Structure du projet

commandes/ticket/
├── __init__.py           # Commande principale (le cog)
├── ticket.py             # Wrapper de compatibilité (ancien fichier)
├── views/                # Interfaces utilisateurs
│   ├── creation.py       # Création de tickets
│   └── admin.py          # Panneau d'admin
├── data/                 # Données et stockage
│   ├── models.py         # Modèles de données
│   └── storage.py        # Gestion du stockage JSON
├── utils/                # Utilitaires
│   ├── transcript.py     # Génération de transcriptions
│   └── formatters.py     # Formatage des embeds
└── TODO.md               # Documentation

⚠️ Vues Persistantes - Important

Pour que les boutons fonctionnent après un redémarrage du bot, toutes les vues doivent:

  1. Utiliser timeout=None dans le constructeur
  2. Être enregistrées avec bot.add_view(view) dans cog_load()

Vues persistantes configurées:

  • TicketCreationView - timeout=None
  • TicketManagementView - timeout=None
  • SurveyView - timeout=None
  • AdminPanelView - timeout=None
  • ConfigPanelView - timeout=None
  • BulkCloseView - timeout=None
  • RolesManagementView - timeout=None

Enregistrement des vues

Les vues sont enregistrées dans cog_load() et aussi périodiquement toutes les 30 secondes:

async def cog_load(self):
    await self._register_all_views()

async def _register_all_views(self):
    for guild_id in self.storage.get_all_guild_ids():
        config = self.storage.load_config(guild_id)
        if config and config.enabled:
            self.bot.add_view(TicketCreationView(self.bot, config))
            self.bot.add_view(TicketManagementView(...))
            # etc.

Commandes

Commande Description
/ticket setup Configure le système (admin)
/ticket panel [channel] Crée le panneau de création
/ticket info [channel] Infos sur un ticket
/ticket list [user] Liste des tickets
/ticket stats Statistiques
/ticket admin Panneau d'admin
/ticket transcript [channel] Génère une transcription
/ticket category add|remove|list Gère les catégories
/ticket close [channel] [reason] Ferme un ticket
/ticket reopen [channel] Rouvre un ticket

Configuration

Modèles de données

  • TicketData - Données d'un ticket
  • TicketCategory - Catégorie de ticket
  • GuildTicketConfig - Configuration du serveur
  • TicketStatus - Statuts: OPEN, CLAIMED, CLOSED, ARCHIVED
  • Priority - Priorités: LOW, NORMAL, HIGH, URGENT

Stockage

Les données sont stockées dans data/tickets/:

  • config_guild_id.json - Configuration du serveur
  • tickets.json - Tous les tickets

Fonctionnalités

Création de tickets

  1. L'utilisateur clique sur une catégorie
  2. Sélectionne la priorité (si activé)
  3. Entre la raison (si requis)
  4. Le salon est créé automatiquement

Gestion des tickets

  • Fermer - Ferme avec raison optionnelle
  • Réclamer - Reserve le ticket à un staff
  • Priorité - Change la priorité
  • Transcript - Génère une transcription

Système de survey

Enquête de satisfaction 1-5 étoiles après fermeture

Problèmes connus et solutions

Boutons ne fonctionnent pas après redémarrage

Cause: Views non persistantes (timeout défini) ou non enregistrées Solution:

  1. Vérifier que timeout=None est défini
  2. Vérifier que bot.add_view() est appelé dans cog_load()
  3. Redémarrer le bot après avoir envoyé le panneau

Transcript non généré

Cause: Historique trop long ou permissions manquantes Solution: Le transcript limite à 1000 messages

Dépannage

# Tester si les vues sont enregistrées
# Les boutons doivent répondre même après un redémarrage

# Vérifier les logs pour les erreurs
tail -f logs/kuby.log

À faire (Backlog)

  • Ajouter support pour transcripts PDF
  • Implémenter système de tags pour tickets
  • Ajouter intégration avec webhooks
  • Support multi-langue
  • Interface web pour administration