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

# Warnings

> Track offences and escalate punishments automatically at set counts.

Warnings are the paper trail that makes later punishments defensible. On their own they do nothing except get recorded — the value comes from **thresholds**, which turn accumulated warnings into automatic action.

## Warning someone

```javascript theme={null}
!warn @someone posting links in #general
```

Requires **Manage Messages**. Creates a [case](/moderation/cases), DMs the member (unless silenced with `-s`), and checks whether they've crossed a threshold.

## Thresholds

```javascript theme={null}
!warn threshold add <count> <action> [duration]
```

Requires **Administrator**. When a member reaches that many warnings, the action fires automatically.

| Action    | Duration     | Notes                         |
| --------- | ------------ | ----------------------------- |
| `timeout` | **Required** | Max 28 days                   |
| `tempban` | **Required** | Auto-unban after the duration |
| `mute`    | Optional     | Indefinite if omitted         |
| `jail`    | Optional     | Indefinite if omitted         |
| `kick`    | —            |                               |
| `ban`     | —            |                               |
| `softban` | —            | Ban then unban                |

<CodeGroup>
  ```javascript A typical ladder theme={null}
  !warn threshold add 3 timeout 1h
  !warn threshold add 5 timeout 12h
  !warn threshold add 7 jail
  !warn threshold add 10 ban
  ```

  ```javascript Softer theme={null}
  !warn threshold add 3 mute 30m
  !warn threshold add 6 kick
  ```

  ```javascript View them theme={null}
  !warn threshold list
  ```

  ```javascript Remove one theme={null}
  !warn threshold remove 5
  ```

  ```javascript Remove all theme={null}
  !warn threshold clear
  ```
</CodeGroup>

Aliases for the group: `punish`, `punishment`, `action`. `warn threshold list` only needs **Manage Messages**, so moderators can see the ladder without being able to change it.

<Info>
  Thresholds fire on the **exact** count. A threshold at 5 fires on the fifth warning and not again on the sixth — so a ladder wants a rung at every count you care about. There's no "5 or more" behaviour.
</Info>

## Reviewing warnings

Warnings are cases, so the [history](/moderation/cases) commands cover them:

<CodeGroup>
  ```javascript Everything against someone theme={null}
  !history @someone
  ```

  ```javascript Just the numbers theme={null}
  !history statistics @someone
  ```

  ```javascript What a moderator has issued theme={null}
  !history moderator @jake
  ```
</CodeGroup>

## Resetting

<CodeGroup>
  ```javascript One member theme={null}
  !warn reset @someone
  ```

  ```javascript Everyone theme={null}
  !warn reset
  ```
</CodeGroup>

Requires **Administrator**. Aliases: `clear`, `wipe`.

Resetting clears their warning count, which means the threshold ladder starts over. The underlying cases stay in the history — use `!history clear @someone` to remove those as well.

<Warning>
  `!warn reset` with no member resets the **entire server**. There's no undo.
</Warning>

## Designing a ladder

<AccordionGroup>
  <Accordion title="Small community server">
    Forgiving, with a long runway before anything permanent:

    ```javascript theme={null}
    !warn threshold add 3 timeout 1h
    !warn threshold add 6 timeout 1d
    !warn threshold add 10 kick
    ```
  </Accordion>

  <Accordion title="Large public server">
    Faster, because you have volume and can't hand-review everything:

    ```javascript theme={null}
    !warn threshold add 2 timeout 1h
    !warn threshold add 4 timeout 1d
    !warn threshold add 6 ban
    ```
  </Accordion>

  <Accordion title="With a jail for appeals">
    Jail before ban gives people a chance to explain themselves without you having to monitor DMs:

    ```javascript theme={null}
    !warn threshold add 3 timeout 6h
    !warn threshold add 5 jail
    !warn threshold add 8 ban
    ```

    Needs `!setup` run first. Point them at the jail channel in the message:

    ```javascript theme={null}
    !jail message {title: You've been jailed} {description: You hit 5 warnings. Explain yourself here and a moderator will review it.}
    ```
  </Accordion>
</AccordionGroup>

<Tip>
  Reason templates make warns fast and consistent. Save the reasons your staff type constantly, then use the template name:

  ```javascript theme={null}
  !reason create links posting links outside #media
  !reason create spam repeated messages
  !warn @someone links
  ```

  `!reason list` shows them all.
</Tip>

## Command reference

| Command                                          | Aliases                          | Permission      | Description       |
| ------------------------------------------------ | -------------------------------- | --------------- | ----------------- |
| `warn <member> [reason]`                         | —                                | Manage Messages | Warn a member     |
| `warn reset [member]`                            | `clear`, `wipe`                  | Administrator   | Reset warnings    |
| `warn threshold`                                 | `punish`, `punishment`, `action` | Administrator   | Manage the ladder |
| `warn threshold add <count> <action> [duration]` | `set`, `create`, `+`             | Administrator   | Add a rung        |
| `warn threshold remove <count>`                  | `delete`, `del`, `rm`, `-`       | Administrator   | Remove a rung     |
| `warn threshold list`                            | `ls`, `show`, `view`             | Manage Messages | View the ladder   |
| `warn threshold clear`                           | `reset`, `wipe`, `purge`         | Administrator   | Remove every rung |
