# Tickets

> Opened in game or on Discord with one command, answered wherever your team is, optionally forwarded to your own queue, and the conversation survives closing it.

Source: https://stygion.eu/docs/keystone/tickets
Updated: 2026-10-17

A player types `/ticket <what is wrong>` and the ticket is open. Your team
answers — in game with `/tickets`, or in the private Discord channel it opened.
Both are the same conversation.

## Without learning a syntax

New in 0.2.6. `/ticket <what is wrong>` opens a ticket straight away, with the kind
set by `default-kind`; `/ticket bug …` still chooses a kind. `/bug` and `/feedback`
are commands of their own (`shortcuts`). An answer reaches the player in game
with a chime, now or the next time they join.

## What to configure

`tickets.toml`:

- `kinds` is what somebody may open, and what each one is for. The default is
  `help`, `bug` and `report`; the arrow after each is where you write the
  description a player sees when they pick it.
- `limit-per-person` is how many somebody may have open at once. Default three.
- `cooldown` stops the same person opening one every second.

`discord.tickets.category` puts the ticket channels in that category, and
`discord.tickets.roles` is who on Discord can see and answer them. Without a
category the Discord half stays off and tickets are a purely in-game thing —
which is a fine way to run it.

## Forwarding to another queue

New in 0.2.6, off by default. With `tickets.forward.url` set, every ticket, line
and close is posted there as JSON, with `tickets.forward.key` as a bearer token.
What cannot be delivered is kept and retried for three days. Answers come back
through `POST /v1/tickets/reply` and `POST /v1/tickets/close` (key scope
`tickets.write`).

This is data leaving the machine, so it is guarded: the address must be https on
the internet and only the owner can set it; loopback, LAN, link-local and names
that resolve there are refused unless `tickets.forward.allow-local`; redirects
are never followed; the log shows only the scheme and host.

## The transcript

**Closing a ticket does not delete it.** The whole conversation is kept in the
mod, so a report that comes back a month later has its history, and so an answer
somebody gave can be found again. The Discord channel is deleted when the ticket
closes — it is a window onto the ticket, not the ticket itself. That is the
difference between a ticket and a message in chat.

## Reports about people

`report` is a kind like any other, but the person being reported is not told and
does not see the channel. What happens next is
[moderation](/docs/keystone/moderation) — a ban carries its reason and who set
it, and the player sees that reason on the screen they are shown.
