For the complete documentation index, see llms.txt. This page is also available as Markdown.

Tickets

Configure ticket system, categories, permissions, and automation

Introduction

The Tickets configuration file (tickets.json) manages your support ticket system including categories, permissions, questions, transcripts, and automation.


General Settings

send_transcript_to_ticket_creator

Type: Boolean

Send transcript copy to ticket creator.

send_transcript_to_ticket_creator: true

When true: User receives transcript when ticket closes When false: No transcript is sent to user


save_ticket_transcript_on_disk

Type: Boolean

Save transcripts to disk locally.

save_ticket_transcript_on_disk: true

When true: Transcripts saved to \logs\transcripts\ When false: No local save


update_permissions_on_move

Type: Boolean

Sync permissions when moving tickets.

When true: Permissions update to match new category when using /tmove When false: Permissions stay the same


ticket_channel_name

Type: String

Channel name format for tickets.

Placeholders:

  • %random% - Random number

  • %creator% - Username

  • %created_total% - Total tickets created

  • %category% - Category name

Categories can override this with custom names.


ticket_transcript_message_limit

Type: Number

Maximum messages included in transcripts.


close_ticket_after_creator_left

Type: Boolean

Auto-close tickets when creator leaves server.


ping_role_at_permission_update

Type: Boolean

Ping role when ticket is elevated/lowered.

When true: New permission level role is mentioned When false: No ping


ticket_creation_limit

Type: String

How many tickets users can create.

Options:

  • "CATEGORY" - One ticket per category

  • "GLOBAL" - One ticket total across all categories

  • "NONE" - Unlimited tickets

Does not apply to applications.


enable_web_server

Type: Boolean

Upload transcripts to web server.

When true: Transcripts uploaded and replaced with link When false: Transcripts sent as files


send_transcript_to_claimed_user

Type: Boolean

Send transcript to staff who claimed ticket.


send_plain_ticket_create_message

Type: Boolean

Use plain text instead of embed for ticket creation message.


use_discord_category_permissions

Type: Boolean

Inherit Discord category permissions.

When true: Uses Discord category permissions, ignores permission_level settings When false: Uses configured permission levels


generate_new_category_if_full

Type: Boolean

Auto-create new categories when full (50 channel limit).


maximum_generated_categories

Type: Number

Maximum auto-generated categories.

Only applies when generate_new_category_if_full is enabled.


all_roles_required_to_open

Type: Boolean

Whether all roles in required_role_to_open are needed.

When true: User needs ALL configured roles When false: User needs only ONE of the configured roles


enable_ticket_rating_system

Type: Boolean

Enable rating system after ticket closure.


Ticket Categories

Type: Array of Objects

Define ticket types and their settings. Each category represents a different ticket type (e.g., General Support, Bug Reports, Appeals, etc.).

category - Category name displayed in the ticket panel and channel description - Category description shown in panel dropdown/buttons emoji - Emoji for category button (use Discord emoji picker or custom emoji ID) category_id - Discord category ID where ticket channels will be created permission_level - Starting permission level (0 = lowest, higher numbers = more restricted) ticket_create_questions - Question set ID from question_list or null to skip questions required_role_to_open - Array of role IDs required to open this ticket type (empty array = anyone can open) mention_roles - Array of role IDs to ping when ticket is created (e.g., support team roles) ticket_create_msg - Message template ID from ticket_create_message section


Permission Levels

Type: Array of Strings

Define ticket access hierarchy using Discord role IDs. This creates a tiered support system where higher-level staff can access lower-level tickets.

How Permission Levels Work:

  1. Position in Array: Index 0 is the lowest level, higher indexes = higher permission levels

  2. Ticket Access: Staff with a role can see tickets at their level AND all levels below them

  3. Starting Level: Tickets start at the permission_level set in their category

  4. Escalation: Use /televate to increase level, /tlower to decrease level

Detailed Example:

Let's say you have these permission levels:

  • Level 0: Helper role (ID: 111111111111111111)

  • Level 1: Moderator role (ID: 222222222222222222)

  • Level 2: Admin role (ID: 333333333333333333)

