BOSh
文章321
标签521
分类135
315晚会 36氪 80后 ADB AI AI Agent AI PC AI 代理 AI 助手 AI 网关 AI 评测 AI代理 AI助手 AI处理器 AI大模型 AI安全 AI应用 AI智能体 AI网关 AMD API API 集成 AWS Agent Agentic AI AionUi Alwaysdata Android Apple Arch Linux Argo Tunnel Automation Backup Bash Bosh Bot Bot-hosting C++ CDN CEO CI/CD CLI CLI Proxy API CLIProxyAPI COMPUTEX CRM Chrome 插件 Claude Claude Opus 4.6 Cloudflare Code ConnectBot Credential Manager Ct8.pl CurrentEvents DNS Debian DeepSeek DenchClaw DevOps Devil Docker Elon Musk FreeLLMAPI GCP GEO GPL GPS GPU Gemini Gemini 3.1 Pro Ghostty Git GitHub GitHub Actions Gmail Go Gog Golang Google Google AI Pro Google API Google Gemini Google Photos Google Pixel HKUDS Hardware Hermes Hermes Agent Hexo HidenCloud Hugo Hyprland IPV6 Intel JavaScript Jetpack Compose John Turnus KDE KOSPI Karpathy Kimi-K2.5 Kotlin LINUX LLM LTS LaTeX Linux LiveUSB MW4L Markdow Markdown Matrix MemU Bot Mesh-Network MiniMax Musk NAT64 NIX NODE NVIDIA NVIDIA Build NanoClaw Netcatty Netlify Newsletter Node.js Nvidia Open WebUI OpenAI OpenAI 兼容接口 OpenAI兼容 OpenCLI OpenClaw P2P PDF 编译 Pacman PicoClaw Pixel Pixel 1 Pixel 12 Pixel11 Plasma Prismer Productivity Pura90 Python QClaw QQ机器人 Qualcomm Quickshell RAG RTX Spark Railway Reddit Rust SFTP SSH SeleniumBase Serv00 Serverless Skills SoC Subagent SuperCall Synapse Syncthing TPU TSMC Tailscale Telegram Telegram Bot Tensor Tensor G7 Tim Cook Tunnel Turnstile Ubuntu VLESS VPN VPS Vercel Wayland WeChat Web3 WebSSH WebSocket WebTransport Web开发 Windows WireGuard WorkBuddy X XChat XHTTP X热榜 YouTube ZeroClaw arXiv arch c++ cc-switch cloudflared ct8.pl email git hugo hyprmod i3wm iMessage iOS n8n nanobot node js ntfs pacman podman zz.ac 东海 两性关系 个人助理 中东 中东冲突 中东局势 中关村论坛 中南大学 中国 中美 乌克兰 习惯养成 云同步 云服务器 亚洲 人性 人教版 代理 代金券 以色列 任务管理 伊朗 伊朗危机 伊朗战争 伦理 体育 使用 俄乌战争 俄罗斯 保护主义 信息流 信息管理 停火 健康管理 光通信 免费VPS 免费主机 免费试用 全球动态 六年级 共和党 关系 养老金 内容工厂 内容生产 内容筛选 内网穿透 军事冲突 军事动态 军民融合 农村 分享 分配 创业 制裁 办公自动化 加密 加密货币 加沙 北斗 北韩 医学生 半导体 华为 协议分析 博客 博客助手 博客发布 博客部署成功 卫星 即时通讯 厄尔尼诺 原生 JS 去中心化 反向代理 反思 反爬虫 反重力 台海局势 台湾 命令 命令行 喷嚏网 国产 国产化 国产替代 国际 国际关系 国际局势 国际新闻 图卦 图说 地缘政治 域名邮箱 基础设施 多代理 多模态AI 大学分析 大模型 孙少平 学习 安全 安装 实时监控 家庭助理 家庭服务器 家装设计 小学 工业策略 工作总结 工作效率 工作流编排 工具 工具链 平凡的世界 平台责任 庞氏骗局 开发 开发实录 开源 开源软件 开源项目 张雪峰 微信 心理健康 快捷键 情感 慈善 战争 房地产 手机 技术分享 投资工具 指标看板 提示词工程 播客 收件箱清理 效率 效率工具 教程 教育制度 数学 数据分析 数据投毒 文件管理 文献管理 新能源汽车 新闻汇总 日历聚合 时事 时事总结 显卡 晨报 智能体 智能体生态 智能手机 服务器部署 朝鲜 极端天气 架构 架构实践 核协议 核武器 桌面Cowork 桌面环境 模型接入 模型配置 欧洲安全 每日图说 比亚迪 气候 油价 法律 活动运营 浏览器自动化 消息通道 消费者权益 深度学习 渔船 游戏开发 湘雅医院 潘石屹 热点新闻 熔断 版本更新 特朗普 生态系统 生活 生活自动化 生物识别 用例 甲骨文云 电池技术 症状追踪 白嫖 白嫖攻略 白山云 皮皮虾 监管 目标管理 知识库 社交媒体 社会保障 社会公平 社会百态 社会观察 科技 科普 科研助手 窗口管理 笔记 第一财经 算法 算法推荐 系统管理 纽森 组网 经济 经济观察 经验分享 编程 网关 网络 网络安全 网络摘录 网络穿透 美伊冲突 美伊谈判 美国 美国制裁 美国大选 美国政治 股灾 能源安全 脚本 腾讯 腾讯,龙虾,OpenClaw 腾讯云 自动化 自动化创作 自动化协作 自动化提醒 自动化流水线 自动化脚本 自动化运维 自建服务 自律教练 自托管 自由软件 芯片 草榴 行为改变 视频摘要 解锁 计算摄影 记录 许可证 论文写作 论文阅读 语义搜索 语音代理 读书 读书笔记 读后感 谷歌云 财报季 路遥 身份验证 轻量级 迁移 运维 进化论 远程访问 远程运维 选车 邀请确认 部署 部署指南 部署教程 量子计算 销售自动化 阅读感悟 随笔 隐私 霍尔木兹 霍尔木兹海峡 青蛙机 韩国股市 韩红 韬定律 项目管理 风险管理 飞书 高中生活 高可用 高考 高考志愿 鸽巢原理 麒麟 麒麟9050 黄仁勋 黎巴嫩 龙虾

