Skip to main content

Tickets concept

This page explains how the ticket system works across the player shop, the admin queue, and Discord.

Use it when you need the shared mechanics behind ticket visibility, status changes, participants, and Discord behavior.

What a ticket containsโ€‹

Each ticket combines:

  • a subject
  • a status
  • a participant list
  • a message history
  • an optional assignee
  • an optional Discord channel

Shop-created tickets automatically add the creator as a participant. Staff-created tickets can start without participants and be filled later from the admin queue.

Ticket lifecycleโ€‹

Tickets move through these states:

  • Open: newly created or reopened
  • In progress: the first public reply turns an open ticket into in progress
  • Closed: the ticket is resolved but can still be reopened
  • Archived: the ticket is finished and the Discord channel is removed

Important behavior:

  • reopening a closed ticket keeps the existing Discord channel and unlocks it again
  • reopening an archived ticket creates a fresh Discord channel and replays the recent public history
  • if Tickets Auto Archive is enabled, closing a ticket archives it immediately instead of leaving it in the closed state

Participants and visibilityโ€‹

Participants define which players can see a ticket in Shop -> Tickets.

Staff can add:

  • single players
  • all current members of a faction

Important behavior:

  • only participants can see a ticket in the shop
  • internal notes are never shown to players
  • adding or removing a participant also updates Discord channel access for linked Discord accounts

Discord behaviorโ€‹

Navigation path for setup:

  • Server Admin -> Settings -> Discord

Relevant settings:

  • Discord Server
  • Discord Tickets Category
  • Discord Tickets Channel Prefix
  • Discord Tickets Support Role
  • Tickets Auto Archive

When Discord is configured and the bot is installed:

  • each ticket gets its own Discord text channel
  • the configured support role can access every ticket channel
  • players with tickets.view receive the synced ticket-access Discord role
  • public messages are mirrored between dzbot and Discord
  • internal notes stay private in dzbot and only post a short notice into the Discord channel
  • archived tickets send participants a DM with reopen and view actions

Attention stateโ€‹

Each active ticket tracks who sent the last public message. This drives in-app badges shown on every ticket row in the admin queue and the player shop list:

  • Needs Attention โ€” the last public message is from a player; support has not yet replied
  • Waiting for Response โ€” the last public message is from support; the player has not yet replied

Discord channel header actionsโ€‹

The pinned header message in every ticket channel contains interactive controls:

  • Close / Reopen / Archive โ€” status buttons visible to anyone with the corresponding access right
  • Assign to me / Remove assignee โ€” assignment buttons
  • Add participant user-select โ€” a Discord user-select that lets moderators pick any Discord user to add as a participant directly from the channel; requires the tickets.add_participant access right

When a selected user has no linked player account, the bot replies with an error message in the channel. Re-selecting an existing participant is silently ignored.

Access-right modelโ€‹

Player-facing rights:

  • tickets.view to open the shop ticket area
  • tickets.create to create new tickets
  • tickets.send_message to reply and edit the subject while the ticket is active
  • tickets.close to close active tickets
  • tickets.archive to archive resolved tickets when auto-archive is not active

Admin-facing rights:

  • tickets.admin_view for read-only access to the admin queue
  • tickets.reply for public support replies, staff-created tickets, message pinning, and evidence file uploads
  • tickets.internal_message for internal notes
  • tickets.assign for assignee, participants, and subject management in the admin panel
  • tickets.change_status for manual status changes
  • tickets.add_participant to add participants via the Discord channel user-select
  • logs.view to use the Investigation tab on the ticket detail page
  • restrictions.view to view linked restrictions on the ticket Review tab
  • restrictions.create to create restrictions directly from a ticket

For group strategy and mixed staff/player setups, see Access control.