Alerts are live. The bot delivers state-transition notifications to subscribers
in real time, alongside lookups (
/status, /explain, /history).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/historyfor past alerts
Commands
Example notification
How subscriptions work
Subscriptions live in your Telegram identity (yourtelegram_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
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., dozens of 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.Hosted — no setup needed
The bot is hosted as@PeganaWatchBot — no setup needed. Just open Telegram and
subscribe; it talks to api.pegana.xyz and delivers alerts in real time.
The runtime (bot-ts/) is grammY + a small Postgres session storage. It is
English-only (ADR-0022); the Fluent localization scaffolding is kept dormant in
the tree but is not wired up — there is no language toggle.
Next
Webhooks (for code)
Code-driven receivers with verification.
Embed widget
Show state on a webpage instead of in chat.