# BetterBot A Telegram bot for editing the Better Life SG website and Memoraiz app frontend. Fork of [CodeAnywhere](https://github.com/andrekamarudin/code_anywhere) — shares the core Copilot SDK framework and only customises `instance.py` and `tools/site_editing/`. ## How it works 1. User sends a message to the Telegram bot (e.g. "Change the phone number to 91234567") 2. BetterBot uses the CodeAnywhere Copilot SDK framework with site-editing tools 3. Tools list / read / write files and automatically commit + push to git ## Projects | Key | What it manages | Mount path | |-----|----------------|------------| | `betterlifesg` | Static HTML site (Tailwind CSS via CDN) | `/repo/betterlifesg/site` | | `memoraiz` | React 19 + Vite 6 frontend | `/repo/memoraiz/frontend` | ## Stack - Python 3.12 + CodeAnywhere framework (Copilot SDK, python-telegram-bot) - Runs on RackNerd - Forgejo repo: `andre/betterbot` ## Fork relationship BetterBot shares all framework files with CodeAnywhere. The only betterbot-specific files are: | File | Purpose | |------|---------| | `instance.py` | Bot identity, system prompt, feature flags, tool registration | | `tools/site_editing/` | list_files / read_file / write_file with auto git push | | `.env` | Non-secret config (model defaults, site paths) | | `compose/` | Docker compose for RackNerd with site-dir mounts | | `scripts/deploy-betterbot.sh` | Deploy script targeting RackNerd + Infisical | To sync upstream changes, copy updated framework files from `code_anywhere/`. ## Deployment ```bash ssh racknerd bash /opt/src/betterbot/scripts/deploy-betterbot.sh ``` ## Commands - `/start` — Introduction and examples - `/reset` — Clear conversation history - `/model ` — Switch LLM model - `/current` — Show current model