Tickets
The Tickets module provides a full support ticket system through private channels. Users open tickets via a panel button, and staff can manage them with slash commands.
Enabling the Module
Enable the module
Dashboard → Your server → toggle Tickets
Configure support roles
Click Edit and configure support roles + ticket category
Deploy the panel
Deploy the panel with /ticket panel
Configuration
| Option | Type | Default | Description |
|---|---|---|---|
support_roles | string[] | [] | Roles that can view and manage all tickets |
ticket_category_id | string / null | null | Discord category where ticket channels are created |
max_tickets_per_user | number | 3 | Maximum open tickets per user |
close_confirmation | boolean | true | Ask for confirmation before closing |
ticket_categories | array | [] | Named categories (dropdown instead of button) |
auto_close_hours | number | 0 | Auto-close after X hours of inactivity (0 = off) |
How It Works
Panel Deployment
Run the command
Admin runs /ticket panel in the desired channel
Bot posts the panel
Bot posts an embed with either a single "Open Ticket" button (no categories configured) or a dropdown menu with category options (categories configured)
Persistence
Panel message ID is saved to config (persistent across restarts)
Ticket Lifecycle
User clicks "Open Ticket"
↓
Bot checks max_tickets_per_user limit
↓
Creates private channel: #ticket-{number}
↓
Sets permissions (user + support roles)
↓
Sends welcome message
↓
... conversation ...
↓
/ticket close (or auto-close)
↓
Channel deletedPermissions
| Who | Sees ticket | Can close |
|---|---|---|
| Ticket creator | ✅ | ✅ |
| Support roles | ✅ | ✅ |
Added users (via /ticket add) | ✅ | ❌ |
| Everyone else | ❌ | ❌ |
Commands
| Command | Description | Who can use |
|---|---|---|
/ticket close [reason] | Close the ticket | Creator, support, admin |
/ticket add [user] | Add a user to the ticket | Anyone in the ticket |
/ticket remove [user] | Remove a user from the ticket | Anyone in the ticket |
/ticket panel | Deploy the panel embed | Administrator |
Categories
Configure ticket categories in the dashboard to offer a dropdown instead of a plain button:
[
{
"name": "General Support",
"description": "General questions and help",
"emoji": "❓"
},
{
"name": "Bug Report",
"description": "Report a bug or issue",
"emoji": "🐛"
}
]Each category can have:
- name — displayed in the dropdown (max 25 categories)
- description — subtitle in the dropdown (max 100 chars)
- emoji — optional emoji next to the name
Auto-Close
When auto_close_hours > 0:
- Background task runs periodically
- Checks the last message time in each open ticket channel
- If inactivity exceeds the threshold → closes the ticket automatically
- Sends a notification before closing (warning)
Logging
Actions logged by Logs under the tickets category:
- 🎫 Ticket Opened — who opened, category, channel
- 🎫 Ticket Closed — who closed, reason, duration
- 🎫 User Added/Removed
Tips
Best Practices
- Set
ticket_category_idto a dedicated Discord category — keeps tickets organized - Configure at least one
support_roleso staff can see all tickets - Use categories if you have multiple departments (support, billing, etc.)
- Set
auto_close_hours: 48to prevent abandoned tickets from cluttering
Support Roles Required
Without support_roles configured, only administrators and the ticket creator can see tickets. Make sure to add relevant staff roles.