from __future__ import annotations import html from datetime import datetime, timezone from tickets.data import TicketData def _format_ts(dt_str: str) -> str: try: dt = datetime.fromisoformat(dt_str) return dt.strftime("%d/%m/%Y %H:%M:%S") except (ValueError, TypeError): return dt_str def generate_transcript(ticket: TicketData, guild_name: str = "") -> str: now = datetime.now(timezone.utc).strftime("%d/%m/%Y %H:%M:%S") messages_html = "" for msg in ticket.messages: content = html.escape(msg.content) if msg.content else "" ts = _format_ts(msg.timestamp) badge = 'STAFF' if msg.is_staff else "" att_html = "" for att in msg.get("attachments", []) if hasattr(msg, "attachments") else msg.attachments: if any(att.lower().endswith(ext) for ext in (".png", ".jpg", ".jpeg", ".gif", ".webp")): att_html += f'
' else: att_html += f'' messages_html += f""" """ if not messages_html: messages_html = '