Telegram notifications for Alephium wallet activity, built as small Go services.
- Watches user-provided Alephium addresses
- Sends Telegram alerts for incoming/outgoing activity
- Handles transfers and contract interactions
- Supports per-address filter:
all,in,out - Uses Redis for shared state + Redis Streams between services
scraper(cmd/scraper): connects to Alephium websocket and publishes block eventsmatcher(cmd/matcher): fetches tx details, computes flow, formats notificationsbot(cmd/bot): handles Telegram commands and delivers Telegram notifications
Streams:
trackalph:blocks(scraper -> matcher)trackalph:notifications(matcher -> bot)
State:
- Redis keys managed in
internal/store/redis.go
- Go
1.25+ - Redis
7+ - Telegram bot token from @BotFather
Copy .env.example to .env and edit values:
TELEGRAM_TOKEN=your-telegram-bot-token
FULLNODE_WS=node.mainnet.alephium.org
FULLNODE_API=https://node.mainnet.alephium.org
EXPLORER_API=https://backend.mainnet.alephium.org
EXPLORER_URL=https://explorer.alephium.org
TOKEN_LIST_URL=https://raw.githubusercontent.com/alephium/token-list/refs/heads/master/tokens/mainnet.json
REDIS_URL=redis://localhost:6379docker compose up --buildThis starts:
redisscrapermatcherbot
Start Redis first, then in separate terminals:
go run ./cmd/scraper
go run ./cmd/matcher
go run ./cmd/bot/watch <address>: watch address (bot shows filter buttons)/unwatch <address>: stop watching address/list: show watched addresses and filters/help: help message
Aliases:
/add=/watch/remove=/unwatch
Each active service exposes Prometheus metrics:
scraper::2112/metricsmatcher::2113/metricsbot::2114/metrics
Examples of exposed metrics:
trackalph_scraper_blocks_published_totaltrackalph_matcher_tx_processed_totaltrackalph_matcher_tx_process_duration_secondstrackalph_bot_messages_sent_total
Dashboard JSON is included at:
observability/grafana/dashboards/trackalph-overview.json
Import it manually in Grafana:
- Open Grafana -> Dashboards -> Import
- Upload
trackalph-overview.json - Select your Prometheus datasource
Note: this repo currently does not run Grafana/Prometheus via docker-compose.yml.
Webhook notification channel code exists (cmd/webhook) but is currently disabled in the running flow.
Telegram is the active notification channel.
cmd/scraper/main.gocmd/matcher/main.gocmd/bot/main.gocmd/webhook/main.go(currently inactive)internal/configinternal/explorerinternal/metricsinternal/modelsinternal/storeinternal/streaminternal/tokens