Skip to main content

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 β€” +rep karma 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 minutesQuick Start
Connect your Telegram tokenConnecting Telegram
Understand the building blocksCore Concepts
Learn the full languageLanguage Guide
Look up an exact statementStatement Reference
Take crypto paymentsCrypto Payments
Build something end to endTutorials
tip

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.