# @copilotkit/channels-telegram 中文文档

规范地址：https://npmcn.com/package/%40copilotkit/channels-telegram/

版本：0\.11\.1
npm 元数据更新时间：2026-10-16T01:32:41.666Z
中文译文更新时间：2026-11-10T18:28:04.278Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40copilotkit/channels-telegram
原文对照：https://npmcn.com/package/%40copilotkit/channels-telegram/?lang=original
项目主页：https://github.com/CopilotKit/CopilotKit
源码仓库：https://github.com/CopilotKit/CopilotKit

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：176 kB，48 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：4 个
- 首次发布：2026-07-08T19:58:33.612Z
- 最新版本发布：2026-10-16T01:32:41.348Z
- 近 30 天下载量：54651（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：44（近 12 个月 44 个）

## 中文简介

CopilotKit JSX频道的Telegram平台适配器 (@copilotkit/channels).

## 安装

```sh
npm install @copilotkit/channels-telegram
```

也可以使用：`pnpm add @copilotkit/channels-telegram`、`yarn add @copilotkit/channels-telegram`、`bun add @copilotkit/channels-telegram`

## README

# @ copilotkit/ channels- telegram (英语)

这个 **电报 `PlatformAdapter`** 页:1 [`@copilotkit/channels`](https://npmcn.com/package/%40copilotkit/channels)连接 a 给任何AG-UI代理的Telegram bot:通过grammY(长波波或webhook)入侵, 以 Telegram HTML 从 `@copilotkit/channels-ui` JSX词汇, 加上通过块状消息编辑的流出,不透明-ID交互,以及HITL.

你曾经将你的UI写成JSX(`@copilotkit/channels-ui`和驱动机器人与 `@copilotkit/channels`;这个包是唯一一个和Telegram说话的.

适配器保存着自己的Telegram bot sorders — 在管理路径中 Channel 在副驾驶 Kit 智能配置内运行 `CopilotRuntime` (免费计划) ),它开始并拥有频道的生命周期. 大楼 在 SDK 原始版本上操作自己的频道运行器也是支持的 路径.

## 安装

```sh
pnpm add @copilotkit/channels-telegram @copilotkit/channels @copilotkit/channels-ui
```

## 快速启动

> **文件必须是 `.tsx`** ——"TypeScript"中的"JSX"要求"JSX"工厂必须是" 已配置 。 指着它 `@copilotkit/channels-ui` 在你身边 `tsconfig.json`数字 :
> 
> ```json
> {
>   "compilerOptions": {
>     "jsx": "react-jsx",
>     "jsxImportSource": "@copilotkit/channels-ui"
>   }
> }
> ```

```tsx
import { createChannel } from "@copilotkit/channels";
import {
  telegram,
  defaultTelegramTools,
  defaultTelegramContext,
} from "@copilotkit/channels-telegram";
import { Message, Section } from "@copilotkit/channels-ui";
import { CopilotRuntime, CopilotKitIntelligence } from "@copilotkit/runtime/v2";
import { createCopilotNodeListener } from "@copilotkit/runtime/v2/node";

const bot = createChannel({
  identifyUser: "platform",
  name: "support-bot", // project-unique Intelligence Channel name
  adapters: [
    telegram({
      token: process.env.TELEGRAM_BOT_TOKEN!,
    }),
  ],
  agent: (threadId) => makeAgent(threadId),
  tools: [...defaultTelegramTools, ...appTools], // lookup_telegram_user + your tools
  context: [...defaultTelegramContext, ...appContext], // tagging/HTML/thread guidance
});

bot.onMention(({ thread }) => thread.runAgent());

// Optional: greet users when they start a DM
bot.onThreadStarted(async ({ thread }) => {
  await thread.post(
    <Message>
      <Section>Hi! How can I help?</Section>
    </Message>,
  );
});

// The runtime owns the channel's lifecycle — there is no `bot.start()`.
const runtime = new CopilotRuntime({
  intelligence: new CopilotKitIntelligence({
    // apiUrl and wsUrl default to cloud-hosted CopilotKit Intelligence — override
    // both together only for a self-hosted deployment.
    apiKey: process.env.CPK_INTELLIGENCE_API_KEY!, // free tier available
  }),
  channels: [bot],
});

// Creating the listener starts the Channel's connection.
const listener = createCopilotNodeListener({ runtime });
// Optional: await that activation so a broken config fails startup loudly.
await listener.channels.ready(); // listener.channels.stop() tears it down
```

`telegram(opts)` 返回 a `TelegramAdapter`。默认情况下,它会运行于 **长波** 模式 — 不需要公共 URL 。 设定 `mode: "webhook"` (与 `webhook.domain`)通过HTTP接收更新,或 `mode: "auto"` 让 基于环境变量的适配器选择(在Vercel/Lambda中首选webhook) 环境,回归民意调查).

