Documentation
Octera works with slash commands (/command) and text commands using your server prefix (default .). Almost everything is also configurable from the web dashboard.
.help <command> (e.g. .help ban, .help eco) for what a command does plus real examples — or .help <category> for a whole section. <command> help still works too.Premium servers: the dashboard's Premium page (sidebar → Settings) shows the server's subscription at a glance — the plan, the renewal date, and who pays — with upgrade and manage buttons in the same place.
Prefix & help
.help timeout/prefix set: ?/disable economy music warnModeration
/timeout @user 10m spammingall wipes the channel (and locks it while it clears if it's large), a number deletes that many recent messages, or a time span (e.g. 7d, 2mo) deletes that window. Add a user to only delete their messages. Note: Discord won't let bots bulk-delete messages older than 14 days..purge 50 · .purge 2mo · .purge allSecurity
/lockdown end lifts it and restores everything./lockdown allHeat tracking, raid & join-gate filters, verification and captcha are configured on the dashboard.
Leveling
Economy
.games still works as a shortcut.).buy lucky coin 3Roles & members
/role add roles:@VIP @Booster user:@someone duration:7dAutomation
Automations (dashboard → Utilities → Automations) are "when this happens, do that" rules: pick a trigger (a message is posted, a reaction is added, a member joins, a role is added or removed), add optional conditions (channel, role, keywords, account age), then run up to 5 actions in order — send a message or DM, add or remove a role, react, delete the message, or start a thread. Start from ready-made templates like Welcomer, Keyword auto-reply and Auto-thread — up to 50 per server, free.
Auto Send (dashboard → Utilities → Auto Send) posts a recurring message on an interval or daily at a set UTC time — pick the weekdays it runs, add an optional send window, turn on flood control (skips a send while the bot's last message is still newest), or send it as an embed.
Birthdays
MM-DD or YYYY-MM-DD. Add the year if you want your age celebrated./birthday set 10-12 · /birthday set 1993-12-16Turn on announcements on the dashboard (Utilities → Birthdays): pick the channel, customize the message and optionally hand out a birthday role for the day.
Achievements
Set them up on the dashboard (Achievements): turn the feature on to get a ready-made starter set, then add your own — single or tiered Bronze → Diamond goals across messages, reactions, voice time, threads, boosts, giveaway entries, shop purchases and birthdays, each with optional role rewards and unlock announcements.
Invites
/invites user member: @friendTune it on the dashboard (Invites): ignore brand-new accounts as fakes and hand out reward roles automatically at invite milestones.
Giveaways
/giveaway create for a step-by-step wizard./giveaway start duration: 1d prize: Nitro winners: 2The dashboard's Giveaways editor goes further — schedule or repeat giveaways, set entry requirements and bonus entries, hand out winner roles, customize the embed and save presets.
Tickets
Create ticket panels on the dashboard (Tickets module). Members open a ticket from the panel button; staff claim and close it. On close, a transcript is saved and posted, with a View Online Transcript link to read it in the browser.
Utility
/voice rename name: Gaming · /voice lockTemporary voice channels (dashboard → Utilities → Voice) are join-to-create: pick one or more hub voice channels, and members who join one get their own channel next to it — deleted automatically when it empties.
Operator-only: /nuke channels, /nuke category and /restart are maintenance commands hard-locked in code to the bot operator — server staff can't run them.
Notifications
Get alerts when a creator posts. On the dashboard (Socials) add feeds for YouTube, Twitch, Kick, TikTok, Reddit (a subreddit's new posts), Podcast (new episodes from a show's RSS feed) or any Custom RSS URL — Octera posts new uploads, posts, episodes and go-lives to the channel you choose, with a custom message.
Music
Play music in a voice channel with a clean queue — no extra bot to invite. (Premium.)
Search for a song by name, or paste a link — SoundCloud, Bandcamp, a podcast, an internet radio station, or a direct audio URL. Octera reads most audio sites, and tells you where a track came from.
YouTube isn't available. YouTube blocks playback requests coming from hosting providers, which is where every Discord bot runs — so YouTube links are declined rather than played. Searching by name still works and plays from the sources above. Spotify and Apple Music links can't be played by any bot, because their audio is encrypted; send the song's name instead.
.queue and .pause still work.)Translation
Members who don't share a language can talk in the same channel. Nobody has to do anything differently: whoever wants to read a message reacts to it with the flag of their language, and Octera posts it in that language underneath.
/translate text text: where is the meeting to: Spanish/translate live from: Chinese to: EnglishFlag reactions. React to any message with a flag Octera recognises and it replies with the translation. Several people reacting with the same flag still only produces one reply, and reacting with anything else does nothing.
Whole channels. On the dashboard you can pick a channel and the languages spoken in it, up to five. Octera works out which way round each message needs to go on its own, so a Spanish speaker and an English speaker can just talk. A message already in one of the listed languages is never repeated back in its own language. That suits a channel permanently split between languages; for anything occasional the flag reactions are far cheaper.
Live translation. For one person joining a conversation they do not speak. They run /translate live once and everything they type is posted in the other language as well, until they run /translate off or go quiet. A server owner can turn this off on the dashboard.
Translation runs on an outside translation service, so a server owner sets it up once on the dashboard's Translation page. Until a service is connected the page says so plainly and nothing translates. Repeat translations of the same message are served from cache and cost nothing, and you can set a monthly character limit for the whole server.
Backups
Snapshot your server's structure — roles, channels, permissions and settings — from the dashboard. A restore re-creates anything missing without deleting what's already there. Backups never include messages or chat history.
Guide: message variables
Anywhere Octera writes a message you can drop in a variable — a short {name} placeholder that fills itself in when the message actually sends. They work in welcome and goodbye messages, embeds, autoresponders, tags, auto-send, reaction-role panels, ticket panels and more — the same names everywhere.
Welcome {user.mention} to **{server}** — you're member #{server.members}!
Write them with a dot or with parentheses; both are the same: {user.name} = {user(name)}.
The member
| Variable | Fills in with |
|---|---|
| {user} | Their name |
| {user.mention} | A real @ping |
| {user.name} | Their username |
| {user.nick} | Their nickname in this server (their username if they have none) |
| {user.id} | Their Discord ID |
| {avatar} | Their profile picture — drop this in an image or thumbnail slot |
| {user.color} | Their name colour, e.g. #a93bf0 |
| {user.top_role} | Their highest role's name |
| {user.joinstamp} | When they joined, as a timestamp number |
| {user.timestamp} | When their account was created, as a timestamp number |
{target} works the same way for the first person @mentioned in a command (falling back to whoever ran it) — handy in tags: {target.mention}, {target.avatar}.
The server & channel
| Variable | Fills in with |
|---|---|
| {server} | Server name |
| {server.members} | Member count |
| {server.ordinal} | Member count as a place — “42nd” |
| {server.icon} | The server icon — usable in an image or thumbnail slot |
| {server.id} | Server ID |
| {server.description} | The server description |
| {channel} | Channel name |
| {channel.mention} | A clickable #channel link |
Pictures from variables
Image, thumbnail, author-icon and footer-icon slots accept a variable instead of a link — so a welcome embed can show the new member's own avatar:
{avatar} in the thumbnail slot of a welcome embed and every joiner sees their own picture in the corner. {server.icon} works the same way.Each of those slots also takes a normal https:// link, or an Upload… straight from your computer — Octera stores the picture and uses a permanent link, so it keeps working forever.
Good to know
- A variable that doesn't exist is left to the closest match rather than erroring — if something prints oddly, check the spelling against the tables above.
- Variables are filled in when the message sends, so a preview in the dashboard shows the raw
{name}text. - Tags and custom commands add logic on top of these — see building tag commands.
Running your server: Discord quirks worth knowing
A few things in Discord behave in ways that look broken but aren't — they catch out almost every server owner at some point. None of these are caused by Octera; the fixes are all in Discord's own settings.
A username is showing the wrong colour
Discord colours a name using the highest role that has a colour. A role set to Default (no colour) is meant to be skipped, so a colourless role you keep at the top — usually to show yourself separately in the member list — should leave the colour to a lower role.
Sometimes it doesn't. Discord holds on to a role's old colour data even after the role reads as colourless, so the name stays stuck on the wrong colour.
Force Discord to re-read the role:
- Open Server Settings → Roles, pick the affected role, and go to Display.
- Set it to Solid, choose any visible colour, and save.
- Reopen the same role, set it back to Default (no colour), and save again.
- Press Ctrl + R to reload Discord.
The role now registers as genuinely colourless: it stays at the top and keeps showing members separately, and the next role down with a colour takes over the name colour.
The owner crown disappeared next to your name
The crown vanishes when one of your roles has both of these switched on at once:
- Administrator permission, and
- Display role members separately from online members.
To keep your own role hoisted and get the crown back:
- Open Server Settings → Roles and pick your hoisted personal role.
- Turn Administrator off for that role — leave Display role members separately on.
- Press Ctrl + R to reload Discord.
Guide: building tag commands
Tags are custom prefix commands you write yourself, powered by TagScript — a tiny templating language with variables, logic, math, randomness, and control blocks (delete the trigger, DM the reply, react, gate by role, attach an embed, and more). Every message variable works here too.
Create a tag
Use /tag (or the dashboard → Utilities → Tags). Give it a name and content. Members run it with your prefix, e.g. .rules.
/tag name: hello content: Hey {user(mention)}, welcome to {server(name)}! 👋
Running .hello → Hey @You, welcome to Octera! 👋
Variables
Every message variable works in a tag — {user.mention}, {server}, {avatar} and the rest. Tags add a few of their own:
| Variable | Gives you |
|---|---|
| {args} | Everything typed after the command. {args(1)} = first word, {args(2)} = second… |
| {target(mention)} | The first @mention in the message (else whoever ran it) — same attributes as {user} |
| {uses} | How many times the tag has run |
| {unix} | Current unix timestamp |
Logic, math & randomness
| Block | What it does |
|---|---|
| {if(a==b):yes|no} | Conditional. Operators: == != > < >= <= |
| {any(a==b|c==d):yes|no} | any/or and all/and across several conditions |
| {math:2*(3+4)} | Arithmetic (+ - * / % ^) |
| {random:a~b~c} | Pick one at random (separate with ~ or ,) |
| {range:1-100} | Random whole number in a range |
| {=(name):value} | Set a variable; read it later with {name} |
| {lower} {upper} {replace(a,b):text} {length:text} | Text helpers |
Control blocks (side-effects)
| Block | Effect |
|---|---|
| {delete} | Delete the message that triggered the tag |
| {dm} | Send the reply to the runner's DMs instead |
| {react:✅,🎉} | React to the reply · {reactu:✅} reacts to the trigger |
| {redirect:#channel} | Send the reply to another channel |
| {require(@Role)} / {blacklist(@Role)} | Only / never allow these roles or channels to use the tag |
| {embed(title):Hi}{embed(description):...} | Build a rich embed (title, description, color, image, thumbnail, footer, field) |
| {silent} | Run the tag's side-effects without sending text |
Worked examples
Suggestion box — deletes the command, posts a clean embed in a channel:
{delete}{redirect:#suggestions}{embed(title):💡 Suggestion from {user(name)}}{embed(description):{args}}{embed(color):#a855f7}
Coin flip with reactions:
{user(mention)} flips… **{random:Heads~Tails}**! {react:🪙}
Staff-only announce — gated by role, DMs nobody, posts to a channel:
{require(@Staff):You can't use this.}{redirect:#announcements}📢 {args}
Personalized welcome using a mention target:
{=(msg):Welcome {target(mention)} — you're member #{server(member_count)}!}{if({args}==):Mention someone to welcome them.|{msg}}