Skip to main content
Righteous

Prefix and slash commands

Why Righteous has two command surfaces, how to change the prefix your server answers to, and the two places the surfaces stop matching.

Righteous answers on two surfaces. A prefix command is a normal message (,help) read by the bot like any other message in the channel. A slash command is a Discord interaction, picked from the / menu, with the options filled in for you.

Neither is a lesser version of the other. Every gate is checked identically on both: permissions, fake permissions, cooldowns, role restrictions, per-channel disables and premium tiers all run through the same resolvers whichever surface you used. What differs is coverage: most commands are prefix-only, and that is a Discord limit rather than a choice.

Pick the surface that fits the moment

Slash is the safer instruction

A slash command's name never changes between servers. If you are writing staff instructions, a pinned message or a support reply, /help is true everywhere and ,help is only true in servers that use the default ,. Discord also shows you the options as you type them, so nothing is guessed.

Prefix is faster, and it is where the bot is widest

Most of Righteous lives on prefix only. Prefix commands take arguments as plain words, chain into subcommands without a picker, and cover the parts of the bot that never got a slash slot.

Examples on this site use the default

Every command written here with a comma is showing the default prefix, not a fact about your server. Check yours with ,prefix list.

Know why most commands are prefix-only

Discord caps an application at 100 root slash commands. Not 100 subcommands: 100 top-level entries in the / menu. Righteous sits close to that ceiling, and going over it does not fail gracefully: Discord rejects the entire deploy rather than the one command that pushed it over.

That cap is why the slash surface is shaped the way it is. A leaf inside an existing command costs zero root slots, so commands get folded into groups rather than given slots of their own:

Prefix commandWhere it lives on slash
,reddit, ,twitter, ,tiktok, ,youtube, ,soundcloud/links
,donate, ,inviteme, ,botinfo, ,servers/about
,play, ,skip, ,queue, ,volume/music
,restrict, ,unrestrict/command restrict, /command unrestrict
,reroll/giveaway reroll
,welcomemessage, ,goodbyemessage, ,boostmessage/messages

A handful of commands have no slash form at all, and a handful of slash leaves have no prefix twin. Each command's reference page says which surfaces it has, so that page is the authority rather than this list.

Change what your server answers to

A server holds more than one prefix

Prefixes are stored per server, and a server answers to several at once. Out of the box Righteous listens for the double comma ,, and the two words jason and righteous, which is why a brand-new server does not answer to , until somebody sets it.

Set the one your server uses

Syntax

,prefix set <prefix>

Example

,prefix set ,

set replaces the primary prefix and leaves the rest of the list alone. So after ,,prefix set , your server answers to , and still answers to jason help and righteoushelp.

CommandWhat it doesWho can run it
,prefix set <prefix>Replaces the primary prefixManage Server
,prefix listShows every prefix the server acceptsManage Server
,prefix resetRestores the shipped defaultsManage Server
,prefix add / removeAdds or drops an extra prefixBot developer only, today

Changing the prefix does not change the slash commands

/help works whatever your server's prefix is. If you set an unusual prefix and people stop being able to talk to the bot, the slash menu is the way back.

The word prefixes are the way back in

jason and righteous survive a ,prefix set, so they keep working whatever symbol the server lands on, which makes them the reliable way in when nobody remembers what the symbol was changed to. righteous prefix list answers, and ,prefix reset restores the shipped defaults.

Matching is case-insensitive, and a prefix does not need a space after it: righteoushelp and righteous help both work.

Run your now-playing with no prefix at all

If you have any premium tier, including the free Boosting Premium, you can type <yourname>fm with no prefix at all and Righteous runs ,np.

Syntax

<yourname>fm

Example

jasonfm

What the trigger is built from

Righteous builds a candidate from three names and accepts any of them: your Discord handle, your global display name, and your server nickname in this server. Each is lowercased and stripped of anything that is not a letter, digit or underscore, so Jason ✿ becomes jason and the trigger is jasonfm.

