Première version non terminer du nouveau système de ticket § ajout du système de boutons persistant (non tester)
This commit is contained in:
parent
10173132a2
commit
93e2f9bb44
15 changed files with 3788 additions and 209 deletions
130
commandes/ticket/TODO.md
Normal file
130
commandes/ticket/TODO.md
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
# 🎫 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:
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue