Card layouts and limits
Card layouts and limits
Every automation delivers through the same three-step fallback chain, and renders one of two card shapes depending on its type.
Delivery fallback chain
sendRichMessage— a Bot API rich message.sendPhoto— a photo with a caption, if there is a photo or graphic.sendMessage— plain text.
Each step runs only after the one before it fails. Every automation type goes through the same three-step chain.
Only a card delivered on the first step (rich) gets stored context, so only that card's posts and follower-list buttons keep working later — a card that fell back to a photo caption or plain text has none of those buttons to begin with, because the button rows are part of the rich layout only.
For follow trackers only, the winning method is kept as the entry's own state and shown next to its card in the automation list — but only when it is not rich: a healthy rich delivery shows nothing extra; a fallback shows "photo" or "text" beside the last-alert time. Feed and phrase entries do not keep or show this.
Feed / phrase card, row by row
Three slots, joined by blank lines: the link line, the owner's message, and the post's own text as a quote.
| Slot | Content |
|---|---|
| Link | The owner's link label as a link, or the bare post URL when the label is empty. Position (top or bottom) is a per-entry setting. |
| Message | The owner's own text, used verbatim — or, when left empty, a built-in default: feed → "🐦 @handle just posted"; phrase → "🔎 @handle posted", followed by the phrase itself in italics. |
| Quote | The post's own text, only while "Show tweet" is on and the post has text at all. Trimmed to 600 characters (400 as a photo caption, to stay under Telegram's 1024-character caption limit). |
Image: the entry's own configured image if set, otherwise the post's own photo, if it has one. Buttons, if any, ride alongside, laid out stacked or inline per the entry's own setting.
Composing the message — editor-side only
The dashboard's editor for this message offers two tokens while writing it:
| Token | Meaning in the editor |
|---|---|
{embed} | The locked quoted-post block. Removing it from the editor is how "Show tweet" gets turned off. |
{post_url} | Shown only when the link label is left blank. |
Note
Both are editing conveniences only. The bot performs no substitution on the saved text — it is sent exactly as written.
Follow rich card, row by row
A Bot API rich message, with entity detection off — an @handle inside a bio never turns into a Telegram mention.
- One image — the follow graphic (tracked account followed the followed account), or the followed account's own avatar when the graphic could not be rendered. Never a banner, never the owner's own image.
- (unless "Show tweet" is off) A compact stats table: Followers, Following, Posts, and Joined when the join date parses.
- (unless "Show tweet" is off) The bio, as an expandable quote past 200 visible characters (capped at 600 characters overall); its footer shows the website, the location, and 🔒 for a private account, each only when present. No bio but some of those → a bare footer line. Neither → nothing.
- Recent posts — present only once at least one post is shown: a heading plus the rendered posts (2.7).
- The contract-address block — always the last content block, whenever a token has been found (below).
- Button rows (below).
There is no heading, no check mark, no @handle line and no owner text anywhere on this card — the graphic already states who followed whom, and the View button is the profile link. The entry's own message text, link label and link position have no effect on this card at all; they only shape the classic fallback.
Follow classic fallback
Used only when the card falls back to a photo caption or plain text. It is laid out like a feed/phrase card: link (top/bottom), the owner's text or the built-in default "🤝 @handle just followed", then the followed account as an expandable quote — name, check mark, @handle, follower count, bio trimmed to 280 characters as text / 200 as a caption — then the contract-address lines.
The check mark itself (blue or gold) only ever appears on this fallback and in follower-list rows — never on the rich card.
Button rows
| Row | Contents |
|---|---|
| 1 | View <name> — a link to the account's profile; long names trimmed to 20 characters with an ellipsis. Plus, while a posts callback is set, Fetch 5 most recent posts (before the first press) or Fetch 5 more posts (after). |
| 2 | Fetch <name> Followers — present only while the entry offers the follower-list button. |
| 3 | Chart (only when a token has a chart link) and Copy CA (tap-to-copy) — present only once a token has been found. |
Rows 1 and 2 are attached to every follow card unconditionally — there is no per-entry switch to remove them.
Contract-address block, row by row
- Heading: "Contract address".
- Per token:
$SYMBOL · name · chain · Chart · Explorer— name omitted when it matches the symbol; Chart/Explorer only when a link is known. - The address itself, as tap-to-copy code.
- A compact 4-cell table: Market cap, Holders, Supply, Age.
- A footer line: price, liquidity, FDV (only when it differs from market cap by more than 2%), burned supply, any security flags, and where the token was found — each only when known.
Up to 3 tokens are shown per card (2.7). The classic caption fallback renders the same data as plain lines instead of a table.
Full limits table
Every hard number in X automations, grouped by area.
Automations and rules
| Limit | Value | Notes |
|---|---|---|
| Automations per bot | 10 | Every plan. |
| Rules per entry | 8 | phrase and follow only. |
| Rule value | 0 – 1,000,000,000,000 | Ratio rounds to 2 decimal places; every other kind is floored. |
| Rule tolerance | 0 – the entry's own rule count | Clamped to the rule count on save. |
ca rule wait (follow only) | 8.0 s | Judged instantly on a phrase entry — no wait. |
| Buttons per entry | 12 | feed/phrase only. |
| Button style options | 3 | primary, success, danger. |
| Button label | 64 characters | Hard-truncated, not rejected. |
| Custom-emoji button icon id | 5–32 digits | |
| Message / link label / recap row / recap header | 500 characters each | Rejected over, not truncated. |
| Phrase length | 120 characters | |
| Handle | 1–15 letters, digits, underscore | |
| Minimum-followers gate ceiling | 1,000,000,000 | |
| Uploaded image | 5 MB, jpg / jpeg / png / webp |
Recap
| Limit | Value | Notes |
|---|---|---|
| Recap times | Up to 3, HH:MM, deduplicated | America/New_York, always. |
| Recap prep lead | 300 s (5 min) before each slot | One re-fetch per queued hit. |
| Recap send window | 900 s (15 min) after each slot | A missed slot is skipped, not queued. |
| Recap hits kept | 100 | Oldest dropped first. |
| Recap message split | 4000 characters per part | Header appears on the first part only. |
Feed and phrase polling
| Limit | Value | Notes |
|---|---|---|
| Feed / follow poll interval | 5.0 s | |
| Phrase poll interval | 10.0 s | |
| Feed announces per tick | 3 | The rest wait for the next tick. |
| Phrase announces per tick | 5 | |
| Follow announces per tick | 3 | Oldest first. |
| Feed ids remembered | 50 | |
| Phrase ids remembered | 300 | |
| Follow ids remembered | 1000 | Oldest trimmed first. |
| Follow arming | Up to 5 pages of the account's Following list | Seeds the seen list before announcing anything. |
| Backoff | 30 s, doubling to 300 s (5 min) | On a 429 or a long miss streak. |
| Miss streak before backoff | 24 misses | |
| Failures before backoff | 6 failures | |
| Search results window | 100 rows per request |
Posts on demand
| Limit | Value | Notes |
|---|---|---|
| Posts per press | 5 | |
| Free-press window after a follow | 300 s (5 min) | No request inside this window. |
| Timeline page size | 20 posts | Per request. |
| Timeline pages read per later press | 4 | |
| Posts shown per card, max | 40 | |
| Post text on a card | 220 characters | |
| Post quote on a feed/phrase card | 600 characters (400 as a photo caption) | |
| Graphic render timeout | 20 s | |
| Tracked account's own profile cache | 6 h, retried after 10 min on a miss | The graphic's "who followed" side. |
Follower lists
| Limit | Value | Notes |
|---|---|---|
| Follower-list message | 3800 characters / 45 rows | Whichever comes first. |
| Follower-list name | 28 characters | |
| Follower-list pacing | 0.4 s between parts | |
| Follower-list flood-wait honoured | Up to 300 s, 6 attempts per part | |
| JSON-document threshold | Over 200 followers | Top 20 message + complete list as a JSON file. |
| Harvest cache | 120 s | |
| Harvest request timeout | 240 s |
Contract-address cards
| Limit | Value | Notes |
|---|---|---|
| CA announce budget (profile scan) | 1.5 s | Never waited for the search. |
| CA late-edit window | 20 s | One edit, whatever came back. |
| Tokens shown per card | 3 | |
| CA candidates remembered per card | 60 | Not re-resolved. |
Cards and topics
| Limit | Value | Notes |
|---|---|---|
| Cards kept per entry | 30 | Oldest trimmed first; rich-delivered only. |
| Bio on the rich card | 600 characters, expandable past 200 visible characters | |
| Bio on the classic card | 280 characters as text, 200 as a caption | |
| View-button name | 20 characters | Ellipsised past that. |
| Topic kinds | 3 | alerts, lists, achievements. |
| Topics remembered | 40 groups × 200 topics each | |
| Topic id | A whole number, 1 – 2,147,483,647 |
Forum topics
A feed, phrase or follow entry can route its own messages into a specific forum topic of its group, instead of the group's General.
Pasting a contract address
Pasting a contract address or a recognised link is the trigger — there is no scanner command. The bot replies with the coin's card, or not at all if…