Skip to main content
Alerts are in calibration. The bot runs on live data, but alert delivery to public subscribers is gated until the verdict rule confirms calibration v1 on 2026-06-11. You can subscribe now — scheduled delivery switches on at the gate. Lookups (/status, /explain, /history) work fully today.
The fastest path from “I want to be notified when an asset depegs” to actually being notified. No code, no integration — open Telegram, subscribe.

Open @PeganaWatchBot

Or message @PeganaWatchBot directly.

What it does

  • Sends a notification on every state transition for assets you subscribe to
  • Supports custom thresholds per subscription (USDC@50bps = alert me when USDC spreads beyond 50 bps)
  • Adds one-tap alert actions: mute an asset, snooze all alerts, or open the chart
  • Lookups via /status <symbol> for current state and /history for past alerts

Commands

CommandDescription
/startWelcome + optional deep-link auto-subscribe
/helpCommand reference
/subscribe <ASSET> [pct]Subscribe with an optional percentage threshold
/unsubscribe <ASSET>Unsubscribe
/listList your active subscriptions
/status [ASSET]Show current state, intrinsic, market, spread
/threshold <ASSET> <pct>Change an existing subscription threshold
/mute <ASSET> [hours]Mute one asset temporarily
/mute all [hours]Mute every active Telegram subscription temporarily
/snooze [hours]Quick global mute, default 1 hour
/unmute <ASSET>Resume alerts for one asset
/explain <ASSET>Plain-English methodology + risk factors
/history [ASSET] [limit]Recent alerts scoped to assets you subscribe to
/digest on|off [hourUTC]Toggle daily digest
/webOpen the web dashboard

Example notification

🚨 DRIFT ALERT — USDT  (stable_fiat)

State: PEGGED → DRIFT
Spread: 0.155% (discount · market below intrinsic)
Intrinsic: $1.0000
Market:    $0.998331
Recovery alerts use calmer wording:
✅ RE-PEGGED — USDT  (stable_fiat)

State: DRIFT → PEGGED
Spread: 0.142% (normalized · inside threshold)
Intrinsic: $1.0000
Market:    $0.998500
The wording differs by state — CRITICAL alerts use stronger framing. Every alert includes inline actions for muting the asset, snoozing all alerts, and opening the asset chart.

How subscriptions work

Subscriptions live in your Telegram identity (your telegram_id). They follow you if you reset the chat or change devices. They sync with the web dashboard at pegana.xyz/account/alerts — every subscription created in either place appears in both.

Privacy

We store only:
  • Telegram ID (numeric)
  • Username (if set; nullable)
  • Your subscriptions (asset + threshold)
  • Delivery history for operations and user-facing history
No phone number, no email, no contacts. Telegram routes the message — we do not read your other chats. The bot is open source at bot-ts/.

Group chats

You can use commands in a group after first opening a private DM with the bot. Alerts are delivered to the user’s private chat, not back into the group. This prevents accidental alert leakage across shared chats.

Rate limiting

Bot deliveries are rate-limited by Telegram’s API. In a burst (e.g., 22 assets all transitioning during a market-wide event), delivery may take 10–30 seconds for the last alerts. Order is preserved within a chat — you receive transitions in the order they occurred, not the order of subscription. For mission-critical alerts where 10–30s tail latency matters, use Webhooks — they deliver in seconds and retry over roughly 2h35m.

Self-hosted

The bot is grammY + Fluent + a small Postgres session storage. Source at bot-ts/. To run your own instance against your own Pegana API:
git clone https://github.com/lrafasouza/pegana
cd pegana/bot-ts
bun install
# set env vars: BOT_TOKEN, PEGANA_API_BASE, PEGANA_DB_URL
bun run start
The public bot (@PeganaWatchBot) talks to api.pegana.xyz. A self-hosted bot can talk to your own Pegana instance.

Next

Webhooks (for code)

Code-driven receivers with verification.

Embed widget

Show state on a webpage instead of in chat.