Skip to Content
Nextra 2 Alpha
DocumentationBuy BotCommands and the settings card

Commands and the settings card

Every buy bot command, every button on the settings card, and the state the bot holds while it waits for an answer.

Command reference

Commands are case-insensitive and accept the /command@botname form. /buybothelp is not a complete list of what works — its built-in text omits /buybotdiscord, /buybotdocs, /buybotmedium, /buybotreddit and /buybotgithub, all five of which work exactly like the other link commands. The table below is complete: 17 commands, 21 spellings once aliases are counted.

CommandAliasesChatsWho may send itWhat it does
/enablebuybotGroup, DMOwner / adminsTurns the buy bot on. In a group: authorizes that group and adds it as a target (up to 10). Asks for the contract address first if none is set.
/minbuy <amount>Group, DMOwner / adminsSets the minimum buy in USD. Takes the amount inline (/minbuy 20, $20) or opens a prompt.
/buyemoji <emoji>Group, DMOwner / adminsSets the size-row emoji — premium or plain. The first emoji in the message wins.
/buybotimageGroup, DMOwner / adminsSets the buy media. Attach an image, GIF or video to the command, or send it as the next message.
/repeatlastbuyGroup, DMOwner / adminsReposts the last recorded buy through the current layout, media and emoji.
/buybotgroupsGroup, DMOwner / adminsOpens the Manage Groups picker.
/buybotsettings/buybotmenu, /buybotGroup, DMOwner / adminsOpens the settings card.
/buybothelp/buybotcommandsAny chatOwner / adminsSends the plain-text command list (incomplete — see above).
/buybotwebsiteGroup, DMOwner / adminsSets the website link.
/buybotx/buybottwitterGroup, DMOwner / adminsSets the X (Twitter) link.
/buybottelegramGroup, DMOwner / adminsSets the Telegram link.
/buybotdiscordGroup, DMOwner / adminsSets the Discord link.
/buybotdocsGroup, DMOwner / adminsSets the docs link.
/buybotmediumGroup, DMOwner / adminsSets the Medium link.
/buybotredditGroup, DMOwner / adminsSets the Reddit link.
/buybotgithubGroup, DMOwner / adminsSets the GitHub link.
/forkbuybotPrivate, group, supergroupOwner / adminsForks another bot’s buy post — text, formatting and media — into this bot’s layout. Writes body text, size emoji and media only; never enables the bot, never adds a group.

“Owner / admins” means the bot’s Memescale owner or a Memescale platform admin — never a Telegram group admin, regardless of that admin’s standing in the group where the command is sent.

None of these commands appear in the bot’s default command menu. /buybotsettings alone is menu-listed, for the owner / Memescale admins only, through Telegram’s per-user command scopes.

The prompt state machine

A command sent without its value — /minbuy alone, /buyemoji alone, a link command with nothing after it — opens a prompt instead of failing. The state lives in a per-chat pending entry: a kind (minbuy, emoji, image, link, token, chain, gca, wz, wzlink, wzca, wzmedia, wzemoji, socials, soclink, and the group picker’s own kind), a timestamp, and whatever context the prompt needs.

Rules

SettingValue
What answers itThe owner’s very next message in that same chat — text, or a photo/video/GIF where media is expected.
Timeout600 seconds (10 minutes). A message that arrives after that is treated as a fresh, unrelated message.
Survives a restartYes — pending prompts are stored in the bot’s persisted state, not memory.
A stranger’s messageLeft alone. It neither answers nor cancels the prompt.
When the owner’s message is deletedOnly after it is fully processed — the download, the dashboard write and the card redraw all finish first. The bot never replies to a message it is about to delete.
An unrecognized messageLeft alone if the handler doesn’t take it — for example, chatter while a card is waiting on a button tap.

A card waiting on a button tap (the wizard, the socials card, the random-media confirm) does not treat a text message as its answer — sending a second file re-asks the same question instead of ending it.

Limits

SettingValue
Prompt timeout600 seconds (10 minutes)
Settings write timeout20 seconds
Fork dispatch timeout45 seconds
Target groups10 maximum
Group-title rescanat most every 300 seconds; immediate on the command itself and on Refresh
Contract address length acceptedup to 160 characters

The settings card

Opened by /buybotsettings, /buybotmenu or /buybot. The card is one message; every button either edits it in place or turns it into a prompt that redraws it once answered.

Card text

Five lines, in order:

  • $SYM Buy Bot ON ✅ / Buy Bot OFF ❌ — the ✅ rides as a premium emoji from the card’s own pack, falling back to a plain ✅ if Telegram refuses custom emoji on this bot.
  • Groups: <titles> / Groups: none yet
  • Buy media: … — present only while random gallery mode is on. A fixed picture is the card’s own attached media and needs no line.
  • Token: $SYM on <Chain> / Token: <truncated address> / Token: not set
  • Layout: custom (forked/edited) / Layout: default

