Welcome to Botgami
Botgami is a developer-first platform for building real Telegram bots. You write your bot in a small, readable language called Blueprint (files end in .botgami), and Botgami turns it into a live bot β no servers to manage, no Telegram boilerplate.
You author in a workspace that pairs a code editor (with autocomplete, inline error highlighting, and hover docs) with a live visual graph of your flows, a Variables panel for state and secrets, and one-click installs from the Store. When you're happy, you connect a bot token and publish.
bot HelloBot {
flow start on command "/start" {
send.text(`Hi ${user.first_name}! π Send /help to see what I can do.`)
}
}
That's a complete, working bot. Connect a token and /start replies instantly.
What you can buildβ
Botgami is built for production bots, not toy demos. Real examples shipped as blueprints:
- Games & engagement β trivia tournaments with streaks, combos, coins, and a seasonal leaderboard; reaction-powered community engines.
- Group reputation & moderation β
+repkarma engines, paid-access groups, captcha join gates, anti-spam scoring, ban/mute/invite automation, audit logs. - Storefronts β sell digital goods natively with Telegram Stars (pre-checkout validation, instant fulfilment, refunds), or take crypto via NOWPayments or Apirone with verified webhook payment confirmation.
- AI & Telegram Business β answer your Business DMs as the account owner with AI intent routing, persona drafting, and CRM lead capture.
- Mini Apps β back a Telegram Web App as a tamper-proof, stateful API, authenticating every request with
crypto.verifyInitData. - Productivity β task managers with projects, due dates, recurring tasks, and scheduled reminders.
- Assistants & integrations β weather bots, currency converters, inline-mode utility tools (
@yourbot <query>in any chat), email tools, and anything that talks to an HTTP API. - Scheduled & broadcast bots β daily digests, cron jobs, paced broadcasts to your whole audience.
A complete taste botβ
Here's a slightly bigger bot that greets, collects input, stores it, and shows an interactive menu:
bot GreeterBot {
// Persistent per-user variable (survives between sessions).
user name: String = ""
// Named menu β declared once, attached anywhere via reply_markup.
menu greetMenu {
text "π Say hi again" -> sayHi()
text "π My visits" -> showVisits()
}
flow start on command "/start" {
// Ask the user for their name, handling the slow/cancelled cases.
branch ask.text("What's your name?", timeout: "120s") {
"timeout" { send.text("No worries β say /start when you're ready.") stop }
"error" { send.text("Something went wrong. Try /start again.") stop }
default {
set { user.name = answer }
send.text(`Nice to meet you, ${user.name}!`, reply_markup: greetMenu)
}
}
}
// Button handlers are subflows β the runtime routes each button press here.
subflow sayHi() {
send.text(`Hi again, ${user.name}!`)
}
subflow showVisits() {
send.text(`You've visited ${user.visits} time(s).`)
}
}
Menus are declared once and re-render automatically whenever their state changes. Any send.* or edit.* call that accepts reply_markup can reference a menu by name.
Where to go nextβ
| If you want to⦠| Start here |
|---|---|
| Get a bot live in 5 minutes | Quick Start |
| Connect your Telegram token | Connecting Telegram |
| Understand the building blocks | Core Concepts |
| Learn the full language | Language Guide |
| Look up an exact statement | Statement Reference |
| Take crypto payments | Crypto Payments |
| Build something end to end | Tutorials |
New to Botgami? Read Getting Started in order, then skim Core Concepts. The Statement Reference and Standard Library are lookups β come back to them as you build.