Raw discord.ui.Button in LayoutView has no callback -> discord.py
can't dispatch the interaction -> 3s timeout.
Replace with CloseTicketButton/OpenTicketButton subclasses that have
proper callback methods. Remove PersistentCloseButton/PersistentQuickOpen.
- DM-based modmail: user DMs bot -> ticket channel created
- Staff relay: messages in ticket -> DM to user
- Configurable categories via /modmail addcategory
- Setup via /modmail setup (category, staff role, log channel)
- Close command: /close or !close -> HTML transcript generated
- Components V2: Container, TextDisplay, Separator, persistent views
- Transcript: dark theme HTML with staff badges, avatars, timestamps