Card text, worked

InputOutput
enabled=true, symbol=DOGE, groups=[“Doge Fam”], chain=ethereum, hasBody=false, imageMode=fixed$DOGE Buy Bot ON ✅ Groups: Doge Fam Token: $DOGE on Ethereum Layout: default

Built from _summary_text in buybotctl.py. The media line is skipped here because the mode isn’t random.

Buttons

LabelOpens / does
Manage GroupsOpens the group picker — see below.
Min Buy: $<n>Prompt: Send the minimum buy in USD, e.g. 20. Confirms with Min buy set to $<n> ✅ shown to 2 decimal places, e.g. $20.00 — the button itself drops decimals on whole numbers ($20), the confirmation line never does.
Buy Emoji <glyph>Prompt: Send the emoji for the buy row (premium emoji work too). Confirms with Buy emoji set ✅ — it repeats with the size of each buy. The button carries the emoji itself: a premium emoji rides as the button’s own icon; a plain glyph (or a premium one Telegram refuses to show as an icon on this bot) appears appended to the label instead.
Buy MediaPrompt: Send me the new image, GIF, or video. While random gallery mode is on, this first asks to confirm switching it off — see the wizard’s random-media confirm.
Update SocialsTurns the card into the post-fork wizard’s links step, for the slots the card already lists (the layout’s own slots, plus any slot that already has a link, plus website / X / Telegram always) — see The post-fork wizard.
Token: $<SYM> / TokenPrompt: Paste the token's contract address. Runs the same DexScreener lookup and confirm card as setup. If DexScreener’s listing differs from what’s currently set for any slot the layout uses, the socials card follows.
Fork a LayoutTurns the card into a hint: Send /forkbuybot and paste another bot's buy post (or forward it, image included) — I'll keep its emoji and layout and fill in your token's live numbers. Edit it any time on memescale.ai/dashboard → Buy Bot. It does not start a fork by itself.
View LayoutRenders the current post on the card itself. Nothing is sent to the group.
Refresh (blue, full width)Redraws the card and forces an immediate group-title rescan.
Disable Buy Bot Everywhere (red, full width)Shown only while the bot is on. Turns it off everywhere; acks Buy bot disabled everywhere.
Enable Buy Bot (green, full width)Shown only while the bot is off and at least one group is wired. Turns it on; acks Buy bot enabled. No switch at all is shown before the first group.
« Main MenuHands the message back to the /menu root.
CloseDeletes the card. Opens nothing.

Manage Groups

Reached from /buybotgroups or the settings card’s Manage Groups button. The same picker also drives /menu’s Access Controls; only what a pick writes differs.

  • One row per group the bot is admin in and the caller is a member of: ✅ Title (gets the buys) or ❌ Title (doesn’t). Tapping a row flips it and the picker stays open.
  • Any current target the admin check can no longer vouch for (the bot was demoted or removed) still gets a ✅ row, so it can be removed.
  • Add Groups replaces the card with a prompt: Let's add a group. Make sure I am in the group as an admin first, and then send me either the link to the group, or the group ID which you can get by typing /getid.

The next message is read as a public link, an @handle, a t.me/c/… message link, or the numeric ID from /getid. {what} in the replies below is filled with “link” or “group ID” to match what was sent.

