ticketTickets

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

circle-check

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)

circle-info

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

circle-exclamation

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)

circle-check

Role Priority

Priority support for specific roles.

enabled

Type: Boolean

Enable priority support.


roles

Type: Array of Strings

Roles that trigger priority support (e.g., boosters).


mention_roles

Type: Array of Strings

Additional roles to mention for priority tickets.


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