Skip to content
All docs

Guides

Discord Sticky Message: Build a Free Sticky Bot

Set up a Discord sticky message with your own bot: automatically repost a notice so it stays at the bottom of a channel. Free, no code, spam-safe.

5 min read

A Discord sticky message is a notice that stays at the bottom of a channel no matter how fast the chat moves. Discord can pin messages, but pins hide behind an icon nobody clicks. A sticky message is always the last thing in the channel, so everyone actually sees it.

Discord has no native sticky feature, so a bot does the work: when new messages arrive, it deletes its previous copy of the notice and posts it again at the bottom. Here is how to build that with NoriaFlow: free, no code, on your own bot.

How a sticky message works

The classic pattern is delete-and-repost:

  1. Someone posts in the channel, pushing the sticky up.
  2. The bot deletes its old sticky message.
  3. The bot posts the same notice again. Now it is the newest message.

Two things keep this from going wrong:

  • A cooldown, so a busy channel gets at most one repost per interval instead of one per message.
  • A bot filter, so the reposted sticky doesn't trigger the workflow again and loop forever.

NoriaFlow can run this pattern for real: it has a Delete Message action, durable storage to remember the last sticky's message ID, and a Cooldown node.

What you'll build

Five nodes, one workflow:

  • Discord: Message trigger. Fires when someone posts in the channel.
  • Cooldown: limits reposts to one per 30-60 seconds.
  • Remember Data: stores the last sticky's message ID between runs.
  • Discord: Delete Message: removes the old sticky.
  • Discord: Send Message (or Send Embed): posts the fresh one.

Step-by-step setup

  1. Connect your Discord bot to NoriaFlow.
  2. Add a Discord: Message trigger. Pick your server, set Channel Filter to the channel that needs the sticky, and turn Ignore Bots on. This last switch matters: the reposted sticky is itself a message, and without the filter the workflow would react to its own repost in an endless loop.
  3. Add a Cooldown node after the trigger. Set Separate cooldown per to {{channel_id}} and the duration to 30 seconds. Leave the Blocked branch unconnected, during the cooldown, runs exit silently instead of reposting.
  4. Add a Remember Data node, operation Get field. Record key: sticky:{{channel_id}}, field: message_id. This reads the ID of the last sticky the bot posted (if any).
  5. Add an If / Else node checking whether that stored value exists. On the true branch, add a Discord action with Delete Message: same channel, and the stored ID as the Message ID. On the false branch (first run, nothing to delete), skip straight ahead.
  6. Connect both branches to a Discord: Send Message (or Send Embed for a nicer-looking card) containing your sticky text.
  7. Add a final Remember Data node, operation Set fields. Same key sticky:{{channel_id}}, and set the field message_id to the new message's {{message_id}} output from the Send node.
  8. Test the workflow, then click Activate.

One edge case: if a moderator deletes the sticky by hand, the Delete step will fail because the message is already gone. Set that node's On Error behavior to continue (or wire its error branch to the Send node) so the repost happens anyway.

Tuning the cooldown

The cooldown is the honest tradeoff every sticky bot makes. A shorter cooldown keeps the notice closer to the bottom but reposts more often; a longer one is quieter but lets the sticky drift a few messages up during busy moments.

  • 30 seconds: good default for most channels.
  • 5-10 seconds: very active channels where the notice must stay visible.
  • 5+ minutes: slow channels where reposting rarely matters.

During the cooldown window the sticky may briefly sit above a few new messages. That's normal. It reposts on the next message once the window ends.

Alternative: repost on a schedule

If delete-and-repost feels too chatty for your channel, there's a calmer variant: repost the sticky on a timer instead of on every message. Replace the Message trigger and Cooldown with a Schedule trigger (say, every hour), and keep the same Get → Delete → Send → Set chain. The notice won't hug the bottom of a fast chat, but it resurfaces predictably. A good fit for reminders and daily notices. See scheduled automation for how the Schedule trigger works.

Sticky message examples

Copy one and adjust the channel names:

  1. Reminder: read #rules before posting. Trading happens in #marketplace only.
  2. Posting format: [ITEM], [PRICE], [PAYMENT METHOD]. Posts without the format get removed.
  3. Before asking for help: check #faq and search this channel. Include your error message and what you already tried.
  4. We're hiring moderators! Apply in #applications: closes Friday.
  5. This channel is English-only. Other languages have their own channels in the sidebar.

Keep it to one or two lines. A sticky message that members have to scroll past works better when it can be read in a glance. Put long rules in their own channel and link to them. You can also store the text once with Remember Data and reuse it across workflows.

Start building

A sticky message is a five-node workflow: trigger, cooldown, remembered ID, delete, repost. Once it's active, it runs on your own bot (your name, your avatar) and it's free during NoriaFlow's open beta.

Start building free: or keep going with these guides:

Setup checks and next steps

  • Check the selected bot, server and destination channel. Role actions also require the bot role to sit above the role it changes.
  • Test with a dedicated channel or member before enabling this automation for everyone.
  • If a step fails, inspect its error and inputs rather than reconnecting every account.

See the extension setup guide for adding and reusing services, the node reference for parameters, and testing and debugging for execution diagnostics.

Frequently asked questions

How do I make a sticky message on Discord?

Discord has no built-in sticky feature. Pinned messages sit in a menu most members never open. You need a bot: it watches the channel, and when new messages push the notice up, it deletes its old copy and reposts it at the bottom. In NoriaFlow you build this with a Message trigger, a Cooldown, Remember Data, and Delete + Send Message actions.

What is a sticky message bot?

A sticky message bot keeps one message visible at the bottom of a channel. Every time the channel gets new activity, the bot removes its previous copy of the notice and posts a fresh one, so the notice is always the last thing members see.

How do I stop a sticky message bot from spamming?

Two guards: a cooldown and a bot filter. The cooldown limits reposts to at most one per interval (30-60 seconds works well), so a burst of chat doesn't produce a burst of reposts. The bot filter makes the trigger ignore bot messages, including the sticky itself, which prevents the bot from reacting to its own repost in a loop.

Is a sticky message the same as a pinned message?

No. A pinned message lives behind the pin icon at the top of the channel. Members have to click to see it. A sticky message is a normal message the bot keeps reposting at the bottom of the chat, so everyone scrolling the channel sees it without clicking anything.

Is there a free sticky message bot for Discord?

Yes. NoriaFlow is free during the open beta, and the sticky workflow runs on your own Discord bot. Your bot's name and avatar, not a shared branded bot. You build it once from five nodes and it runs automatically.