SituationReply
The bot doesn’t know the chat, or has left itI'm not in this group yet, add me first and repaste the {what}.
The bot is in the chat but isn’t adminI'm in the group but not an admin yet, once I am admin repaste the {what}.
The chat is a channel, not a groupThat's not a group. Send the {what} of a group I'm an admin in.
A private invite link (t.me/+…, joinchat, tg://join)That's a private invite link, and Telegram doesn't let bots look those up. Send /getid inside the group and paste the group ID here.
Already a targetThe picker redraws with <title> already gets the buys ✅ on top. Nothing is written.
Already at 10 targetsLimit reached, we're already in 10 groups. Remove a group first and then send the {what} again to enable the buy bot.
OtherwiseThe group is authorized and added. The picker redraws with Added <title> ✅ on top.

Tapping an unpicked row past the 10-group cap gets a shorter alert instead: Limit reached, we're already in 10 groups. Remove a group first.

Group titles on the card are never stale by design: the card draws with the freshest title the bot already has, then a background check runs one getChat per target — always right after the command itself and after Refresh, otherwise at most every 300 seconds. A rename updates the record and redraws the card in place, as long as nothing else has edited it since.

Token, chain and socials cards

Reached from the settings card’s Token button, from /enablebuybot in a DM, and from the post-fork wizard’s Edit Contract Address.

  1. The prompt: Paste the token's contract address. (From a fresh DM setup it reads Send the token's contract address and I'll set it up.)
  2. An address up to 160 characters is looked up on DexScreener. A recognizable but unlisted EVM address (six chains share the same 0x… shape) instead opens a chain picker: Which chain is this token on? with one button per EVM chain. Tapping a chain button with no pending address gets Paste the contract address first.
  3. The result is a confirm card: Found $SYM — <name> (or I couldn't find that token on DexScreener yet — it may be very new.), then the chain, the address, and Lock it in?, with Confirm ✅ / Cancel.
  4. Confirm ✅ writes the contract address and chain, acks Locked in, and the card shows Token locked in ✅ $SYM on <Chain>.
  5. Cancel deletes the bot’s own messages from this flow. The owner’s own messages are never deleted.

When DexScreener’s listing has a value that differs from what’s currently set, for any slot the layout uses, Confirm opens the socials card instead of finishing immediately: Socials detected on DexScreener — are these accurate?, one line per detected slot (<Platform>: <short url>, with (updated) appended to any the owner changed in-card), then Tap a platform to change its link, or Approve to save them all. Buttons: one per detected platform (two per row), then Approve ✅ and Enter manually.

  • Tapping a platform: Send your <name> link. (Reply skip to keep the detected one.)
  • Approve ✅ writes every detected link at once. Any slot still empty afterward is asked one by one.
  • Enter manually skips detection and asks every slot one by one.

Stale-callback messages

CardMessage
Token confirmThat one expired — send the address again
SocialsThat one expired — tap Token or Update Socials on the card
WizardThat one expired — send /forkbuybot again or open /buybotsettings
Media random-confirmThat one expired — send /buybotimage again

The post-fork wizard

Opens automatically right after a successful /forkbuybot, and — for its first step only — from the settings card’s Update Socials button. One card, edited in place, buttons full width. Nothing else is sent for the whole flow.

Lead line: Done, forked. Confirm the following links are accurate. (Update Socials instead shows Confirm the following links are accurate., with no “Done, forked” prefix.) Body: one <Platform>: <short url> or <Platform>: not set line per slot, then Contract Address: <address> or Contract Address: not set.

ButtonWhat it does
Edit <Platform> URL (one per slot)Prompt: Gotchu, send the new <Platform> URL.
Edit Contract AddressPrompt: Gotchu, send the new contract address.
Links Are CorrectWrites only what changed, acks Links saved (or Links confirmed if nothing changed). Reached via Update Socials, the settings card reappears with that as its note; reached via the fork wizard, the card advances to Step 2. From the fork path it is refused without a token: Add the contract address first. From the settings-card entry that check is skipped.
« BackOnly present in the Update Socials variant. Returns to the settings card untouched.

Step 2 — media and buy emoji

Text: Confirm the buybot media and buy emojis are correct. then Buy Emoji: followed by the configured emoji repeated exactly 6 times. This rides as the caption on the buy media itself.

ButtonWhat it does
Edit Media (GIF, MP4, Image)Prompt: Gotchu, send the new media (GIF, MP4, or image). If random gallery mode is off, the new media writes immediately and the card returns with Media updated ✅. If random gallery mode is on, see the random-media confirm below.
Edit Buy EmojiPrompt: Gotchu, send the new buy emoji. Writes immediately; the card returns with Buy emoji updated ✅.
Preview BuybotRenders the layout as an actual post, in place, with a « Back button. If the layout renders empty for the last buy, the card shows The layout renders empty for that buy. instead.
Lock It InTurns the bot on if a group is already wired and it isn’t already enabled, then acks Locked in and moves to Step 3.

Random-media confirm

Editing the media while random gallery mode is on first shows This new media will disable the random image that currently displays as buybot media. Are you sure you would like to continue? with Go Back (red) and Proceed (green). Nothing is downloaded or written before Proceed.

  • Go Back acks Kept the random gallery image and returns to the media step unchanged.
  • Proceed writes the new media with the mode forced to fixed, acks Media updated, and the card returns with Media updated ✅ Random gallery image mode is off — buys now use this media.

Step 3 — final

With a group already wired: Your buybot is fully configured and live in <groups> for $SYM, CA: <ca>, click the button below to preview what it looks like. Without one: Your buybot is fully configured for $SYM, CA: <ca>. Send /enablebuybot inside the group where the buys should post to go live. Click the button below to preview what it looks like. Buttons: Preview Buybot, Close.

Exiting

  • Tap Close on the final step to end normally.
  • « Back on any edit-in-progress returns to the card without saving that edit.
  • Leaving a prompt unanswered for 10 minutes ends it the same way any other prompt times out — see The prompt state machine.
  • A stale button on an expired wizard card replies That one expired — send /forkbuybot again or open /buybotsettings and changes nothing.

Every edit turns the card into Gotchu, send the new … with a « Back button; the answer turns it back into the card, updated. A media change uses Telegram’s in-place media edit; a card that was text-only becoming a media card is re-sent once. Preview turns the card into the rendered post itself, with « Back to return.