一言

文章归档

Telegram Serverless — 无需服务器,直接运行你的 Bot 后端

Telegram Serverless — 无需服务器,直接运行你的 Bot 后端

写在前面

做一个 Telegram Bot 一直有个绕不开的坎:你得找一个地方跑它。

过去的选择也没几个——租一台 VPS、挂一个云函数、或者塞到某个永远不关机的树莓派上。然后你还要配域名、配 SSL、配 Webhook、写健康检查、盯着监控面板……而这一切只是为了响应一个 /start 命令。

2026 年,Telegram 官方出手了。他们推出了 Telegram Serverless——一个让你直接在 Telegram 的基础设施上运行 Bot 和 Mini App 后端的平台。没有服务器,没有容器,不用考虑扩容。

什么是 Telegram Serverless

一句话:你在本地写 JavaScript 模块,用一条命令部署上去,Telegram 用 V8 沙箱帮你跑——这个沙箱就放在 Bot API 旁边,还有一个内置的 SQLite 数据库。

整个架构就三个组件:

  • handlers/ —— 入口文件,一个文件对应一个 Telegram 更新类型(消息、回调查询、内联查询等)
  • lib/ —— 共享代码,随便 import
  • schema.js —— 数据库表定义

当一条更新过来——用户发了个消息、点了个按钮、发起了一个内联查询——Telegram 自动路由到对应的 handler,调用它的默认导出函数。这个函数通过 SDK 操作 Bot API 和数据库,返回结果。就这样。

没有匹配 handler 的更新类型直接被忽略,所以你只需要加真正用得到的 handler。

为什么这玩意值得关注

1. 零基础设施

没有机器要租、没有补丁要打、没有监控要配。代码按需执行,随 Bot 的用户量自动伸缩。如果你只是为了个人或小团队用 Bot,这是巨大的解脱。

2. 开箱即用

Bot API、数据库、HTTP 请求——全内置。不需要装任何 npm 包,不需要配任何环境变量。import 进来就能用。

3. 正经的开发工作流

项目在本地文件夹里,用 Git 管理。你编辑文件、查看差异、原子化部署、用审查过的迁移来管理数据库 schema。这就是你已经在做的那些事,只是现在不用写服务器代码了。

4. 快

V8 沙箱就在 Telegram 自己的系统旁边,调用 Bot API 和数据库的延迟极低。你不会再有因为服务器在另一个大洲而产生的几百毫秒延迟。

快速上手

第一步:在 BotFather 里开启 Serverless

打开 @BotFather → 找到你的 Bot → Serverless → 打开开关。这一步会在 Bot 上启用 Serverless 功能,同时解锁 CLI Access Token、handlers、library 和数据库。

第二步:创建项目

1
2
npm create @tgcloud/bot example_bot
cd example_bot

这会帮你搭好一个可直接编辑的项目结构:

1
2
3
4
5
6
7
8
9
example_bot/
├─ docs/
│ └─ tgcloud-sdk.md
├─ handlers/
│ └─ message.js
├─ lib/
├─ AGENTS.md
├─ package.json
└─ schema.js

第三步:绑定 Bot

1
npx tgcloud login

输入从 @BotFather 拿到的 CLI Access Token(注意:这不是 Bot API Token,是另一个单独的 token,格式是 app<id>:<secret>)。

第四步:部署

1
npx tgcloud push

这会把你更改过的模块一次性原子化上传。然后就活了——打开 Telegram 给你的 Bot 发消息,starter handler 会直接回复你。

第五步:加数据库

编辑 schema.js,声明一个表:

1
2
3
4
5
6
7
8
import { table, integer, text, sql } from 'sdk/db';

export const messages = table('messages', {
id: integer('id').primaryKey({ autoIncrement: true }),
chatId: integer('chat_id').notNull(),
text: text('text'),
created: integer('created_at', { mode: 'timestamp' }).default(sql`(unixepoch())`),
});

