Correction mineurs système de ticket & fix de l'erreur "!! CommandeNotfound"

This commit is contained in:
Mathis 2026-03-10 22:08:14 +01:00
parent dfec6b2418
commit 33fd07b842
16 changed files with 30 additions and 2868 deletions

View file

@ -694,6 +694,7 @@ class TicketManagementView(discord.ui.View):
"author_name": str(msg.author),
"content": msg.content,
"timestamp": msg.created_at.isoformat(),
"attachments": [a.url for a in msg.attachments],
"is_staff": self._is_staff_member(msg.author)
})
@ -788,6 +789,8 @@ class TicketManagementView(discord.ui.View):
return user.guild_permissions.administrator
def _is_staff_member(self, member) -> bool:
if not isinstance(member, discord.Member):
return False
guild = member.guild
for role_id in self.config.staff_roles:
role = guild.get_role(int(role_id))
@ -795,7 +798,6 @@ class TicketManagementView(discord.ui.View):
return True
return False
class CloseTicketModal(discord.ui.Modal):
"""Modal pour fermer un ticket"""
@ -894,6 +896,7 @@ class CloseTicketModal(discord.ui.Modal):
"author_name": str(msg.author),
"content": msg.content,
"timestamp": msg.created_at.isoformat(),
"attachments": [a.url for a in msg.attachments],
"is_staff": self._is_staff_member(msg.author)
})
@ -958,6 +961,16 @@ class CloseTicketModal(discord.ui.Modal):
return True
return user.guild_permissions.administrator
def _is_staff_member(self, member) -> bool:
if not isinstance(member, discord.Member):
return False
guild = member.guild
for role_id in self.config.staff_roles:
role = guild.get_role(int(role_id))
if role and role in member.roles:
return True
return False
class TicketSetupView(discord.ui.View):
"""Panel de configuration complet du système de tickets"""

View file

@ -216,6 +216,17 @@ class TicketData:
@classmethod
def from_dict(cls, data: Dict[str, Any]) -> 'TicketData':
messages = [TicketMessage.from_dict(m) for m in data.get("messages", [])]
def safe_parse_date(date_str, default=None):
if not date_str:
return default
try:
if isinstance(date_str, str) and date_str.endswith("Z"):
date_str = date_str[:-1] + "+00:00"
return datetime.fromisoformat(date_str)
except ValueError:
return default
return cls(
channel_id=data.get("channel_id", 0),
guild_id=data.get("guild_id", 0),
@ -223,8 +234,8 @@ class TicketData:
category_id=data.get("category_id", ""),
status=TicketStatus(data.get("status", "open")),
priority=Priority(data.get("priority", "normal")),
created_at=datetime.fromisoformat(data.get("created_at", datetime.now().isoformat())),
closed_at=datetime.fromisoformat(data["closed_at"]) if data.get("closed_at") else None,
created_at=safe_parse_date(data.get("created_at"), datetime.now()),
closed_at=safe_parse_date(data.get("closed_at")),
claimed_by=data.get("claimed_by"),
messages=messages,
reason=data.get("reason", ""),