Deep Links
A deep link is Telegram’s way of dropping a user into a private chat with a bot and handing the bot a payload at the same time. The URL shape is:
https://t.me/<bot_username>?start=<payload>When a user opens that URL, Telegram sends the bot a regular /start
message with <payload> as its only argument. The bot reads the
payload and acts on it before showing the welcome screen.
Why Prysm uses them
Section titled “Why Prysm uses them”Several Prysm surfaces live inside group chats or list messages where inline buttons can’t always do the work — buttons can’t, for example, open a private DM and pre-load context for an action that touches your personal watchlist. Deep links bridge that gap.
In practice, every clickable emoji on /detailed, every clickable
ticker on /toptokens and /trending, the ✏️ and ❌ on /alert, the
“Track Personally” button on a group /track reply, and the Share
button on a PvP session all generate a deep-link URL. Tapping it lands
you in DM with Prysm, which then runs the action.
This page documents the payloads so the round-trip isn’t a black box.
The full payload table
Section titled “The full payload table”Every payload Prysm understands is parsed in start.command.ts. If
the first word after /start matches one of these prefixes, Prysm
runs the matching handler instead of showing the welcome message.
| Payload | What it does | Generated by | Page |
|---|---|---|---|
view_<CHAIN>_<address> | Opens the detailed view for one token, the same flow as pasting the contract directly. | Ticker links on /toptokens and /trending. | Top Tokens · Trending |
add_<CHAIN>_<address> | Adds the token to your personal watchlist. | ”💬 Track Personally” button on a group /track reply. | Add tokens |
remove_<CHAIN>_<address> | Removes the token from your personal watchlist and edits the original /detailed message in place. | The ❌ next to each token on /detailed. | Remove tokens |
alert_<token_id> | Opens the alert-type picker (Price/MCap above or below, % Change) for the token. | The 🔔 next to each token on /detailed. | Create an alert |
edit_alert_<alert_id> | Opens the edit-value prompt for an existing alert. | The ✏️ on each row of the /alert overview. | Manage alerts |
remove_alert_<alert_id> | Deletes an existing alert and edits the /alert overview in place. | The ❌ on each row of the /alert overview. | Manage alerts |
pvp_<share_token> | Opens the PvP share preview, letting the recipient clone the shared list. | The Share button on a PvP session. | PvP overview |
<CHAIN> is the internal chain name (ETHEREUM, BASE, SOLANA,
BSC, etc.) — the same identifier used everywhere else inside Prysm.
<address> is the contract address as stored on that chain (lower-cased
for EVM chains, original case for Solana, TON, Tron, and Sui).
Group-context suffix
Section titled “Group-context suffix”Two of the payloads — remove_ and alert_ — accept an optional
suffix that pins the action to a specific group’s watchlist instead
of your personal one:
remove_<CHAIN>_<address>_g-<chat_id>alert_<token_id>_g-<chat_id><chat_id> is the Telegram chat ID for the group. The leading - is
part of the ID (group chat IDs are negative integers in Telegram), and
the suffix is parsed with the regex /_g(-?\d+)$/ so both signs work.
When the suffix is present, Prysm:
- For
remove_: removes the token from that group’s watchlist (regardless of forum topic) instead of yours, then sends a confirmation in DM with a link back to the group and a notice in the group itself. - For
alert_: shows the alert-type picker with a📌 For group: <title>line so it’s obvious the alert will fire for the group, and threads the same suffix through the callback data on the picker buttons.
The view_, add_, edit_alert_, remove_alert_, and pvp_ payloads
do not take a group suffix.
Example URL
Section titled “Example URL”A view_ link for a Solana token, sanitized:
https://t.me/PrysmTokenTrackerBot?start=view_SOLANA_So11111111111111111111111111111111111111112Tapping it opens DM with Prysm. The bot deletes the /start message,
treats the contract address as if you’d pasted it, and shows the
detailed view for that token.
A remove_ link with a group-context suffix would look like:
https://t.me/PrysmTokenTrackerBot?start=remove_BASE_0xabc…123_g-1001234567890PvP share links use a short opaque token rather than user data:
https://t.me/PrysmTokenTrackerBot?start=pvp_AB12CD34The share token is a six-to-sixteen-character alphanumeric string generated server-side; it’s the only part of the URL that should not be hand-crafted or guessed.
Don’t craft these by hand
Section titled “Don’t craft these by hand”How the round-trip looks
Section titled “How the round-trip looks”A typical use case — clicking 🔔 on /detailed in DM:
- The 🔔 emoji on the token’s row is wired as a
text_linkentity pointing athttps://t.me/<bot>?start=alert_<token_id>. - Telegram opens (or focuses) the DM with Prysm and sends
/start alert_<token_id>on your behalf. - Prysm parses the payload, deletes the
/startmessage so your chat stays clean, and replies with the alert-type picker.
The same shape — link, parse, delete, reply — applies to every payload
in the table above. The _g-<chat_id> suffix simply tells the parser
to operate on a different watchlist before it replies.