Character and companion bots
Telegram allows AI companions on its Bot API. Give one memory, a voice and the right moments to check in.
Telegram AI bots
The Telegram Bot API takes minutes to start. Hosting, memory, tools, files and retries take weeks. Flow gives you all of it, and the same agent runs on WhatsApp and iMessage.
Bring a BotFather token. Flow handles the webhook.
Morning Maya ☀️ How did the interview go yesterday? You were nervous about the second round.9:14
0:14
A take-home task means they liked you! Want to plan it out tonight so it doesn’t eat your weekend?9:14
❤️
What you can build
Telegram allows AI companions on its Bot API. Give one memory, a voice and the right moments to check in.
Daily lessons and voice practice.
Balances and card controls for signed-in users.
Reminders in each person’s time zone, never at 3am.
Brand examples are illustrations of what could be built, not those companies' products.
The usual way vs. Flow
Building it yourself~3 weeks
The Bot API keeps no conversation history: memory is yours to build. And it only runs on Telegram.
With Flow Frameworkan afternoon
import { tool } from "@flow-engineer/flow"; import { z } from "zod"; export default tool({ name: "get_streak", description: "Use when the learner asks about their streak.", input: z.object({ userId: z.string() }), run: async ({ userId }) => api.streaks.get(userId), });
How Flow works
Get started
Run npx @flow-engineer/flow new my-agent, or ask Claude Code or Codex to set it up. You get one folder: the agent’s instructions, its tools, its skills and its tests.
Each job is a TypeScript function with a typed input that calls your API: check an order, book a slot, find a deal. No protocol code.
Run npx @flow-engineer/flow test. Simulated users try the scenarios that matter, including people who change their mind or ask for something your agent should refuse.
Create a bot with @BotFather and give Flow its token. Flow sets the webhook and delivers each chat’s messages in order.
Share the t.me link. Add WhatsApp and iMessage from the same project.
$ npx @flow-engineer/flow new my-agent $ cd my-agent $ npx @flow-engineer/flow test ✓ 24 scenarios passing
Guide
Message @BotFather on Telegram, send /newbot, pick a name and username, and you get a token. That token lets your code receive messages (by webhook or long polling) and reply through the Bot API.
Your bot passes each message to a model and sends back the answer. To make it useful, give the model tools that call your systems and keep each user’s history. Flow does both: you write tools, pick the model and paste the token.
Yes. Telegram does not charge for the Bot API or for messages. You pay for hosting and model calls.
Polling is simplest for a laptop; webhooks are what production bots use, since Telegram pushes each update to your server. Flow uses webhooks and keeps each chat’s messages in order.
Only after the user has started the chat with the bot. After that, it can send reminders and follow-ups.
Telegram is open, free and allows companion bots; WhatsApp reaches more people in many countries but restricts general-purpose assistants. With Flow you don’t choose: one project runs on both.
Yes. Telegram charges nothing for bots or messages. You pay for hosting and the model.
Message @BotFather, send /newbot, choose a name and username, and it replies with the token.
The Bot API keeps no history. Flow keeps each user’s conversation between chats for you.
Yes. Voice notes are transcribed and photos and files are read before the agent answers.
Once a user has started the chat, yes: reminders and follow-ups in their time zone.
Yes. The same Flow project ships to Telegram, WhatsApp and iMessage, and to ChatGPT and Claude.
One open-source TypeScript project. The same agent on WhatsApp, iMessage, ChatGPT, Claude and more.