Statement Reference
This section is the precise reference for every statement (node) you can write in a flow: triggers, messaging, input, state, control flow, group admin, HTTP, scheduling, polls/forms/menus, webhooks, and state machines.
How to read this reference
Each statement is shown as a blueprint call with its named parameters. A ! after a type means the parameter is required.
send.text(text!: RichText, chat_id: ChatId, parse_mode: String, reply_markup: ReplyMarkup)
You pass parameters by name. The first, most-common one can usually be passed positionally:
send.text("Hello!") // positional
send.text(text: "Hello!", parse_mode: "HTML") // named
Control-flow ports are implicit
Statements run top to bottom inside a flow. Branching steps (when, branch, match, foreach, try) and the implicit success/error paths of calls are handled by the language — you don't wire anything by hand. Where a step produces output values (like http.get returning a body), bind them with let { … } = … or assign to a local.
The groups
| Group | What it covers |
|---|---|
| Triggers | Every way a flow can start |
| Messaging | send.*, edit.*, delete |
| Input | ask.*, confirm |
| Data & state | set, find, db.update_user, derive, merge |
| Flow control | condition, branch, match, foreach, stop, sequence |
| Groups & admin | chat_info, chat_admin variants |
| HTTP | http.get/post/put/patch/delete |
| Scheduling & jobs | schedule.create/cancel, jobs.* |
| Polls, forms & menus | send.poll, ui.form, ui.menu, wizard |
| Webhooks | on webhook, request.*, respond.* |
| State machines | state.machine, state.command, state.read |