### 必需的嵌入

| 瓦尔 | 目的 |
| --- | --- |
| `TELEGRAM_BOT_TOKEN` | @BotFather(如. `123:ABC-xyz`(中文(简体) ) |

## 它提供的东西

### JSX → Telegram HTML渲染+限制

`renderTelegram(ir)` 翻译 `@copilotkit/channels-ui` 词汇到 a Telegram Bot API 有效载荷(`text`, (中文(简体) ), `parseMode: "HTML"`选项 `inlineKeyboard`选项 `photos`: `Message → container`, (中文(简体) ), `Header → <b>`, (中文(简体) ), `Section/Markdown → telegramHtml()`, (中文(简体) ), `Field(s) → <b>label</b> value`, (中文(简体) ), `Context → <i>`, (中文(简体) ), `Actions → inline keyboard rows`, (中文(简体) ), `Select → inline keyboard rows`, (中文(简体) ), `Image → photo`, (中文(简体) ), `Table → <pre> monospace grid`, (中文(简体) ), `Divider → ──────`。 。 。 .

电讯API限制通过 `TELEGRAM_LIMITS` 援助者们

| 限制 | 数值 | 元素 |
| --- | --- | --- |
| `messageText` | 4096 (英语) | 每个信件的字符 |
| `caption` | 第1024号 | 标题字符 |
| `callbackData` | 64国道 | 每个召回数据字节 |
| `buttonsPerRow` | 第8条 | 按钮/ 内置键盘行 |
| `buttonsPerMessage` | 100个 | 全部内置键盘按钮 |
| `buttonText` | 64国道 | 按钮标签字符 |
| `photosPerMessage` | 10个 | 每个消息的照片 |

### 通过块化编辑流出

通过的答复流 `ChunkedEditStream`:适配器设置占位符 消息并编辑它作为符号到达,按住每秒一次编辑。 当a 答覆接近 Telegram 的 4 096- Char 限制( ~ 400 000 个字符) 流 透明地薄荷表示第二个信息并继续——保留每个电报 信件在限制范围内,没有已冻结块边界的回流.

### 互动(相对第一)

每张电报 `callback_query` (内线键盘按钮点击) 被锁定 快速通过 `answerCallbackQuery` - 适配器的 - 对 - the 适配器的 `ackDeadlineMs` 是 3 个sso 客户端旋转器迅速清除, 远远在Telegram ~ 30 s 的有效性之内 窗口 `answerCallbackQuery`敲门后, `decodeInteraction` 摘录 谈话的钥匙和不透明的标识 手掌 `InteractionEvent` 改为 发动机。 无关的点击可解码到bot无害地忽略的事件.

### 通过 ActionStore 的 HITL

使用 `thread.awaitChoice(<Picker .../>)` 发布交互式内置键盘 并屏蔽到点击解决为止;解析的数值是点击的按钮的 调用数据。 代理中断( E)`on_interrupt`) 被运行的渲染器捕获 并发送到您的 `onInterrupt` 处理器,它会张贴一个拾取器;单击 通过 `thread.resume(value)`。 。 。 .

### `/start` → `onThreadStarted`

监听者截取电报 `/start` 命令在私人聊天和 火灾 `onThreadStarted`,让机器人张贴问候或配置 第一回合前的谈话.

### 输入/退出文件

输入文件附件(相片、音频、视频、文档)可下载 并作为多式AG-UI内容部件通过 `buildFileContentParts`。适配器可以通过 `thread.postFile({ bytes, filename })` (作为 `document`) (中文(简体) ).

### 内建

-   `defaultTelegramTools` - 船舶 `lookup_telegram_user` 这样经纪人就可以 解决公众问题 `@username` 处理到用于@-mentions的Telegram用户代号. 工具调用 `getChat` 仅供公众使用 `@username` 控件; 不支持任意显示名称查询 返回未定义。 展开到 `tools`。 。 。 .
-   `defaultTelegramContext` 标记程序,Markdown-vs-HTML指导,以及 telegram DM / 论坛主题 / 组合用户对话模式。 展开到 `context`。 。 。 .

### 通过 `setMyCommands`

`registerCommands(specs)` 电话 `bot.api.setMyCommands`,登记 在Telegram UI中可见命令菜单。 听者把每个机器人都转过来 命令到引擎的 `onCommand` 管理者.

## 入侵模式

| 模式 | 如何运作 |
| --- | --- |
| `polling` | **默认.** 格莱姆Y长波林. 不需要公开的 URL . |
| `webhook` | grammY webhook + 最小节点HTTP服务器. 要求数 `webhook.domain`。 。 。 . |
| `auto` | 网络浏览时 `VERCEL`编号 :`AWS_LAMBDA_FUNCTION_NAME`编号 :`NETLIFY` 已经设定,否则投票. |

## 反应

`message_reaction` 自动启用更新。 适配器输出 `TELEGRAM_ALLOWED_UPDATES` (它所订阅的完整更新类型列表)和 把它传给奶奶的长波 `start()` 电话.

**分组聊天 :** 机器人必须是一个 **管理员** 待收款项 `message_reaction` 事件。 私人聊天和频道工作,没有任何 额外权限.

**Webhook 部署 :** 将同一列表传递给 `setWebhook`数字 :

```ts
import { TELEGRAM_ALLOWED_UPDATES } from "@copilotkit/channels-telegram";

await bot.api.setWebhook(url, {
  allowed_updates: [...TELEGRAM_ALLOWED_UPDATES],
});
```

## V1里没有什么

-   **模块/ 本地形式提交** - Telegram没有模式表面;多步骤 形式必须是对话驱动的. `openModal` 决定 `{ ok: false }` 打开 这个适配器——发动机把方法关了,因为 `supportsModals` 实值 `false`。 。 。 .
-   **原生电文** - 电报没有每个用户可见的信息; `supportsEphemeral` 实值 `false`启用 `thread.postEphemeral(user, ui, { fallbackToDM: true })` 派一个私人的DM作为后盾. **重新编辑需要用户拥有 之前用机器人开始的DM** (直接同意至少一条); 如果他们没有的话,DM `sendMessage` 呼叫会失败 `postEphemeral` 决定 `{ ok: false }` 而不是扔东西.
-   **原生溪流** ——Telegram没有服务器推出流线;流线是 大约通过节奏 `editMessageText` 打电话.
-   **持久( Redis/ DB) 对话存储** —— 说 `TelegramConversationStore` 实值 in-memory; 重新启动时会话和信件历史丢失.
-   **多机器人安装** ——每个适配器实例一个bot令牌.
-   **`<Select>` 选项值回转** - 电报 `callback_data` 有限 到 64 字节。 如果一个选项 `value` 或者说 `id` 序列化为64字节以上 渲染器静静地放下( 降级) 该选项—— 按钮只是做 不出现在键盘中。 使用短数 `id` 字符串在 `<Option>` 要素 当选项值是大对象时.

## 已知的限制

-   **集体对话模式** ——在普通(非论坛)小组聊天中,bot 每个用户/组的每次对话按键( e)`user:<userId>`:每个成员的 @mentions为该用户组成一个持续的对话,并点击 解决点击用户的对话。 机器人会的 **没有** 维护 单个共享组线索。 论坛超群使用每个主题的线程 (单位:千美元)`topic:<threadId>`); DMs是单一的平面对话(`dm`) (中文(简体) ).
-   **`update()` 不改变媒体** ——编辑一则先前贴出的消息 通过 `thread.update(ref, ir)` 电话 `editMessageText` 并更新文本加 只有内置键盘。 原信件所附照片不是 换了.
-   **输入文件** 文件附件(相片、音频、视频、文件) 下载后作为多式AG-UI内容部件交付代理商. 超过Telegram大小上限的大型文件 `getFile` 被跳过 代替他们的笔记.
-   **`lookup_telegram_user` 实值 `@username`\- 仅限** ——工具解决公有问题 `@username` 调用控件 `getChat`。不以 `@` 立即返回未定义; 任意显示名称或真名 不支持搜索.
-   **组合 HITL( 交互按钮) 是每个用户** - 因为非论坛小组 每个发送者对口按键, 一个内置键盘提示 用户仅在 _那个_ 用户点击它。 一个不同的集团成员 单击同一按钮时已锁定, 但不能解决原用户的 待定.
-   **货币** - 内幕谈话店不串行 同时转身进行同样的对话。 快速背对背信息输入 一次谈话可以互通 这可以用于典型用途;a 耐用/锁入店不在v1范围.

