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

# Sticky Messages

> Sticky keeps a channel notice prominent. After a member posts, Headless waits for the configured interval and republishes the notice; it does not send messages on a clock schedule.

## Activity timing

`refresh_seconds` defaults to 8 seconds and accepts 2–300 through `.sticky interval` or the Dashboard. Each message that is not ignored schedules or resets the wait. `min_interval_seconds` limits consecutive publications, defaults to 12 seconds, and accepts normalized values from 0–600; change it in the Dashboard Sticky settings. If the minimum has not elapsed, Headless schedules the refresh for later.

### `.sticky mode`

```headless-command Syntax theme={null}
.sticky mode <mode> [channel]
```

```headless-command Example theme={null}
.sticky mode embed #announcements
```

### `.sticky interval`

```headless-command Syntax theme={null}
.sticky interval <seconds> [channel]
```

```headless-command Example theme={null}
.sticky interval 8 #announcements
```

## What refresh does

`ignore_bots` is enabled by default, so bot messages do not reset the timer. Headless also does not treat its own sticky as new activity. When the normal wait completes, it publishes a new notice and then attempts to delete the previous one when `delete_previous` is enabled (also the default). Configuration commands and `refresh` force an update of the existing message when available. Send/delete failures are recorded in status and may require a permission check.

### `.sticky refresh`

```headless-command Syntax theme={null}
.sticky refresh [channel]
```

```headless-command Example theme={null}
.sticky refresh #announcements
```

## Format, content, and permissions

Choose embed or plain text. Plain text is limited to 1,900 characters; normalized configuration limits title to 120, message to 1,800, footer to 180, and link label to 80. New defaults are `Important notice` and `Review this information before continuing in the channel.`; the button label defaults to `Open link`. When reading saved settings, Headless translates only former built-in values that match exactly and preserves customized text. Images accept HTTP(S) URLs; links accept HTTP(S) or discord://. Configuration commands require Manage Messages; the bot needs Send Messages, Embed Links for embeds, and Manage Messages to replace or delete its posts.

### `.sticky set`

```headless-command Syntax theme={null}
.sticky set <channel> <message>
```

```headless-command Example theme={null}
.sticky set #announcements Important information
```

### `.sticky title`

```headless-command Syntax theme={null}
.sticky title <channel> <title>
```

```headless-command Example theme={null}
.sticky title #announcements Server rules
```

### `.sticky image`

```headless-command Syntax theme={null}
.sticky image <channel> <url>
```

```headless-command Example theme={null}
.sticky image #announcements https://example.com/banner.png
```

### `.sticky link`

```headless-command Syntax theme={null}
.sticky link <channel> <url> [label=Open link]
```

```headless-command Example theme={null}
.sticky link #announcements https://example.com/rules Rules
```

### `.sticky`

```headless-command Syntax theme={null}
/sticky [action:<action>] [channel:<channel>] [message:<message>] [mode:<mode>] [seconds:<seconds>] [url:<url>] [label:<label>]
```

```headless-command Example theme={null}
/sticky action:set channel:#announcements message:Important
```

> [!WARNING]
>
> remove deletes the channel record and attempts to delete the current post. off only disables it and keeps the configuration. Confirm the channel before clearing it.

**Note:**

The refresh delay is a wait after activity, not a periodic send. When the channel is quiet, Sticky does not post again. `refresh_seconds`, `min_interval_seconds`, `ignore_bots`, and `delete_previous` are separate controls: one waits after activity, one spaces out publications, and the others decide which activity to ignore and whether to delete the previous notice.

## Sticky variables

Title, message, and footer accept only {server}, {channel}, {channel_name}, {member_count}, {members}, {date}, and {time}. Time is rendered in UTC. Mentions are disabled on sends; a token cannot trigger a ping.

## Storage and channels

Settings are isolated per server and channel. `set` and `here` create or enable a sticky; `off` keeps it disabled; `remove` deletes the configuration and attempts to delete the current post. `list` shows saved channels and `show` checks the current or selected channel. When `delete_previous` is disabled, older notices may remain in the channel.

### `.sticky here`

```headless-command Syntax theme={null}
.sticky here <message>
```

```headless-command Example theme={null}
.sticky here Read the rules before posting
```

### `.sticky show`

```headless-command Syntax theme={null}
.sticky show [channel]
```

```headless-command Example theme={null}
.sticky show #announcements
```

### `.sticky off`

```headless-command Syntax theme={null}
.sticky off [channel]
```

```headless-command Example theme={null}
.sticky off #announcements
```

### `.sticky remove`

```headless-command Syntax theme={null}
.sticky remove [channel]
```

```headless-command Example theme={null}
.sticky remove #announcements
```

## Steps

**1. Configure the notice**

Run .sticky set #announcements text or .sticky here text in the current channel.

**2. Customize the appearance**

Choose embed/text and set a title, image, or URL link.

**3. Test refresh**

Post a human message in the channel, then check .sticky show or force an update with .sticky refresh.

> **Prefix commands**
>
> The group alias is .stick. Commands: .sticky (current-channel status); .sticky set #channel message; .sticky here message; .sticky title #channel title; .sticky message #channel text; .sticky on \[#channel]; .sticky off \[#channel]; .sticky remove \[#channel]; .sticky refresh \[#channel]; .sticky mode embed|text \[#channel]; .sticky image #channel URL; .sticky link #channel URL \[label]; .sticky interval seconds \[#channel]; .sticky list; .sticky show \[#channel]. remove aliases: delete and clear; refresh aliases: repost and fix.

> **Slash command**
>
> /sticky supports status, set, here, on, off, refresh, mode, interval, image, and link, with channel, message, mode, seconds, url, and label fields. It defaults to Manage Messages. It has no remove action; use the prefix command .sticky remove to delete a channel record.

> **Dashboard settings without prefix commands**
>
> The Sticky editor also exposes minimum interval, ignore bots, and whether to delete the previous post; there are no prefix subcommands for these settings. Ignore bots is enabled by default. If you disable previous-post deletion, older publications may remain in the channel after activity.

## Use and content

> **Recommended use**
>
> Compact notices that stay easy to find without scheduling periodic posts.
>
> <ul>
>   <li>Short rules.</li>
>   <li>Support notices.</li>
>   <li>Reminders about help channels.</li>
> </ul>

> **Rich content**
>
> Choose text or an embed and add useful material for the community.
>
> <ul>
>   <li>Add an HTTPS image.</li>
>   <li>Add a link or button.</li>
>   <li>Use plain text when the channel does not need an embed.</li>
> </ul>

> **Dashboard**
>
> The Dashboard editor can change the message and its per-channel behavior.
>
> <ul>
>   <li>Edit the message.</li>
>   <li>Change the channel.</li>
>   <li>Preview it before enabling.</li>
> </ul>

## Related pages

* [Messages](/docs/en/server/messages.md)
* [Welcome](/docs/en/server/welcome.md)
* [Auto Responders](/docs/en/server/auto-responders.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.