Skip to main content

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

GroupWhat it covers
TriggersEvery way a flow can start
Messagingsend.*, edit.*, delete
Inputask.*, confirm
Data & stateset, find, db.update_user, derive, merge
Flow controlcondition, branch, match, foreach, stop, sequence
Groups & adminchat_info, chat_admin variants
HTTPhttp.get/post/put/patch/delete
Scheduling & jobsschedule.create/cancel, jobs.*
Polls, forms & menussend.poll, ui.form, ui.menu, wizard
Webhookson webhook, request.*, respond.*
State machinesstate.machine, state.command, state.read