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 Noria — free, no code, on your own bot.
How a sticky message works
The classic pattern is delete-and-repost:
- Someone posts in the channel, pushing the sticky up.
- The bot deletes its old sticky message.
- 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.
Noria 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
- Connect your Discord bot to Noria.
- 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.
- Add a Cooldown node after the trigger. Set Separate cooldown per to
{{channel_id}}and the duration to30seconds. Leave the Blocked branch unconnected — during the cooldown, runs exit silently instead of reposting. - 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). - 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.
- Connect both branches to a Discord — Send Message (or Send Embed for a nicer-looking card) containing your sticky text.
- Add a final Remember Data node, operation Set fields. Same key
sticky:{{channel_id}}, and set the fieldmessage_idto the new message's{{message_id}}output from the Send node. - 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:
Reminder: read #rules before posting. Trading happens in #marketplace only.Posting format: [ITEM] — [PRICE] — [PAYMENT METHOD]. Posts without the format get removed.Before asking for help: check #faq and search this channel. Include your error message and what you already tried.We're hiring moderators! Apply in #applications — closes Friday.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 Noria's open beta.
Start building free — or keep going with these guides:
- Build a Discord poll bot with buttons and automatic result announcements.
- Schedule recurring messages for reminders that post on a timer.