Scenario 1 - General Support Ticket (permission_level: 0)

  • ✅ Helpers can see it (they are level 0)

  • ✅ Moderators can see it (level 1 can access level 0)

  • ✅ Admins can see it (level 2 can access levels 0 and 1)

Scenario 2 - Bug Report Ticket (permission_level: 1)

  • ❌ Helpers CANNOT see it (level 0 cannot access level 1)

  • ✅ Moderators can see it (they are level 1)

  • ✅ Admins can see it (level 2 can access level 1)

Scenario 3 - Ticket Elevated to Level 2

  • ❌ Helpers CANNOT see it

  • ❌ Moderators CANNOT see it

  • ✅ Only Admins can see it (level 2)

Common Setup:

  • Level 0: Junior Support / Helpers

  • Level 1: Moderators / Regular Support

  • Level 2: Senior Moderators / Team Leads

  • Level 3: Administrators / Management

This allows tickets to start with helpers, then be escalated to mods, then admins if needed.


Ticket Create Questions

Pre-ticket questions to gather information before the ticket is created. This helps support staff have context immediately.

enabled

Type: Boolean

Whether to enable question system.


question_list

Type: Object

Question sets for different categories. Each set has a unique ID that you reference in ticket_categories.

question - Question text displayed to the user max_length - For text: max characters allowed. For dropdowns: max number of options user can select min_length - For text: min characters required. For dropdowns: min number of options user must select placeholder - Placeholder text shown in the input field select_options - Empty array [] = text input. Array with values = dropdown menu required - true = must be answered, false = optional

Question Type Examples:

Text Input (Short Answer):

Text Input (Long Answer):

Single Selection Dropdown:

Multiple Selection Dropdown:

Optional Question:


Ticket Create Message

Type: Object

First message sent in new tickets. Each template has a unique ID that you reference in ticket categories.

Uses same embed format as lang.json configuration file.

Available Placeholders:

  • %creator% - Mentions the ticket creator

  • %ticket_channel% - Mentions the ticket channel

  • %guild% - Server name

  • %guild_icon% - Server icon URL

Embed Properties:

  • author - Author section with name and icon

  • title - Embed title

  • description - Main embed content (supports newlines with \n)

  • color - Hex color code (e.g., "#3498db")

  • thumbnail - Small image in top-right corner

  • image - Large image at bottom

  • fields - Array of field objects with name and value

  • footer - Footer text and icon

  • defaultFooter - Use default footer (true/false)

  • defaultTimestamp - Add timestamp (true/false)

  • userIcon - Use ticket creator's avatar (true/false)


Ticket Priority

The Tickets plugin now includes a full priority system for tickets.

enabled

Type: Boolean

Enable the ticket priority system.


default_level

Type: String

The default priority level assigned to tickets when no role-based priority applies.


levels

Type: Array of Objects

Defines the available priority levels and how they behave.

Each level can include:

  • priority_name - The displayed priority name.

  • mention_roles - Roles to ping when a ticket is created at this priority.

  • move_to_top - Whether the ticket channel is moved to the top of the category.

  • priority_placeholder - Text added before the ticket channel name.


role_priority

Type: Object

Automatically assign priority levels based on user roles.

If a user has one of the listed roles, their ticket will receive the mapped priority level. If not, the default priority level is used.


Out of Service

Notify users during off-hours.

enabled

Type: Boolean

Enable out-of-service notifications.


time

Type: Object

Off-hours time range in UTC.

Format: "hh:mm" in 24-hour UTC time.


Inactivity Closure

Auto-close inactive tickets.

enabled

Type: Boolean

Enable inactivity closure.


send_warning

Type: Boolean

Send warning before closing.


send_warning_before

Type: Number

Hours before closure to send warning.


inactive_for

Type: Number

Hours of inactivity before closing.


Ticket Buttons

Type: Object

Control which buttons appear on ticket creation message.

close - Direct close button close_request - Request closure button elevate - Increase permission level lower - Decrease permission level claim - Claim ticket unclaim - Unclaim ticket


Complete Configuration Example

Here's a production-ready tickets configuration:

Last updated