A Chat Bot project is made of one or more independent flows, each with its own trigger and its own block graph, managed from the project's Flows tab.
The four trigger types
A flow's trigger decides when it runs, set when you create or edit the flow:
- Command, runs when a user sends a specific command, e.g.
/start. Only one flow can use any given command. - Any message, runs when a user sends a message that isn't a command matched by another flow, useful as a catch-all or default reply.
- Inline Query, runs when a user types
@yourbotnamefollowed by some text in ANY Telegram chat, not necessarily one your bot is a member of. The only block that matters here is Answer Inline Query, which defines a fixed list of result articles the user picks from, picking one sends its own message text back into whatever chat they were typing in, as if they'd typed it themselves. Telegram requires one extra setup step for this: message @BotFather, send/setinline, choose your bot, and give it a placeholder text shown while someone's typing a query, inline queries are otherwise never delivered to your bot at all. - Scheduled broadcast, runs on a schedule you set (daily at a fixed time, or every few hours) rather than in response to anything a user sends, posting into one chat ID you configure on the flow itself. Requires a Plus plan, rechecked on every send.
Building a flow
Click Open Builder on a flow to open its canvas: a block palette on the left (click a block to add it, rather than drag-and-drop), your flow graph in the middle starting from its trigger, and an inspector on the right for whichever block is selected. Connect blocks by dragging from one block's bottom edge to the next, branching blocks (like Condition) have more than one labeled connection point.
Enabling and disabling a flow
Each flow has its own Enabled/Disabled toggle on the Flows list, a disabled flow's trigger is ignored entirely, without needing to delete or rebuild it.
Tip: Give each flow a clear name, it's the label you'll see on the Flows list and nowhere else, it never appears to the people messaging your bot.