My App
Multi-Chain Scanner

Calls

A call is the record created every time the bot answers a pasted address or link with a token card. Recording one is a side effect of that card, not a…

Calls

A call is the record created every time the bot answers a pasted address or link with a token card. Recording one is a side effect of that card, not a separate action.

Recording a call

There is no /call command and no button that creates a call.

If every delivery attempt inside send_card fails — the rich message, the photo, and the plain-text send all reject — the scanner falls back to sending its own plain-text card.

An address or link that resolves to no price and no symbol produces neither a card nor a call.

Stored per call event

SettingValue
Calleruser id, display name, and @username from the message's sender. An anonymous admin post (posted as the chat) stores user id 0 and the chat's title as the name.
Locationchat id, message id, and the forum topic id, when the message was sent inside one.
Timethe Unix timestamp of the call, plus a bot-wide sequence number.
Market datathat moment's market cap and price.

The first call is the reference forever

The first call recorded for a coin on a bot is fixed as that coin's reference. Every multiple, every percentage gain, and every Called by market-cap figure shown afterward is measured against the first call's market cap and price — never against a later or a live figure.

Exception: if the first call happened before the token had a trading pool, it has no market cap or price to reference at the time. The first later sighting that does carry a price becomes the reference instead, and the coin's stored first-call record is rewritten with that price and market cap.

An unpriced first call gets its reference later

InputOutput
Call line before a price exists🎯 Called by <a href="tg://user?id=777">@chris</a> (no market cap at the time)
Call line once a price is found🎯 Called by <a href="tg://user?id=777">@chris</a> at <b>$900M</b>

Both are calls.call_lines's first line for the same coin — before and after calls.apply_price finds its first price for it.

Every call after the first is stored as its own event, with its own caller, its own market cap, and its own timestamp. Only the first call's record decides the coin's reference — a repeat call, including one by the original caller, never replaces it.

Same-message dedupe

Every registration checks the incoming message's chat id and message id against the coin's most recently stored event. If they match, nothing new is recorded.

This is separate from candidate recognition: if the same address appears twice in one message, the scanner folds it into a single candidate before either copy reaches the calls layer, so that message never produces two cards — and never two calls — for the same address.

The call graphic

Every call, and every milestone alert (chapter 3.6), is sent with a generated image.

Text lines sent for the graphic

EventLine 1Line 2
A call<caller> called $SYMat $MC market cap — or "no market cap yet" with no price
A milestone alert$SYM just hit Nxcalled by <caller> at $MC · now $MC

When the request fails or times out, the card is sent without an image. Nothing else about the call — the text, the buttons, the registration — is affected.

On this page