← 返回信息流
AI 资讯Hacker News·3 小时前

Telegram 推出无服务器计算平台

原标题:Telegram Serverless

速览

Telegram 宣布推出名为 Telegram Serverless 的新平台,允许开发者在 Telegram 的云端基础设施上运行小型程序或机器人,无需管理服务器。该功能通过简单的 API 和与 Telegram Bot 的深度集成,降低了应用开发门槛。虽然初期功能有限,但为未来在通讯平台上扩展轻量级 AI 应用提供了基础设施。

AI 深度解读

背景

Telegram 长期以来为开发者提供了 Bot API 和 Mini App 平台,但传统上,运行一个 Telegram 机器人需要开发者自行托管后端代码——无论是租用 VPS、使用云函数(Cloud Functions)还是维护容器。对于许多开发者来说,仅仅为了响应一个 /start 命令就需要配置服务器、管理安全更新、保持实例在线,这带来了不必要的运维负担。Telegram Serverless 正是在这一背景下诞生的:它试图将机器人的后端执行完全托管在 Telegram 的基础设施上,消除开发者对服务器、容器和扩展性的所有顾虑。

核心内容

Telegram Serverless 允许开发者直接在 Telegram 的基础设施上运行机器人(Bot)和 Mini App 的后端代码。你无需准备服务器、无需保持容器在线、无需考虑扩展性。只需编写纯 JavaScript 模块,通过一条命令部署,Telegram 就会在一个快速、隔离的 V8 沙箱中执行这些代码,该沙箱紧邻 Bot API 和内置数据库。

为什么选择 Serverless

  • 无基础设施:无需租用、修补或监控任何机器。代码按需运行,自动随机器人流量扩展。
  • 开箱即用:每个模块可直接使用 Telegram Bot API、基于 SQLite 的数据库和出站 HTTP 请求,无需安装任何东西,也无需配置凭证。
  • 快速且隔离的执行:每次调用都在轻量级 V8 隔离环境中运行,紧邻 Telegram 自身系统,因此对 Bot API 和数据库的调用快速可靠。
  • 真正的开发者工作流:项目位于本地机器上的一个文件夹中,受版本控制。你可以编辑文件、精确查看更改、原子化部署,并通过审查过的迁移来演进数据库 schema——就像你处理其他项目一样。

工作方式与项目结构

你只需在三个地方工作,它们之间清晰映射:

  • 本地编辑文件
  • 运行 npx tgcloud push 部署
  • 平台接管其余工作

项目仅包含三种代码:

  • handlers/ —— 入口点,每个 Telegram 更新类型对应一个文件
  • lib/ —— 从任何地方导入的共享代码
  • schema.js —— 数据库表定义

当更新到来(消息、按钮点击、内联查询),Telegram 将其路由到匹配的 handler(例如 handlers/message.jshandlers/callback_query.js 等),并调用其默认导出函数。该函数通过 SDK 与 Bot API 和数据库交互,然后返回。这就是完整的循环。没有匹配 handler 的更新会被直接忽略,因此你只需添加需要的 handler。

完整示例:一个简单的计数机器人

以下是一个完整的、可运行的演示机器人。它回复每条消息,并记住每个会话看到过多少条消息。

schema.js

import { table, integer } from 'sdk/db';
export const counters = table('counters', {
  chatId: integer('chat_id').primaryKey(),
  seen: integer('seen').notNull().default(0),
});

handlers/message.js

import { api, db } from 'sdk';
import { counters } from 'schema';
import { sql } from 'sdk/db';

export default async function (message) {
  const chatId = message.chat.id;
  const [row] = await db.insert(counters)
    .values({ chatId, seen: 1 })
    .onConflictDoUpdate({
      target: counters.chatId,
      set: { seen: sql`${counters.seen} + 1` },
    })
    .returning()
    .run();
  await api.sendMessage({
    chat_id: chatId,
    text: `Hello! I've seen ${row.seen} message(s) from you.`,
  });
}

