Codebase Summary
Overview
Telegram bot on Cloudflare Workers with a plug-n-play module system. grammY handles Telegram API; modules register commands with three visibility levels. Data stored in Cloudflare KV behind a prefixed KVStore interface.
Tech Stack
| Layer |
Technology |
| Runtime |
Cloudflare Workers (V8 isolates) |
| Bot framework |
grammY 1.x |
| Storage |
Cloudflare KV |
| Linter/Formatter |
Biome |
| Tests |
Vitest |
| Deploy |
Wrangler CLI |
Active Modules
| Module |
Status |
Commands |
Description |
util |
Complete |
/info, /help |
Bot info and command help renderer |
trading |
Complete |
/trade_topup, /trade_buy, /trade_sell, /trade_convert, /trade_stats |
Paper trading with crypto, VN stocks, forex, gold |
misc |
Stub |
/ping, /mstats, /fortytwo |
Health check + DB demo |
wordle |
Stub |
/wordle, /wstats, /konami |
Placeholder for word game |
loldle |
Stub |
/loldle, /ggwp |
Placeholder for LoL game |
Key Data Flows
Command Processing
Trading Module Price Fetch
Deploy Pipeline
External Dependencies
| Dependency |
Purpose |
Version |
grammy |
Telegram Bot API framework |
^1.30.0 |
@biomejs/biome |
Linting + formatting (dev) |
^1.9.0 |
vitest |
Test runner (dev) |
^2.1.0 |
wrangler |
Cloudflare Workers CLI (dev) |
^3.90.0 |
External APIs (Trading Module)
| API |
Purpose |
Auth |
Rate Limit |
CoinGecko /api/v3/simple/price |
Crypto + gold prices in VND |
None |
30 calls/min (free) |
TCBS /stock-insight/v1/stock/bars-long-term |
Vietnam stock close prices |
None |
Unofficial |
open.er-api.com /v6/latest/USD |
USD/VND forex rate |
None |
1,500/month (free) |
Test Coverage
110 tests across 11 test files:
| Area |
Tests |
What's Covered |
| DB layer |
19 |
KV store, prefixing, JSON helpers, pagination |
| Module framework |
33 |
Registry, dispatcher, validators, help renderer |
| Utilities |
4 |
HTML escaping |
| Trading module |
54 |
Symbols, formatters, portfolio CRUD, all 5 command handlers |