packages

yaebal is a pnpm monorepo. three foundation packages, a stack of first-party plugins, plus scaling and tooling — all under the @yaebal/* npm scope, published as ESM with full TypeScript types.

terminal
# install everything (workspace bootstrap)
pnpm install

# or add individual packages to your project
pnpm add @yaebal/core @yaebal/session @yaebal/keyboard

foundation

packagedescription
yaebalbatteries-included entry — core + auto-generated contexts + common plugins, one import
@yaebal/coreBot, Composer, context, filter queries, media helpers — the engine everything else builds on
@yaebal/typesfull Telegram Bot API types, code-generated from the ark0f schema; single source of truth for all interfaces
@yaebal/contextsper-update context classes with auto-generated shortcut methods (ctx.reply, ctx.sendPhoto, …)

plugins

each plugin is a typed composer extension. installing one enriches the context type; its dependencies are checked at compile time. see the plugins overview for a quick orientation.

packagedescription
@yaebal/fmthtml`` / md`` tagged templates → entities, with auto-escaped interpolation
@yaebal/filterscomposable, type-narrowing update filters (and / or / not)
@yaebal/conversationawait-style multi-step dialogs (coroutine, no replay)
@yaebal/againauto-retry on 429 / flood-wait / transient 5xx errors
@yaebal/sessionper-chat session with pluggable storage adapters
@yaebal/keyboardfluent inline & reply keyboard builders
@yaebal/callback-datatyped callback_data pack / unpack
@yaebal/mordadialogs engine + jsx/hooks (react-for-telegram)
@yaebal/i18nper-chat locale, ctx.t / ctx.changeLanguage
@yaebal/scenesstep-by-step wizards over multiple messages
@yaebal/promptask a question, await the next message as the answer
@yaebal/routerfile-based routing from a routes/ directory
@yaebal/throttlerate-limit outgoing API calls
@yaebal/filesresolve and download Telegram files
@yaebal/ratelimiterdrop updates from users who send too many requests
@yaebal/broadcastsend a message to many chats
@yaebal/webrun your bot on edge/web runtimes (Cloudflare Workers, Deno, Bun) via webhooks
@yaebal/paneloperator panel — view chats and reply from the browser
@yaebal/media-groupcollect album updates into one handler
@yaebal/splitbreak long messages into Telegram-sized chunks
@yaebal/commandsone registry for handlers + the / command menu
@yaebal/paginationpaginated lists with inline prev/next buttons
@yaebal/media-cachereuse a file_id instead of re-uploading the same file

scaling & tooling

packagedescription
@yaebal/runnerconcurrent update processing with per-chat sequentialization
@yaebal/workersworker_threads pool to offload CPU-heavy tasks from handlers
create-yaebalproject scaffolder — pnpm create yaebal my-bot
all packages require Node.js ≥ 20 and are ESM-only ("type": "module"). use import type for type-only imports — verbatimModuleSyntax is enabled across the workspace.