The complete command table
48 user-facing slash commands — 16 public, 2 group-admin, 30 owner-or-staff — plus the bare-uppercase STOP and UNDO keywords and an unbounded set of per-bot dynamic commands. 5 further slash spellings are Memescale platform-admin or fleet-operator tooling and are excluded entirely.
How this table works
Every built-in command is matched by one regular expression, ^/?(?:name)(@\w+)?(\s|$), case-insensitive (cmd_re, scripts/telegram/utils/commands.py:25-26). The leading slash is optional, an @<botusername> suffix is accepted, and case never matters, unless a row below says the slash is required — a minority of built-ins are matched by a hand-written pattern instead of cmd_re, and a few of those also refuse the @bot suffix.
cmd_re(name) — the default pattern
^/?(?:name)(@\w+)?(\s|$)The five columns
| Setting | Value |
|---|---|
| Command | The spelling(s) that trigger it, with its aliases and whether @<botusername> and the leading slash are required or optional. |
| Who | Who the code allows to send it and have it act. “Owner or staff” means the bot’s Memescale owner, pinned by their first /start, or a Memescale platform-admin username — never a Telegram group’s own admins by that role alone. |
| Chats | Which chat types the route itself accepts: DM (private), group (group + supergroup), or any. |
| Menu scope | Where the command is suggested in Telegram’s own / autocomplete list — never where it merely works. |
Menu-scope legend
| Menu scope value | Telegram scope | Meaning |
|---|---|---|
| private | all_private_chats | Suggested in every DM with the bot. |
| group | all_group_chats | Suggested in every group and supergroup. |
| admin | all_chat_administrators | Suggested only to that chat’s Telegram admins. |
| owner overlay | a per-chat / per-user override | Suggested only to the bot’s owner or Memescale staff, layered on top of whichever default scope they’d otherwise see. |
| none | — | Never suggested anywhere. Works when typed from memory; Telegram never autocompletes it. |
A chat that isn’t authorized for the bot at all gets an empty command menu pushed deliberately, regardless of any row below — see Groups and access, chapter 1.2.
Platform-admin commands are not documented here
5 further slash spellings are Memescale platform-admin or fleet-operator tooling, restricted to platform staff or two hardcoded usernames in one hardcoded chat:
/newbot,/topicid,/updatepfp,/id,/fleet. They are intentionally excluded from the table below.
Public commands
16 spellings, subject to whatever authorization or toggle each row states — “public” describes who the code lets try, not that every attempt succeeds.
16 public spellings, 14 rows (2 rows carry an alias)
| Command | Who | Chats | Menu scope | What it does |
|---|---|---|---|---|
/start (@bot ok, slash required) | Anyone — DM only | private | none | Owner or staff: opens the /menu card (prefixed, on the very first run only, with the notifications-on message). Anyone else: Hi, I'm <bot name>. |
/authorize (@bot ok, slash optional) | Anyone sends it; only an owner/staff send actually authorizes | any | none | Owner or staff: authorizes the current chat. Anyone else: silently recorded as discovered — no reply either way for them. |
/holders (@bot ok, slash optional) | Anyone — no authorization check | any | group + admin, once configured | Live holder count for the bot’s configured token. |
/getid (@bot ok, slash optional) | Anyone; an owner/staff send also authorizes the chat | any | none | Replies with the chat’s numeric id and records the chat as discovered. |
/mycalls (@bot ok, slash optional) | Anyone with a real Telegram user id | any | none | The sender’s own scanner call history on this bot. |
/viewallcalls (@bot ok, slash optional) | Anyone in the group | group | none | Every call made in the current group. |
/leaderboard [window] (@bot ok, slash optional) | Anyone in the group | group | none | Caller leaderboard for the current group, optionally windowed to 1d / 7d / 30d. |
/raid <tweet> <goals> (@bot ok, slash required) | Owner/staff in any chat; a DM-authorized username in a DM; any member of an allowed group | DM, group, supergroup — is_authorized decides which | none | Posts a tweet-engagement raid board. |
/newpack, /emojipack (@bot ok, slash required) | Any member of an authorized group; owner/staff or a DM-authorized username in a DM | DM, group, supergroup | private + group (/emojipack itself: none — alias only) | Opens the emoji-pack wizard: a 3D coin, or — with premium emoji already pasted in the same message — a static pack of exactly those. |
/staticemoji (@bot ok, slash required) | Same authorization as /newpack | DM, group, supergroup | none | Opens the static (non-3D) emoji-pack wizard directly. |
/mypacks (@bot ok, slash required) | Same authorization as /newpack, with no DM-resolvable prerequisite | DM, group, supergroup | private + group, while the packs toggle is on | Lists the sender’s saved emoji packs, 10 per page. |
/presets (@bot ok, slash required) | Anyone — no owner, admin or authorization check at all | any | none | Opens the inline preset picker for the next photo sent or replied to. |
/cancelpresets (@bot ok, slash required) | Anyone cancels their own run; platform staff cancel anyone’s | any | none | Cancels an in-flight Try All / Random N preset batch in the chat. |
/download, /mp3 (@bot ok, slash required) | Anyone in an authorized chat | any | private + group + admin, while social_dl_enabled (listed as download only — /mp3 never appears in the menu) | Sends a 45-second hint to paste a SoundCloud or YouTube link. The actual download is a passive link match, not this command — /download <link> and /mp3 <link> work because the message already contains the link. |
Group-admin commands
Both exist only once Admin Moderation is switched on in the dashboard — off by default. The route itself is always registered; with the toggle off, moderate() returns before doing anything, and the route has already consumed the message — so a disabled /ban or /mute is silent, not an error.
| Command | Who | Chats | Menu scope | What it does |
|---|---|---|---|---|
/ban (@bot ok, slash required) | A Telegram admin of that specific group, checked live — not the bot’s owner/staff by that role alone | group | admin, while the moderation toggle is on | Bans the replied-to or @-mentioned target and purges their tracked message history in the group. |
/mute (@bot ok, slash required) | Same as /ban | group | admin, while the moderation toggle is on | Restricts the target from sending anything and from group-management actions, for 24 hours. There is no /unmute. |
Owner-or-staff commands
30 spellings, 24 rows. Every command below shares one gate: the bot’s Memescale owner or a Memescale platform-admin username — never a Telegram group’s own admin standing, in any group. A non-owner sending one of the buy-bot commands gets no reply at all; tapping a buy-bot button as a non-owner gets the alert Owner / admins only.
General
8 rows, 10 spellings
| Command | Who | Chats | Menu scope | What it does |
|---|---|---|---|---|
/showlimits (@bot ok, slash optional) | Owner or staff | private — DM only | none | HTML list of every blocked user and every rate-limited user configured for the bot. |
/whichport (no @bot, slash required, exact match only) | Owner or staff | private — DM only | none | Reports the GPU bridge’s port and a live health probe. |
/whichlora (no @bot, slash required, exact match only) | Owner or staff | private — DM only | none | One two-line block per character: its LoRA file and whether it’s currently loaded on the GPU. |
/whoisactive (@bot ok, slash optional) | Owner or staff | any | none | Live probe of what the GPU is generating right now and what’s queued behind it. |
/menu, /options, /help (@bot ok, slash optional) | Owner or staff | any | none | Opens the settings card: feature toggles and Manage Groups. Telegram group admins cannot open it. |
/showrefs [trigger] (@bot ok, slash required) | Owner or staff | any | none | Posts the character’s stored reference images (up to 4) with a Delete button per image. |
/addrefs [trigger] (@bot ok, slash required) | Owner or staff | any | none | Adds a reference image, up to 4 per character, from an attached or replied photo, or prompts and waits for one. |
/forkbuybot [paste] (@bot ok, slash required) | Owner or staff | Private, group, supergroup | none | Forks another bot’s buy post — text, formatting and media — into this bot’s buy-bot layout. Writes body text, size emoji and media only; never enables the bot and never adds a group. |
Buy bot
16 rows, 20 spellings — one gate, buybotctl.py’s is_owner(...), no chat-type restriction on any of them
| Command | Who | Chats | Menu scope | What it does |
|---|---|---|---|---|
/enablebuybot (@bot ok, slash required) | Owner or staff | Group, DM | none | Turns the buy bot on. In a group: authorizes that group and adds it as a posting target (max 10). Asks for the contract address first if none is set. |
/minbuy <amount> (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the minimum USD buy size that gets posted. |
/buyemoji <emoji> (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the emoji used in the buy-size row — premium or plain. |
/buybotimage (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the buy media (image, GIF or video) — attach it, or send it as the next message. |
/buybotgroups (@bot ok, slash required) | Owner or staff | Group, DM | none | Opens the buy bot’s own group-target picker — separate from Manage Groups. |
/buybotsettings, /buybotmenu, /buybot (@bot ok, slash required) | Owner or staff | Group, DM | owner overlay — the only user-facing command listed there | Opens the full settings card: on/off, groups, min buy, emoji, media, links, token, fork or view the layout. |
/buybothelp, /buybotcommands (@bot ok, slash required) | Owner or staff | Group, DM | none | Sends the plain-text command list (HELP_TEXT) — it omits /buybotdiscord, /buybotdocs, /buybotmedium, /buybotreddit and /buybotgithub, all five of which work like the other link commands. |
/repeatlastbuy (@bot ok, slash required) | Owner or staff | Group, DM | none | Reposts the last recorded buy through the current layout, media and emoji. |
/buybotwebsite (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the website link. |
/buybotx, /buybottwitter (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the X (Twitter) link. |
/buybottelegram (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the Telegram link. |
/buybotdiscord (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the Discord link. |
/buybotdocs (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the docs link. |
/buybotmedium (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the Medium link. |
/buybotreddit (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the Reddit link. |
/buybotgithub (@bot ok, slash required) | Owner or staff | Group, DM | none | Sets the GitHub link. |
STOP, UNDO, and dynamic commands
STOP and UNDO
| Command | Who | Chats | Menu scope | What it does |
|---|---|---|---|---|
STOP (bare, uppercase, no slash) | Owner or staff | private — DM only | none — not a slash command, so Telegram can never list it | Disables owner notifications until /start re-arms them. |
UNDO (bare, uppercase, no slash) | Owner or staff | private — DM only | none | Reverts the single most recently remembered change to Command Changes or Rate Limits & Blocks notifications — as shipped, nothing arms this, so it always replies No recent notification changes to undo. |
Both are matched as the exact message text, case-insensitively, with nothing else in it — stop, Stop and STOP all match; STOP please does not.
Dynamic commands
Every bot also carries commands with no fixed spelling, sourced from that bot’s own memebot.json and matched with the same slash-optional shape as the built-ins:
Per-bot dynamic commands
| Kind | Source | Cap | Matches |
|---|---|---|---|
| Character triggers | characters[].triggerCommand, for each enabled character | 4 per bot — MAX_CHARACTERS_PER_BOT; over the cap, saving a new one fails with @<bot> is at the 4-character cap | ^/?<trigger>(@<botusername>)?$ — first word only |
| Text commands | textCommands[] with isActive | No cap on count | ^/?<trigger>(@<botusername>)?(\s|$) |
| Button commands | buttonCommands[] with isActive | No cap on count | same pattern as text commands |
Text and button commands share one trigger namespace with each other and with character triggers — a trigger can’t be reused across the three. Every fixed built-in above is matched first, at the router; a custom command of the same name never gets a turn. None of the three are gated by the group allowlist on their own — see below.
Two cross-cutting facts
The group allowlist (allowedGroups) is not one gate for the whole bot — each feature that cares checks it independently, at its own call site, and several (/holders, /presets, /cancelpresets, text and button commands, the scanner, the calls commands) never check it at all. The buy bot keeps an entirely separate posting-target pool, bots[].buyBot.targetGroupIds, capped at 10 — distinct from the allowlist, which has no cap anywhere.