Telegram 无服务器
Telegram 无服务器允许你直接在 Telegram 的基础设施上运行你的机器人和小型应用的后端代码——不需要配置服务器,不需要保持容器运行,不需要考虑扩展。你只需编写普通的 JavaScript 模块,只需一个命令即可部署,Telegram 将在一个快速、孤立的 V8 沙箱中运行它们,该沙箱紧挨着 Bot API 和内置数据库。如果你曾经为了回应 /start 键而将机器人连接到 VPS、云函数或托管面板,那么这一部分你将不再需要做。在此页面上 为什么选择无服务器 启动 建立 AI 相关功能 使用 BotFather 进行开发 项目与模块 数据库 SDK CLI 参考 为什么选择无服务器 Telegram 机器人本质上是一个对更新做出反应的程序。传统上,你需要将该程序托管在一个始终在线、可访问和安全的地方——并确保它始终如此。Telegram 无服务器完全消除了这一层:没有基础设施。没有需要租用、修补或监视的机器。你的代码根据需求运行,并自动随着你的机器人的使用而扩展。所有功能默认包含。Telegram Bot API、一个 SQLite 支持的数据库和出站 HTTP 对每个模块都是现成可用的——无需安装,不需要配置凭证。快速、孤立的执行。每次调用都在轻量级 V8 隔离环境中运行,靠近 Telegram 自身的系统,因此对 Bot API 和你的数据库的调用都快速且可靠。真正的开发者工作流。一个项目的文件夹在你的机器上由版本控制管理。你修改文件,精准查看变更,以原子方式部署,使用审核迁移向前滚动你的数据库架构——这正是你一贯与其他事物的工作方式。思维模型 你在三个地方工作,它们干净地映射到彼此上: 你项目的文件夹 —— JavaScript 模块——架构、共享代码、更新处理器 云 —— 这些模块的部署副本,加上你的机器人的数据库 tgcloud CLI —— 桥梁——它显示你之间的差异并同步它们 你永远不会 SSH 进入任何东西。你在本地编辑文件,运行 npx tgcloud push,平台会从那里处理。你的机器人流量由部署的模块处理;你的数据库在调用之间保持不变。一个项目只有三种代码: handlers/ # 入口点——每种 Telegram 更新类型一个文件 lib/ # 你可以从任何地方导入的共享代码 schema.js # 你的数据库表 当更新到达时——一条消息,一次按钮按压,一次内联查询——Telegram 会将其路由到匹配的处理器(handlers/message.js,handlers/callback_query.js,……)并调用其默认导出。该函数通过 SDK 与 Bot API 和数据库进行交互,并返回。这就是整个循环。没有匹配处理器的更新会被简单忽略,因此你只需添加所需的处理器。 快速演示 这是一个完整的、可工作的演示机器人。它对每条消息做出回复并记住从每个聊天中见过的消息数量。 schema.js 导入 { table, integer } from 'sdk/db'; export const counters = table('counters', { chatId: integer('chat_id').primaryKey(), seen: integer('seen').notNull().default(0), }); handlers/message.js 导入 { api, db } from 'sdk'; 导入 { counters } from 'schema'; 导入 { sql } from 'sdk/db'; export default async function (message) { const chatId = message.chat.id; // 插入计数器,如果该聊天已经有一个就增加它——并通过.returning()在同一语句中返回结果行。 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: `你好!我已经看到了你发送的 ${row.seen} 条消息。`, }); } 部署它: npx tgcloud push # 上传模块 npx tgcloud migrate # 创建 `counters` 表 这就是一个具有持久状态且无需服务器的实时机器人。它里面的一切——api,db,table() DSL——都在下面的各个部分中进行了描述。无服务器是 Telegram 机器人的通用后端和小型应用,而不是某一种应用的模板。它非常适合: 对话式 AI 需要在数据库中存储每位用户状态的机器人。 存储用户数据并提供动态内容的小型应用后端。 游戏和工具——包括排行榜、问答等。 调用第三方 HTTP API 并将结果推送到聊天的自动化和集成。 开始使用 本手册将带你从一个空文件夹开始,到一个可以回答消息和存储数据的实时机器人。它假定你已安装 Node.js 18 或更高版本,并在 @BotFather 注册了一个机器人。到最后,你将使用日常所需的每个命令:push,migrate,run 和 status。 在开始之前,先开启无服务器。在 @BotFather 中,打开你的机器人 → 无服务器,并将其打开。这将为该机器人启用该功能并解锁其 CLI 访问令牌、处理程序、库和数据库。 1. 创建项目 启动的最快方式是项目创建器,它能搭建一个项目并将 CLI 安装到其中: npm c
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