4.3 KiB
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:
- Utiliser
timeout=Nonedans le constructeur - Être enregistrées avec
bot.add_view(view)danscog_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 serveurtickets.json- Tous les tickets
Fonctionnalités
Création de tickets
- L'utilisateur clique sur une catégorie
- Sélectionne la priorité (si activé)
- Entre la raison (si requis)
- 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:
- Vérifier que
timeout=Noneest défini - Vérifier que
bot.add_view()est appelé danscog_load() - 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