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

# Scrims

> Automated daily scrim registration with auto-opening, slot assignment and live slotlists.

# Scrims

> Automated daily scrim registration with auto-opening, slot assignment and live slotlists.

## How scrims work

A **scrim** is a recurring practice match. You set a daily open time and the number of slots once — raze then opens registration automatically at that time every day (on the days you choose), assigns slots as teams register, closes when full, and posts the slotlist. The next day it reopens with a fresh slate.

All scrim commands live under `;scrim` and require **Manage Server**.

## Create a scrim

```bash theme={null} theme={null}
;scrim create reg:#register slots:25 time:6pm mentions:2 role:@Players tz:Asia/Kolkata name:Scrim A
```

`create` uses named flags, so order doesn't matter. Only `reg` is required.

<ParamField path="reg" type="channel" required>
  The registration channel teams send their team message in. *Aliases: `channel`, `registration`.*
</ParamField>

<ParamField path="slots" type="number" default="12">
  Total number of slots (2–200). *Alias: `total`.*
</ParamField>

<ParamField path="time" type="time" default="18:00">
  Daily open time. Accepts `18:00`, `6pm`, `6:30pm`. *Alias: `open`.*
</ParamField>

<ParamField path="tz" type="string" default="UTC">
  IANA timezone the open time is interpreted in, e.g. `Asia/Kolkata`, `America/New_York`.
</ParamField>

<ParamField path="slotlist" type="channel">
  Channel the slotlist is posted to. Defaults to the registration channel.
</ParamField>

<ParamField path="role" type="role">
  Role granted automatically to every member who secures a slot.
</ParamField>

<ParamField path="mentions" type="number" default="4">
  How many teammates a registration must mention to be valid.
</ParamField>

<ParamField path="lines" type="number" default="0">
  Minimum number of non-empty lines a registration must contain. `0` disables the check.
</ParamField>

<ParamField path="openrole" type="role">
  If set, only members with this role may register.
</ParamField>

<ParamField path="pingrole" type="role">
  Role pinged when registration opens.
</ParamField>

<ParamField path="name" type="string" default="Scrim">
  A label for the scrim, shown on the slotlist and summaries.
</ParamField>

<ParamField path="format" type="string">
  Custom registration template format string using placeholders like `{name}`, `{index}`, `{player}`, `{ign}`, `{role}`. *Aliases: `regformat`, `template`.*
</ParamField>

## Registration Format

Customize the registration format required for players when sending team messages. When registration opens, the open announcement automatically displays this required format.

```bash theme={null} theme={null}
;scrim format [id] Team name: {name}
{index}: {player} - {ign} | {role}
```

### Supported Placeholders

* `{name}` / `{team}` / `{team_name}` — Team name.
* `{index}` / `{num}` / `{slot}` — Slot index or line number.
* `{player}` / `{mention}` / `{user}` / `{owner}` — Teammate mention.
* `{ign}` — Player in-game name.
* `{role}` — In-game role (e.g. `Sniper`, `IGL`, `Assaulter`).

Use `;scrim format [id]` without arguments to view the format, `;scrim format presets` to view pre-built format templates, or `;scrim format [id] clear` to clear it.

<Tip>
  The slotlist counts the team name from the **first line** of the registration, or from a `team: name` / `team name - name` line if present.
</Tip>

## Managing a scrim

Most commands take an optional **scrim id** (shown as `#3` on `;scrim list`). Omit it to target the scrim in the current channel, or the server's first scrim.

<AccordionGroup>
  <Accordion title="Scrim Info & Status">
    ```bash theme={null} theme={null}
    ;scrim info 3
    ```

    Displays detailed breakdown of scrim status, slot progress, channels, roles, and configured registration format. *Aliases: `;scrim show`, `;scrim status`.*
  </Accordion>

  <Accordion title="Slots & Slot Management">
    ```bash theme={null} theme={null}
    ;scrim slot [id]           # View all registered teams and slot assignments
    ;scrim slot remove 5 [id]   # Remove a team from slot #5
    ;scrim slot post [id]     # Post the live slotlist in the slotlist channel
    ```

    * **View Slots**: `;scrim slot` (or `;scrim slots`, `;scrim teams`)
    * **Remove Slot**: `;scrim slot remove 5` (or `;scrim removeslot 5`, `;scrim kickteam 5`)
    * **Post Slotlist**: `;scrim slot post` (or `;scrim slotlist`, `;scrim sl`)
  </Accordion>

  <Accordion title="Registration Format">
    ```bash theme={null} theme={null}
    ;scrim format [id] set (template)  # Set registration template
    ;scrim format presets             # View and apply pre-built format presets (squad, duo, solo)
    ;scrim format clear               # Clear custom format template
    ```

    Configures and enforces custom registration format rules.
  </Accordion>

  <Accordion title="Open & Close Registration">
    ```bash theme={null} theme={null}
    ;scrim open 3   # Manually open registration
    ;scrim close 3  # Manually close registration
    ```
  </Accordion>

  <Accordion title="Scrim List, Toggle & Delete">
    ```bash theme={null} theme={null}
    ;scrim list      # List all scrims in the server
    ;scrim toggle 3  # Enable/disable auto-open schedule
    ;scrim delete 3  # Delete a scrim
    ```
  </Accordion>
</AccordionGroup>

## Bans

Stop a user from registering for a specific scrim — for example, repeat no-shows or multi-accounting.

```bash theme={null} theme={null}
;scrim ban @user 3 multi-accounting
;scrim unban @user 3
```

Banned users get a 🚫 reaction on any registration attempt and are never assigned a slot.

## Daily lifecycle

<AccordionGroup>
  <Accordion title="When does it open?">
    Every 30 seconds raze checks each enabled scrim. When the local time (in the scrim's `tz`) reaches the open time on an enabled day, registration opens — once per day. If the bot was offline at the exact minute, it opens as soon as it's back, still only once that day.
  </Accordion>

  <Accordion title="When does it close?">
    Registration closes automatically the moment the last slot is filled. You can also close it early with `;scrim close`. Closing locks the channel and posts the slotlist.
  </Accordion>

  <Accordion title="What resets each day?">
    On the next day's open, the previous day's assigned slots are cleared so the scrim starts empty. Reserved slots are kept.
  </Accordion>
</AccordionGroup>

<Warning>
  Make sure raze can manage permissions on the registration channel — it toggles **Send Messages** for `@everyone` (or the open role) to open and close registration.
</Warning>
