You describe a screen as a function of state. Navigation, menus, AI-chat UIs, files, payments and analytics come as defaults. Build a shop, an AI assistant, a form or a mini-app backend, not the boilerplate.
The same AI image bot. tgx vs raw grammY, identical behavior.
Persistent state, button cleanup, payment matching and analytics are already on. This is the whole bot.
A persistent go / back / replace stack. Users resume exactly where they were after a restart.
The persistent bottom menu and the command menu, from one config.
For AI assistants and generators: the control panel follows the newest reply.
Eight media types normalized to one shape. Media groups buffered for you.
successful_payment matched back to the right user's screen. No global handler.
Every step counted. Query the funnel with /stats. Zero tracking code.
The API has no synonyms. An agent cannot pick the wrong pattern.
Every button, menu and payment with copy-paste code and a Do-NOT list.
Run npx @tgxjs/mcp. Claude Code and Cursor pull the reference on demand.
Your editor defaults to tgx for Telegram bots, out of the box.