Buy Bot

Forking a layout and paste-to-import

`/forkbuybot` in Telegram and pasting a buy post into the dashboard's body editor both run through the same import mapper (`lib/buybot-import.ts`) and…

Forking a layout and paste-to-import

/forkbuybot in Telegram and pasting a buy post into the dashboard's body editor both run through the same import mapper (lib/buybot-import.ts) and only ever touch the layout — never groups, never the on/off switch.

What a fork writes

/forkbuybot sends the pasted or forwarded message — text plus Bot API entities, so premium emoji ids survive without any clipboard step — to the dashboard, which maps it with the same importer the dashboard's own paste-to-import uses (below).

What a fork writes

SettingValue
bodyPartsAlways overwritten with the mapped runs.
headerPartsAlways cleared to empty — a custom body takes over the whole layout.
sizeEmojiOverwritten only when the pasted post carries a recognisable size-emoji atom.
imageUrl / mediaType / posterUrlWritten only when the post has attached media and the bot is not already in random gallery mode — see Forking into a random-mode bot, below.

Warning

Fork writes body, size emoji and media only. It never sets enabled and never adds a group — a forked bot with no group wired still needs /enablebuybot afterward.

A never-styled bot is greeted plainly; a styled bot is warned first, naming the symbol when one is known.

The two fork prompts

InputOutput
Never styledGotchu. Paste a buy bot post right here by forwarding it or pasting it in. Also, I can create a premium coin emoji for you, just send /newpack if you need one for the buybot.
Already styledBet. Let's fork a new buy bot. This will overwrite the existing styling for $SYM. Forward a message from the bot where it announces a buy, and we'll configure it ASAP.

The "for $SYM" clause is dropped when the symbol isn't known yet.

Matching runs live, not once at fork time: on every render, any of the bot's own already-set siteLinks overrides a literal link in the body, buttons or extra links that matches that slot; an unmatched or still-unset slot keeps the pasted post's own literal link exactly as written. Right after a fork — before the owner has set their own project links — the layout keeps the other project's literal URLs and labels until the owner fills theirs in.

Right after a fork, the contract address is asked for first: the DexScreener lookup that names the token is also where the profile links come from.

Emoji re-homing

A forked layout arrives carrying the other project's premium emoji ids. Bots can send any custom emoji, so the buys already render correctly — but the layout then depends on a pack Memescale doesn't control.

  1. The same emoji files are re-uploaded into a fresh custom-emoji set titled buy bot pack @memescaleai, minted by a pool bot and ledger-debited like every other mint.
  2. The layout's ids are swapped for the new set's ids, and the config's updatedAt is bumped.
  3. This runs in the background, after the fork itself has already been saved. A buy posted before it finishes still uses the old ids, which keep working.
SettingValue
Set titlebuy bot pack @memescaleai
Emoji cap70 per pack (PACK_MAX_EMOJIS)
SerializationJobs are queued per bot, so two quick forks in a row can't race each other.

Note

Nothing visible changes for the owner — the buy post looks identical before and after the re-home. Only the underlying emoji-set ownership changes.

Forking into a random-mode bot

Random gallery image mode is preserved across a fork. If the bot is already in random mode, a fork leaves the pasted post's media out entirely rather than switching the bot to fixed media.

Reply, when there is no wizard card to open instead: Kept the random gallery image — the post's media was left out.

Paste-to-import (the dashboard's fork)

The dashboard has no dedicated fork button.

SurfaceWhen the paste doesn't look like a buy post
Telegram (/forkbuybot)Replies That doesn't look like a buy post — paste the whole message from the other bot. Nothing is written.
Dashboard body editorLeaves the pasted text in the editor exactly as pasted. No message is shown.

When the paste is accepted, the mapper also strips branding, referral and ad content before mapping the rest to placeholders:

  • Branding lines — "by @handle", "@…bot"/"@…trending" mentions, "product of", "advertisement", "powered by", "dex paid", "trending #N".
  • Referral URLs — t.me/<name>?start=… links, and named referral/ad bots (spydefi, cherrytrending, maestro, trojan, bonkbot, majorbots.io/buybot, suibainu, boostlegends).
  • Bare ad-vocabulary lines — "trending", "ads", "volume bot", "calls", "vote", "buy", "swap", "boost", "bump", "snipe", "bot", "promote", "premium" on their own.

Note

No foreign URL survives: every surviving link is either matched to one of the 8 site-link slots or stripped down to its plain text, with no host left behind.

Copyright © 2026