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

# System Messages

> Post automatically when members join, leave, or boost.

## Overview

Three commands, one shared set of subcommands:

| Command    | Fires when                 |
| ---------- | -------------------------- |
| `,welcome` | A member joins             |
| `,goodbye` | A member leaves            |
| `,boosts`  | A member boosts the server |

<Info>
  Examples below use `welcome`, but everything applies identically to `goodbye` and `boosts`.
</Info>

<Info>
  All of these require the **Manage Server** permission.
</Info>

## Creating one

<CodeGroup>
  ```javascript Syntax theme={null}
  ,welcome add (channel) (message)
  ```

  ```javascript Example theme={null}
  ,welcome add #general welcome to {guild.name}, {user.mention}
  ```
</CodeGroup>

Leave the channel out and confine uses whichever channel you ran the command in. `,welcome create` works the same.

<Tip>
  Messages accept full embed syntax — start with `{embed}` for a rich embed instead of plain text. See [Embed Scripting](/resources/scripting).
</Tip>

### Limits

| Limit                   | Value |
| ----------------------- | ----- |
| Channels per event type | 5     |
| Messages per channel    | 1     |

Text channels and threads both work.

### Self-destructing messages

Add a flag to have confine clean up after itself. Three spellings do the same thing: `$delete`, `$delete_after`, and `$self_destruct`.

```javascript theme={null}
,welcome add #general hey {user.mention} $delete 30
,welcome add #general hey {user.mention} $delete=30
```

<Warning>
  The timer must be between **6** and **120** seconds.
</Warning>

## Boost variables

`,boosts` gets four extras on top of the standard variables:

| Variable        | Resolves to              |
| --------------- | ------------------------ |
| `{boost.count}` | Current number of boosts |
| `{boost.level}` | Server boost level       |
| `{boost.tier}`  | Same as level            |
| `{boost.since}` | Relative timestamp       |

```javascript theme={null}
,boosts add #general thanks {user.mention}! we're at {boost.count} boosts
```

## Removing one

<CodeGroup>
  ```javascript Syntax theme={null}
  ,welcome remove (channel)
  ```

  ```javascript Example theme={null}
  ,welcome remove #general
  ```
</CodeGroup>

### Clearing all of them

`,welcome reset` wipes every configured channel for that event behind a confirmation prompt — buttons only respond to whoever ran the command and expire after 30 seconds.

## Checking your setup

<AccordionGroup>
  <Accordion title="Previewing one channel">
    Sends the stored message into the current channel so you can see exactly how it'll render, self-destruct included.

    <CodeGroup>
      ```javascript Syntax theme={null}
          ,welcome view (channel)
      ```

      ```javascript Example theme={null}
          ,welcome view #general
      ```
    </CodeGroup>
  </Accordion>

  <Accordion title="Listing everything">
    `,welcome list` shows every configured channel.
  </Accordion>
</AccordionGroup>