## 出口

`telegram`, (中文(简体) ), `TelegramAdapter`, (中文(简体) ), `TelegramAdapterOptions`· ; `createRunRenderer`, (中文(简体) ), `CreateRunRendererArgs`· ; `decodeInteraction`, (中文(简体) ), `conversationKeyOf`, (中文(简体) ), `deriveConversationKey`, (中文(简体) ), `toProviderActor`· ; `renderTelegram`· ; `TELEGRAM_LIMITS`, (中文(简体) ), `truncateText`, (中文(简体) ), `clampArray`, (中文(简体) ), `byteLen`· ; `defaultTelegramTools`, (中文(简体) ), `lookupTelegramUserTool`· ; `defaultTelegramContext`, (中文(简体) ), `telegramTaggingContext`, (中文(简体) ), `telegramFormattingContext`, (中文(简体) ), `telegramConversationModelContext`· ; `telegramHtml`, (中文(简体) ), `escapeHtml`· ; `withTelegramFormatFallback`, (中文(简体) ), `stripHtml`· ; `TelegramConversationStore`· ; `ChunkedEditStream`, (中文(简体) ), `ChunkedEditStreamConfig`· ; `attachTelegramListener`, (中文(简体) ), `ListenerConfig`· ; `buildFileContentParts`, (中文(简体) ), `TelegramFileRef`, (中文(简体) ), `AgentContentPart`, (中文(简体) ), `FileDeliveryConfig`· ; 类型 : `ConversationKey`, (中文(简体) ), `ReplyTarget`, (中文(简体) ), `TelegramMessageRef`, (中文(简体) ), `TelegramInlineButton`, (中文(简体) ), `TelegramPayload`; 数值 `DM_SCOPE`。 。 。 .

## 常见问题

### @copilotkit/channels-telegram 是什么？

CopilotKit JSX频道的Telegram平台适配器 \(@copilotkit/channels\)\.

### 如何安装 @copilotkit/channels-telegram？

在项目目录运行 npm install @copilotkit/channels-telegram，或使用 pnpm add / yarn add / bun add。

### @copilotkit/channels-telegram 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @copilotkit/channels-telegram 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @copilotkit/channels-telegram 可以商用吗？

@copilotkit/channels-telegram 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @copilotkit/channels-telegram 的下载量有多少？

根据 npm 官方下载统计，@copilotkit/channels-telegram 在 2026/10/11 – 2026/11/09 这 30 天内被下载 54,651 次，日均约 1,822 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @copilotkit/channels-telegram 还在维护吗？

最新版本 0\.11\.1 发布于 2026/10/16（25 天前）；至今共发布 44 个版本，其中过去 12 个月发布了 44 个；首次发布于 2026/07/09。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

