Telegram Serverless: теперь бота можно запустить вообще без своего сервера

от автора

Недавно в BotFather у меня появилось сообщение о раннем доступе к Telegram Serverless. Решил посмотреть, что это такое и насколько реально теперь запустить Telegram‑бота вообще без своего VPS.

Если совсем коротко — Telegram сделал собственную serverless‑среду специально для ботов. Код и базу можно держать прямо на инфраструктуре Telegram, а отдельный сервер для простого бота больше не обязателен.

Пока всё это находится в early access, поэтому некоторые вещи ещё наверняка будут меняться.

Что появилось в BotFather

После получения доступа в настройках бота появляется отдельный раздел Serverless.

Скриншот: это здесь

Через него можно управлять проектом, обработчиками и базой данных, а для нормальной разработки есть отдельный CLI — tgcloud.

В итоге схема получается довольно простая:

Пользователь     ↓  Telegram     ↓Telegram Serverless     ↓Код нашего бота   ↙       ↘SQLite   внешний API     ↓Ответ пользователю

То есть больше не обязательно поднимать VPS, устанавливать туда окружение, держать запущенный процесс бота и отдельно настраивать webhook.

Приходит update — Telegram сам запускает нужный обработчик.

Как выглядит сам бот

Вместо привычного приложения, которое постоянно работает на сервере, здесь используются отдельные handlers.

Например:

handlers/├── message.js├── callback_query.js└── inline_query.js

Пришло обычное сообщение — Telegram вызывает message.js.

Пользователь нажал inline‑кнопку — вызывается callback_query.js.

Сам обработчик может выглядеть буквально так:

import { api } from 'sdk';export default async function (message) {    await api.sendMessage({        chat_id: message.chat.id,        text: 'Привет из Telegram Serverless!'    });}

Никакого отдельного запуска приложения здесь уже нет.

Управлять кодом можно даже через BotFather

Это, пожалуй, одна из самых необычных частей.

В BotFather можно посмотреть handlers и библиотеку проекта, работать с базой и получить доступ для CLI.

[СКРИНШОТ: меню Serverless с Handlers / Library / Database / CLI Access]

То есть какого‑нибудь совсем простого бота технически можно поправить даже оттуда.

Но для нормальной разработки, конечно, удобнее работать локально.

Telegram сделал для этого tgcloud.

Проект создаётся примерно так:

npm create @tgcloud/bot my-botcd my-botnpx tgcloud loginnpx tgcloud push

После push код оказывается на стороне Telegram и начинает там выполняться.

Есть также statusdiffpullrun и команды для работы с миграциями.

Например, обработчик можно выполнить в облачной среде ещё до полноценного деплоя:

npx tgcloud run handlers/message \'{ chat: { id: 1 }, text: "hello" }'

Для небольших проектов выглядит довольно удобно.

Базу тоже можно не поднимать

Вместе с Serverless Telegram предоставляет боту встроенную persistent‑базу на SQLite.

Например, можно сделать таблицу пользователей или задач и работать с ней прямо из кода бота.

Условно:

export const users = table('users', {    id: integer('id').primaryKey({ autoIncrement: true }),    telegramId: integer('telegram_id').unique(),    username: text('username')});

Схема базы хранится вместе с проектом, а изменения применяются через миграции.

npx tgcloud migrate

Причём деплой кода и миграция базы специально разделены. Обычный push сам по себе структуру базы не меняет.

[СКРИНШОТ: раздел Database в BotFather]

Для небольшого бота это означает, что не нужно отдельно искать PostgreSQL/MySQL/Supabase только ради нескольких таблиц.

Внешние API тоже работают

Serverless не означает, что бот заперт внутри Telegram.

Из обработчиков можно делать HTTP‑запросы во внешние сервисы.

Поэтому вполне возможна такая архитектура:

Telegram   ↓Serverless Bot   ↓API моего сервиса   ↓ответ

Или вообще:

Telegram   ↓Serverless Bot   ↓OpenAI / другой API   ↓SQLite   ↓пользователь

Для простых интеграционных и AI‑ботов этого уже может быть достаточно, чтобы вообще не иметь собственной серверной инфраструктуры.

Но Python пока мимо

Для меня это один из главных нюансов текущей версии.

Если у вас уже есть бот на Python + aiogram, взять его и загрузить в Telegram Serverless не получится.

Среда построена вокруг V8 и JavaScript‑модулей с SDK самого Telegram.

То есть привычное:

from aiogram import Bot, Dispatcher

здесь не запустится.

Причём это не просто обычный Node.js‑хостинг, где можно развернуть любое приложение. Среда изолированная и имеет свои ограничения.

Поэтому существующий большой проект мигрировать туда только ради Serverless я бы пока не стал.

А вот написать нового небольшого бота сразу под эту платформу — уже намного интереснее.

Где это реально может пригодиться

На мой взгляд, сейчас Telegram Serverless хорошо подходит для небольших самостоятельных ботов: заметки, задачи, различные утилиты, простые интеграции с API, AI‑боты, backend для Mini Apps.

Раньше даже для бота на несколько сотен строк всё равно приходилось думать, где его держать.

Теперь потенциально вся инфраструктура проекта может выглядеть так:

BotFather+JavaScript+Telegram Serverless+встроенный SQLite

И всё.

Никакого VPS, Docker, systemd, nginx и отдельной базы.

Конечно, для серьёзного backend это пока не замена обычной инфраструктуре. Тем более продукт находится в раннем доступе, и пока остаются вопросы к лимитам, возможностям среды и тому, как всё это в итоге будет тарифицироваться.

Но направление мне нравится.

Telegram фактически пытается сделать так, чтобы путь от идеи до работающего бота выглядел как:

создал бота → написал несколько обработчиков → нажал deploy → готово.

В следующем эксперименте хочу попробовать сделать на Serverless небольшого реального бота со встроенной базой и посмотреть уже не документацию, а как всё это ведёт себя на практике.

Документация:
https://core.telegram.org/bots/serverless

ссылка на оригинал статьи https://habr.com/ru/articles/1083944/