> ## 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.

# Vanity Roles

> Give members a role for repping your server in their status.

## Overview

Set a phrase, and confine watches for it in your members' custom statuses. Anyone displaying it picks up the roles you've configured; anyone who takes it down loses them.

<Info>
  Every command here requires the **Manage Server** permission.
</Info>

## Setting the phrase

This is the text confine looks for. Most servers use their vanity invite with a slash in front so it's unmistakable in a status.

<CodeGroup>
  ```javascript Syntax theme={null}
  ,vanity set (text)
  ```

  ```javascript Example theme={null}
  ,vanity set /confine
  ```
</CodeGroup>

<Tip>
  Run `,vanity set none` to stop tracking entirely.
</Tip>

## Rewarding roles

<CodeGroup>
  ```javascript Syntax theme={null}
  ,vanity role add (role)
  ```

  ```javascript Example theme={null}
  ,vanity role add @Vanity
  ```
</CodeGroup>

<Warning>
  You can configure a maximum of **3** vanity roles per server.
</Warning>

Taking one back out:

<CodeGroup>
  ```javascript Syntax theme={null}
  ,vanity role remove (role)
  ```

  ```javascript Example theme={null}
  ,vanity role remove @Vanity
  ```
</CodeGroup>

<Info>
  Roles managed by bots or integrations can't be used — confine will reject them.
</Info>

### Reviewing and clearing

`,vanity role list` pages through what's configured. Running `,vanity role` on its own does the same.

`,vanity role reset` clears the whole list behind a confirmation prompt. The buttons only respond to whoever ran the command and expire after 30 seconds.

## The thank-you message

Confine can post a message when someone picks up your phrase.

<CodeGroup>
  ```javascript Syntax theme={null}
  ,vanity message (message)
  ```

  ```javascript Example theme={null}
  ,vanity message {user.mention} added {vanity.phrase} to their status
  ```
</CodeGroup>

Your message is validated before it saves, so a broken template gets rejected instead of quietly failing later. Starting with `{embed}` builds a rich embed rather than plain text — see [Embed Scripting](/resources/scripting) for the full syntax.

`,vanity message view` shows the raw code behind what you've set, and `,vanity message none` removes it.

### Where it posts

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

  ```javascript Example theme={null}
  ,vanity channel #general
  ```
</CodeGroup>

`,vanity channel none` turns the notifications off.
