mirror of
https://github.com/tiennm99/miti99bot-js.git
synced 2026-05-18 05:25:50 +00:00
4277f11c48
Add CLAUDE.md for AI assistant context. Create four new docs: deployment-guide.md (full deploy flow + secret rotation + rollback), code-standards.md (formatting, naming, module conventions, testing), codebase-summary.md (tech stack, modules, data flows, external APIs), development-roadmap.md (completed phases + planned work).
2.8 KiB
2.8 KiB
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
Telegram update → POST /webhook → grammY secret validation
→ getBot(env) → dispatcher routes /cmd → module handler
→ handler reads/writes KV via db.getJSON/putJSON
→ ctx.reply() → response to Telegram
Trading Module Price Fetch
User sends /trade_buy → handler calls getPrice(db, symbol)
→ getPrices(db) checks KV cache (key: "prices:latest")
→ if stale (>60s): fetch CoinGecko + TCBS + ER-API in parallel
→ merge results, cache in KV → return price in VND
Deploy Pipeline
npm run deploy → wrangler deploy (upload to CF)
→ scripts/register.js → buildRegistry with stub KV
→ POST setWebhook + POST setMyCommands to Telegram API
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 |