> ## Documentation Index
> Fetch the complete documentation index at: https://bettertickets.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# Commands

> The full command reference for better tickets: category management, everyday ticket handling, and jail, with what each command does, who can run it, and every option it takes.

Every command below works as a slash command. Most also work as a message command using your server's prefix (default `!` - see [Prefixes](/docs/settings/prefixes)), except ones that need Discord's slash-command interface directly (like `/ticket send`, which opens a modal).

## Category management

These commands create and configure categories themselves, not individual tickets. All of them require the **Administrator** or **Manage Server** Discord permission - a category's staff roles don't grant access to these, on purpose, since they change configuration rather than handle a single ticket.

### `/ticket create`

Creates a new, empty ticket category. Run this once per category you want, then configure it with `/ticket edit` - see [Overview](/docs/tickets/overview#creating-and-editing-a-category) for the full walkthrough.

<ParamField path="id" type="string" required>
  A unique identifier for the category (max 30 characters). This becomes the `category` value you pass to every other ticket command. It can't be changed later - delete and recreate the category if you need a different name.
</ParamField>

### `/ticket edit`

Opens the interactive settings menu for a category - the same command you'll come back to any time you want to change staff roles, channels, questions, or anything else. See [Ticket settings](/docs/tickets/settings) for what every page and field does.

<ParamField path="category" type="string" required>
  The category to edit. Autocompletes as you type.
</ParamField>

### `/ticket delete`

Permanently deletes a ticket category and its configuration, after a confirmation prompt. This doesn't close or delete any tickets that are currently open in that category - it only removes the category's settings, so open tickets are left as regular channels with no category behind them anymore.

<ParamField path="category" type="string" required>
  The category to delete.
</ParamField>

### `/ticket send`

Posts a category's panel - the message with the button members click to open a ticket - to a channel. You can send the same category's panel to more than one channel; each send is independent and none of them need to match where tickets actually get created (that's controlled separately by the **open category** setting).

<ParamField path="channel" type="channel" required>
  The text channel to send the panel to.
</ParamField>

### `/ticket stats`

Shows ticket statistics for a time window: how many were opened, claimed, and closed, optionally broken down by category or by a specific staff member. Useful for checking how active a category is or how much a given staff member has been handling.

<ParamField path="days" type="integer">
  How many days back to look. Defaults to 7.
</ParamField>

<ParamField path="category" type="string">
  Scope the stats to a single category instead of the whole server.
</ParamField>

<ParamField path="staff" type="user">
  Scope the stats to a single staff member's claims/closes.
</ParamField>

## Everyday commands

These are the commands staff and members use while a ticket is actually open. Unless noted, they're gated by the category's **staff roles** (see [Staff roles vs. server permissions](/docs/tickets/overview#staff-roles-vs-server-permissions)) - being a server admin also satisfies this check.

### `/open`

Opens a new ticket. Any member can run this for themselves; staff can also open one on behalf of another member (useful if someone asks for help outside of a ticket and you want to move the conversation somewhere private).

<ParamField path="category" type="string" required>
  The category to open a ticket in.
</ParamField>

<ParamField path="member" type="user">
  Open the ticket for this member instead of yourself. Requires staff permissions in that category.
</ParamField>

### `/claim`

Claims the ticket channel you're currently in, marking you as responsible for it. Run this from inside the ticket channel itself - it doesn't take a `member` or `category` option because it always acts on whatever channel you ran it in.

### `/release`

Releases a ticket you've claimed, putting it back to unclaimed so someone else can pick it up. Only the person who claimed it, or a server admin, can release it - this stops a ticket being pulled away from whoever's actually working it.

### `/close`

Closes the ticket channel you're in and archives it into a transcript (see [Overview](/docs/tickets/overview#lifecycle) for exactly what happens on close).

<ParamField path="reason" type="string">
  The reason for closing, included in the transcript's summary.
</ParamField>

### `/add`

Gives another member access to the ticket channel you're in, without making them staff. Useful for pulling in one specific person (a witness, a second applicant, a specialist on your team) without giving them access to every ticket.

<ParamField path="member" type="user" required>
  The member to add.
</ParamField>

### `/remove`

Removes a member's access to the ticket channel you're in. The ticket's original author can never be removed this way - only members who were added afterward with `/add`.

<ParamField path="member" type="user" required>
  The member to remove.
</ParamField>

### `/rename`

Renames the ticket channel you're in. This is a one-off manual rename - it doesn't change the category's automatic naming template (see [Channel name](/docs/tickets/settings#channels) in the Channels page), so future tickets in this category still use the template.

<ParamField path="name" type="string" required>
  The new channel name (max 100 characters).
</ParamField>

### `/escalate`

Moves the ticket channel you're in to a different category - including moving it into or out of the jail category, which is how staff jail someone from inside an existing ticket instead of using `/jail` directly. See [Jail](/docs/tickets/jail#escalating-into-or-out-of-jail).

<ParamField path="category" type="string" required>
  The category to move the ticket to.
</ParamField>

### `/nsfw`

Toggles Discord's age-restricted flag on the ticket channel you're in, for that one channel only. See [NSFW toggle](/docs/tickets/overview#nsfw-toggle) for how this differs from the category-wide NSFW default.

### `/verify`

Checks whether an uploaded transcript `.html` file is a genuine, unedited export from this bot, by validating its embedded cryptographic signature. Anyone can run this - it doesn't require staff permissions, since its whole purpose is letting anyone independently confirm a transcript is authentic. See [Transcripts you can actually trust](/) on the home page for how the signing works.

<ParamField path="file" type="attachment" required>
  The transcript file to verify.
</ParamField>

## Jail

`/jail` and `/unjail` are how staff move a member into and out of the jail category directly, without opening a regular ticket first. See [Jail](/docs/tickets/jail) for the full setup and how jailing actually works.

### `/jail`

Jails a member: removes their current roles, applies the jail category's assign role(s), and opens them a ticket channel in the jail category.

<ParamField path="member" type="user" required>
  The member to jail.
</ParamField>

<ParamField path="reason" type="string">
  The reason for jailing. Shown to the member if **Notify user on jail** is enabled in `/config jail`.
</ParamField>

### `/unjail`

Unjails a member, restoring the roles they had immediately before being jailed.

<ParamField path="member" type="user" required>
  The member to unjail.
</ParamField>