部署命令:

npx tgcloud push    # 上传模块
npx tgcloud migrate # 创建 counters 表

这是一个带有持久状态且无需服务器的机器人。其中的所有内容——apidbtable() DSL——都在后续章节中有详细描述。

适用场景

Telegram Serverless 是通用后端,适用于:

  • 对话式 AI 机器人:需要存储每个用户的状态到数据库。
  • Mini App 后端:存储用户数据并提供动态内容。
  • 游戏和工具:包括排行榜、测验等。
  • 自动化和集成:调用第三方 HTTP API 并将结果推送到聊天中。

快速上手

  1. 在 @BotFather 中为你的机器人启用 Serverless 功能(进入机器人 → Serverless → 打开)。
  2. 创建项目:npm create @tgcloud/bot example_bot
  3. 登录:npx tgcloud login(需要 @BotFather 提供的 CLI 访问令牌)
  4. 查看状态:npx tgcloud status / npx tgcloud diff
  5. 部署代码:npx tgcloud push
  6. 迁移数据库:npx tgcloud migrate

数据库与代码分离部署

push 只上传代码,不触及数据库。migrate 则专门用于应用数据库 schema 变更。这种两步模型确保代码部署不会意外触发数据迁移,避免风险。对于更危险的操作(如删除表),migrate 命令会提供额外提示。

关键要点

  • 彻底消除服务器运维:开发者无需管理任何基础设施,代码在 Telegram 的 V8 隔离沙箱中执行,自动扩展。
  • 内置数据库和 API:每个模块直接获得 SQLite 数据库和完整的 Bot API,无需额外安装或配置凭证。
  • 原子化部署push 命令以原子批次上传所有变更的模块,部署后可立即生效。
  • 数据库迁移独立于代码部署push 只同步代码,migrate 专门处理 schema 变更,防止意外数据迁移。
  • 基于文件的工作流:项目是本地文件夹,受版本控制,支持 diffstatus 命令在线下查看改动。
  • 仅需 JavaScript/Node.js:开发者只需编写纯 JavaScript 模块,使用 sdk 导入 API 和数据库。
  • 支持多种 handler:根据更新类型(消息、回调查询、内联查询等)自动路由到对应文件。
  • 与 BotFather 深度集成:通过 BotFather 即可启用 Serverless 并获取 CLI 访问令牌。
  • 适用于多种场景:从对话 AI 到 Mini App 后端、游戏、工具以及第三方 API 集成。

意义与影响

Telegram Serverless 代表了 Telegram 平台向“无服务器”架构的重要迈进。对于开发者而言,它大幅降低了构建和部署 Telegram 机器人的门槛——不再需要配置云函数、维护 VPS 或学习容器编排。开发者可以专注于业务逻辑,而将基础设施的复杂性完全交给 Telegram。

这一模式可能对以下方面产生深远影响:

  • 降低开发成本:小型团队和个人开发者无需为低流量机器人支付服务器费用,代码在空闲时不会产生资源消耗。
  • 加速迭代:原子化部署和版本控制下的工作流使得快速实验和发布成为可能。
  • 提升安全性:代码运行在 Telegram 的隔离沙箱中,减少了暴露在公网的后端攻击面。
  • 生态扩展:更简单的部署方式可能吸引更多开发者创建 Telegram 机器人,从而丰富平台生态。
  • 与既有工具链兼容:项目可以使用 npm、Git、AI 编码助手等标准工具,开发者无需学习全新范式。

不过,Telegram Serverless 也受限于其运行时环境——目前仅支持 JavaScript(Node.js),且数据库基于 SQLite,可能不适合极大规模或复杂查询的场景。此外,它完全依赖 Telegram 平台,这意味着开发者无法自主控制底层基础设施,存在一定的锁定风险。但总体而言,对于绝大多数 Telegram 机器人需求,这是一个极具吸引力的简化

查看原文 →core.telegram.org