tiennm99 ab53d9639f fix(deploy): include stats in CI ModulesCSV override
SAM CLI's --parameter-overrides replaces samconfig.toml's overrides
rather than merging them, so every CI deploy reset the stack's
ModulesCSV to the prior value (which predated the stats module).
The live Lambda's MODULES env was missing stats, so /stats was
dispatched but never handled — the module factory was never called.
2026-05-22 17:27:26 +07:00
2026-05-15 22:18:27 +07:00
2026-05-15 22:18:27 +07:00

miti99bot

Plug-n-play Telegram bot framework in Go. Runs on AWS Lambda + DynamoDB + EventBridge Scheduler. Strictly free-tier.

Modules

Module What it does
util /help, /info, /stickerid
misc /ping, /mstats, /trongtruonghop disclaimer
wordle Daily Wordle game
loldle League-of-Legends "guess the champion"
lolschedule Pro-match schedule + daily push
twentyq 20-questions game (requires Gemini API key)
trading VN-stocks paper trading

Disable any module by editing MODULES in template.yaml.

Layout

cmd/server/             entrypoint
internal/server/        HTTP routes (/, /webhook, /cron/{name})
internal/telegram/      Telegram webhook + bot wrapper
internal/modules/       Module framework, registry, dispatchers, modules
internal/storage/       KVStore interface; memory + dynamodb providers
internal/ai/            Gemini client (used by twentyq)
template.yaml           AWS SAM IaC (Lambda + Function URL + DynamoDB + Logs + Budget)
docs/deploy-aws-free-tier-guide.md   Full onboarding guide
docs/deploy-aws.md                   Steady-state operations
aws/README.md                        One-time AWS account setup

Run locally

In-memory KV (no AWS required):

TELEGRAM_BOT_TOKEN=\
TELEGRAM_WEBHOOK_SECRET=local \
PORT=8080 \
MODULES= \
go run ./cmd/server

End-to-end smoke test against a Telegram dev bot needs ngrok (local) or a deployed Function URL. The dev bot is created manually; token injected via env vars only.

For DynamoDB integration tests:

make dynamodb-local      # docker run amazon/dynamodb-local on :8001
make test-dynamodb       # runs internal/storage tests against DDB Local

Test

make vet              # go vet
make test             # full unit suite (no emulator)
make test-dynamodb    # storage tests against DynamoDB Local (requires Docker)

Deploy

First-time onboarding: see docs/deploy-aws-free-tier-guide.md.

Steady-state operations: docs/deploy-aws.md.

After the initial setup, every push to main triggers .github/workflows/deploy.yml (GitHub Actions OIDC → SAM deploy). No long-lived AWS keys.

License

Apache-2.0.

S
Description
Plug-n-play Telegram bot framework on Cloudflare Workers with grammY. Modules load via env var, three command visibility levels, KV storage behind a swappable interface.
Readme Apache-2.0
3.7 MiB
Languages
Go 99.9%
Dockerfile 0.1%