Three rules decide whether it fires:

  • Exact first-word match only. jasonfm runs it; jasonfmoo does not. Anything after the trigger is passed to ,np as arguments.
  • A name shorter than two characters is skipped, so a one-letter nickname cannot turn a common word into a live command.
  • A trigger that collides with a real command or alias is skipped, so nicknaming yourself something that would shadow the bot does nothing.

Buying your own trigger word

Self Premium adds an arbitrary word on top:

Syntax

,lf cc <trigger | reset>

Example

,lf cc meow

,lf cc is additive, not a replacement. Setting meow means both meow and <yourname>fm work. ,lf cc reset clears the custom word and your name trigger keeps working.

Give a command your own name

Server Premium unlocks per-server aliases: a second name for an existing command, optionally with arguments baked in.

Syntax

,alias add <name> <command> [arguments...]

Example

,alias add yeet timeout {0} 1d

{0}, {1} and so on are what the caller types. ,yeet @someone then runs ,timeout @someone 1d. ,alias needs Manage Server as well as Server Premium, and it has add, edit, remove, list, view, search and clear.

An alias is a second name, never a second door. Everything downstream keys on the real command, so an alias is refused by exactly the code that refuses the command it points at: the same permissions, the same cooldown, the same restrict and disable rows. A real command always wins a name collision, and ,alias list marks any row that has been shadowed that way.

Aliases pause on lapse rather than being deleted

The tier is re-checked on every invocation. If Server Premium lapses, aliases stop firing immediately, but the rows are kept, so they all work again the moment the server is premium again. Nothing is lost.

Understand why a command can appear twice

Discord serves a server the global command set and that server's guild-scoped set side by side, and does not deduplicate them. While both registries hold a command, Discord shows both entries: same name, same description, twice in the picker.

A global slash deploy takes about an hour to propagate. A guild deploy is instant, which is what makes it useful for testing, and the cost of that is doubles in the one server being tested until the global deploy catches up and clears the scoped copy.

This is inherent to how Discord serves the two registries, not a bug in the bot and not something a server can fix from its side. Running either entry does the same thing. If you see doubles, wait for the global deploy to land.

Two places the surfaces stop matching

The gates are shared, but the keys they look things up by come from the prefix side. Two consequences are worth knowing.

A disable row is keyed on the prefix name

,command disable stores the canonical prefix command name, and the slash path looks up that same name, so disabling a command covers both surfaces automatically.

Where it stops covering is a command whose slash home is a leaf under a different parent. The key for a slash leaf is "parent sub", so /giveaway reroll is stored as giveaway reroll, not as reroll. Disabling ,reroll leaves the slash leaf running.

Syntax

,command disable <#channel|all> <command> [subcommand]

Example

,command disable all giveaway reroll

Note the order: the channel comes first, then the command. all in that slot means every channel, including channels created later.

A remapped slash sub name cannot be matched

A few commands present a different sub name on slash than on prefix: /lastfm top, /channelmute, /messages and /serverimage are the current ones. Their two-token keys do not line up, so a subcommand-level disable or restrict written against the prefix name does not reach the slash leaf. Disable the parent command instead if you need it off everywhere.

Common issues

The bot ignores ,help but /help works. Your server is not on ,. A brand-new server ships listening for ,, and the words jason and righteous: try ,,help or jason help. Then run ,,prefix set , once and every example on this site works verbatim.

Nothing at all answers, on either surface. That is not a prefix problem. Check the bot's View Channel and Send Messages on that channel, and see Access and the whitelist: a server without access keeps the bot but refuses its commands.

,prefix list says "Missing permissions". It needs Manage Server, the same as every other prefix subcommand. Ask a moderator to run it.

Every command shows up twice in the slash picker. Both Discord command registries hold it. See Understand why a command can appear twice: it clears itself once the global deploy propagates.

<yourname>fm does nothing. It needs a premium tier: boosting the support server is enough, and free. It also needs your name to survive stripping: a handle made entirely of punctuation or emoji leaves nothing to build a trigger from. Set a word with ,lf cc if you hold Self Premium.

An alias stopped working overnight. Server Premium lapsed. The rows are still there and start firing again as soon as it is renewed.