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

# Jail

> How better tickets' jail system works: linking a category to jail, configuring the jail role, and what /jail, /unjail, and /escalate actually do.

Jail is a moderation tool built on top of the ticket system rather than a separate feature: one ticket category is designated as the server's jail category, and "jailing" a member strips their roles, applies a dedicated jail role, and opens them a private channel in that category - similar to a normal ticket, but one they were placed into rather than one they chose to open.

## Set up

<Steps>
  <Step title="Create a category">
    Jail needs its own ticket category to work with. If you don't already have one set aside for it, create one: `/ticket create id:jail`. This is a normal ticket category at this point - nothing jail-specific happens until the next step.
  </Step>

  <Step title="Link it to jail">
    Run `/config jail`. This opens a select menu listing every ticket category on your server - pick the one you want to use for jail. Only one category can be linked at a time; picking a different one moves the link, it doesn't add a second jail category.
  </Step>

  <Step title="Set the jail role">
    Run `/ticket edit category:jail` and go to the **Roles** page. Set an **Assign role** there - once a category is linked to jail, this list is what actually gets applied to a member's account when they're jailed. Without a role set here, `/jail` will refuse to jail anyone, since there'd be nothing to apply.
  </Step>

  <Step title="Optional: notify on jail">
    Back in `/config jail`, toggle **Notify user on jail** on if you want jailed members DMed the reason they were given. If their DMs are closed, this is silently skipped - jailing still succeeds either way.
  </Step>
</Steps>

<Warning>
  Once a category is linked to jail, members lose the ability to self-open a ticket in it through the panel or `/open` - the bot blocks this outright for everyone except staff. The only ways into a jail-linked category from that point on are `/jail` and `/escalate` (both staff actions).
</Warning>

## Jailing a member

Run `/jail member:<user> reason:<text>` (reason is optional, but worth setting since it's shown to staff in the channel and, if enabled, DMed to the member). This does four things in order:

1. Removes the target's current server roles.
2. Applies the jail category's **assign role(s)** (the ones you set in the setup steps above).
3. Opens a ticket channel for them inside the jail category, just like a normal ticket open.
4. Records what was removed, so it can be put back later.

A few situations block `/jail` outright rather than letting it partially apply:

* The target already has a role equal to or higher than yours (server owners are exempt from this check).
* The target's highest role sits above the bot's own highest role - Discord's permission system means the bot literally can't touch it.
* The bot is missing the **Manage Roles** permission.
* The target is the server owner, or is another bot.

`/unjail member:<user>` reverses the process: it restores exactly the roles that were recorded as removed when the member was jailed, then leaves the jail ticket channel as-is (it doesn't get closed automatically - close it separately if you want a transcript, or delete it if you don't).

## Escalating into or out of jail

`/escalate category:jail`, run from inside an already-open regular ticket, moves that ticket into the jail category and applies the exact same role swap `/jail` does - it's the same underlying action, just triggered from a conversation that's already happening instead of starting fresh. Running `/escalate` on a jailed ticket to move it to a normal category does the reverse: restores the member's roles the same way `/unjail` would.

This is the intended path when a regular support conversation turns into something that needs jail - staff don't need to close the current ticket and separately run `/jail`, they can escalate the same channel directly.
