← На главную

Telegram запустил платформу Telegram Serverless для ботов и Mini App

15.07.2026 10:06 · hackernews

Telegram запустил Telegram Serverless — платформу для ботов и Mini App, где бэкенд работает прямо на инфраструктуре Telegram. Больше не нужно арендовать сервер, держать контейнеры или думать о масштабировании. Ты пишешь обычные JavaScript-модули, деплоишь их одной командой, и Telegram выполняет их в изолированном V8-изоляторе, который находится прямо рядом с Bot API и встроенной SQLite-базой. Весь цикл: обновление (сообщение, нажатие кнопки, инлайн-запрос) приходит в Telegram, роутится к соответствующему хендлеру (например, handlers/message.js), тот вызывает export default async function, использует sdk (api.sendMessage, db.insert), и возвращает ответ. Всё.

Проект — обычная папка под контролем версий с тремя типами файлов: handlers/ (плоский список, каждый файл — один тип обновления), lib/ (общий код, можно с подпапками) и schema.js (описание таблиц базы данных). Импорт — только по голому имени: 'schema', 'lib/cart', 'sdk', 'sdk/db'. Никаких npm-пакетов, относительных путей или расширений .js — не скомпилируется. Всё, что видно модулю, — это SDK и другие модули проекта.

Для управления есть CLI — npx tgcloud. Главные команды: npx tgcloud push — атомарно загружает все изменённые модули; npx tgcloud migrate — отдельно применяет изменения схемы базы, каждое опасное изменение требует подтверждения; npx tgcloud run — выполняет хендлер на платформе с твоими локальными файлами и переданным payload, не деплоя; npx tgcloud status показывает, что изменилось; npx tgcloud pull забирает облачную версию; npx tgcloud fetch обновляет локальный кеш. Два человека не могут случайно перезаписать друг друга — push остановится, если обнаружит конфликт.

База данных — своя у каждого бота, на SQLite. Описываешь таблицы в schema.js через DSL, похожий на Drizzle ORM (колонки: integer(), text(), json(), blob(), boolean()). Миграции — через npx tgcloud migrate, который безопасно классифицирует изменения: safe (добавление таблицы/колонки) применяются вместе, warning (удаление, дроп) — по одному с подтверждением, manual (изменение типа колонки) — нужно делать вручную через db.run(). Для удаления нужно сначала пометить поле или таблицу как .deprecated(), потом подтвердить дроп на migrate, и только после этого убрать из schema.js.

SDK — sdk — даёт доступ к api (весь Telegram Bot API, вызовы вроде api.sendMessage, ошибки — BotApiError), db (построитель запросов с асинхронными терминалами .all(), .get(), .run(), поддержка onConflictDoUpdate, returning(), raw SQL через sql), fetch (outbound HTTP) и console. Параметры API передаются в snake_case, ответы разворачиваются — getMe() возвращает сам объект пользователя.

Всё управляется и через @BotFather на телефоне: там можно просматривать, редактировать и тестировать хендлеры, lib/, схему базы, получать токен для CLI. Проект единый — начал на телефоне, продолжил на ноутбуке.

Для работы с AI-ассистентами в проект добавляются AGENTS.md и docs/tgcloud-sdk.md — они объясняют правила импорта, отсутствие внешних зависимостей, двухшаговый push/migrate. Можно попросить агента написать бота на естественном языке, он отредактирует файлы, ты потестируешь через npx tgcloud run, а потом задеплоишь.

Читать оригинал →