javascript

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

  • суббота, 19 сентября 2026 г. в 00:00:02
https://habr.com/ru/articles/1083944/

Недавно в 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-bot
cd my-bot

npx tgcloud login
npx 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