๐ŸŽซ Ticket System

Ticket System lets players create support tickets from Discord or in-game. Each ticket gets a private Discord channel with transcript generation on close.

Requires Discord module. Enable tickets in tickets.json and set up a ticket category in Discord.

Jump to

๐Ÿค– Discord flow

Creating a ticket

Closing a ticket

Rate limiting

Ticket creation has a 60-second global cooldown to prevent Discord API rate limiting (429 errors).

Limits

maxTicketsPerUser controls how many open tickets a single user can have at once.

๐ŸŽฎ In-game flow

Creating a ticket from Minecraft

/ticket <reason> <message...>

Replying to a ticket

/reply <message...>

Messages are relayed from Minecraft โ†’ Discord ticket channel and vice versa. If the player has the Voidium client mod, ticket messages appear in a dedicated tab. On vanilla clients, they arrive as private chat messages.

โš™๏ธ Configuration

File: config/voidium/tickets.json

Core settings

Field Type Default Description
enableTickets boolean true Master switch
ticketCategoryId string "" Discord category ID where ticket channels are created
supportRoleId string "" Role ID that can view/manage all tickets
enableAutoAssign boolean true Automatically assign new tickets to the support member with fewest active tickets
maxTicketsPerUser int 3 Max open tickets per user

Messages (Discord)

Field Description
ticketCreatedMessage Reply when ticket is created
ticketWelcomeMessage Welcome text in the ticket embed
ticketCloseMessage Message when ticket is closed
noPermissionMessage Shown when user lacks permission
ticketLimitReachedMessage Shown when max tickets reached
ticketAlreadyClosedMessage Shown when closing already-closed ticket
ticketChannelTopic Channel topic. Placeholders: %user%, %reason%
assignedMessage Message posted when a support member is auto-assigned. Placeholder: %assignee%

Messages (in-game)

Field Description
mcBotNotConnectedMessage Error when bot is offline
mcGuildNotFoundMessage Error when guild not found
mcCategoryNotFoundMessage Error when category not found
mcTicketCreatedMessage Success message in Minecraft
mcDiscordNotFoundMessage Error when player isnโ€™t linked

Transcripts

Field Type Default Description
enableTranscript boolean true Save conversation on close
transcriptFormat string "TXT" TXT or JSON
transcriptFilename string "transcript-%user%-%date%" Filename. Placeholders: %user%, %date%, %reason%

๐Ÿ“„ Transcripts

When a ticket is closed with transcripts enabled:

  1. Voidium fetches the last ~100 messages from the ticket channel
  2. Formats them as TXT (plain text log) or JSON (structured data)
  3. Uploads the transcript file to the ticket channel
  4. Waits a few seconds, then deletes the channel

The transcript file remains accessible in Discordโ€™s message history (uploaded before deletion).