然后两步走:

1
2
npx tgcloud push       # 上传 schema.js
npx tgcloud migrate # 创建 messages 表

注意:push 永远不会动你的数据库。代码部署和数据迁移是严格分开的两个步骤。

第六步:读写数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { api, db } from 'sdk';
import { messages } from 'schema';
import { eq } from 'sdk/db';

export default async function (message) {
await db.insert(messages)
.values({ chatId: message.chat.id, text: message.text })
.run();

const count = await db.$count(messages, eq(messages.chatId, message.chat.id));

await api.sendMessage({
chat_id: message.chat.id,
text: `已保存。这个会话至今共 ${count} 条消息。`,
});
}

第七步:不部署也能测试

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

这个命令用你本地的代码在平台上执行 handler,不发布。输出 log、返回值、执行时长。这是最快的迭代循环。

数据库和迁移

Telegram Serverless 内置了一个 SQLite 数据库。定义表用的是 Drizzle 风格的 DSL,看起来像这样:

1
2
3
4
5
6
import { table, integer, text, sql } from 'sdk/db';

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

每次 schema 变更都会经过 migrate 命令的审核。Telegram 把变更分成了几个等级:

状态 含义 操作方式
safe 新增表、列、索引 确认后一次性应用
warning 删除操作或大量数据上的索引 逐个确认
manual 改列类型等无法自动完成的操作 提示你手动执行
undocumented 数据库里存在但 schema 里没有 仅供查看,不操作

删表或删列不是直接删除——你要在 schema 里标记为 deprecated(),然后迁移时才会以 warning 状态让你逐个确认。这种设计避免了一个误操作整库全丢的惨案。

SDK 速览

一个模块在运行时只有一个库:sdk。它把 Bot API、数据库、HTTP 请求打包在一起,不需要额外装任何东西。

1
import { db, api, fetch, BotApiError } from 'sdk';

Bot API

1
2
await api.sendMessage({ chat_id: id, text: 'Hello!' });
await api.editMessageText({ chat_id, message_id, text: 'Updated' });

注意:返回值已经解包了——getMe() 直接返回用户对象,而不是 { ok: true, result: ... } 这种包装。失败时抛出 BotApiError,携带 .code.description.method.parameters

HTTP 请求

1
2
3
4
5
6
7
import { fetch } from 'sdk';

const res = await fetch('https://api.example.com/users', {
method: 'POST',
body: fetch.body.json({ name: 'Pavel' }),
});
const data = await res.json();

支持流式读取(for await (const chunk of res.body)),适合消费 AI API 的 SSE 输出。总响应上限 32MB。

BotFather 全平台管理

最妙的是:整个项目也可以完全在手机上管理。打开 @BotFather → 你的 Bot → Serverless,你能看到 CLI 管理的一切:

  • Handlers —— 创建、编辑、测试 handler
  • Library —— 共享的 lib/ 模块
  • Database —— 用同样的语法编辑 schema.js
  • CLI Access —— 随时拿 token

在手机上写一段 handler,回到电脑上 npx tgcloud pull,这就是你本地的代码了。没有任何东西绑定到特定设备。

一些值得注意的限制

也不是没有坑。目前已知的限制包括:

  • 文件上传和下载还不支持。你没法在 handler 里上传新文件或下载文件的字节。官方建议的方式是用 file_id 传引用来绕过。
  • 总响应上限 32MB。虽然流式读取可以增量处理大响应,但上限本身不会提高。
  • 必须有 Node.js 18+ 才能跑 CLI。这个倒不是什么大问题,毕竟 18 都快 EOL 了。

我的看法

说实话,这是 Telegram 在 Bot 生态上做过的最重要的基础设施更新。

Telegram Bot 的开发者体验一直很分裂——平台本身 API 设计很好,文档清晰,但是部署环节一直是个黑洞。你要么用第三方服务(比如我用的 Hermes Agent),要么自己折腾服务器。这两种方案对只想写一个简单的 /start 回复的人来说,都太重了。

Serverless 补上了这最后一环。它不能直接取代复杂的、需要 GPU 或大规模计算的 Bot 后端。但对于绝大多数 Telegram Bot——消息机器人、小游戏、Mini App 后端、自动化工具——它已经足够了。

而且它和 AI 编码工具配合得很好——每个项目自带 AGENTS.md 和 SDK 参考文档,Claude Code、Cursor 之类的 AI 助手可以直接读。你甚至不需要自己写代码:说一句"写一个记录待办事项的 Bot",AI 帮你改 schema.js 和 handler,你只需要 review、跑 npx tgcloud run 验证、然后 push + migrate 上线。

这种从开发到部署的无缝体验,才是 2026 年的 Bot 开发该有的样子。


本文由 BOSH 的博客助手小H整理 🤖

原文链接:https://core.telegram.org/bots/serverless

本文作者:BOSh
本文链接:http://bosh.zz.ac/posts/123018393.html
版权声明:本文由BoSh发布,部分内容来源于网络。