Skip to content

Telegram Bridge 集成

Telegram Bridge 用于将一个 EdgeChat 公开群组与一个 Telegram 群聊绑定。绑定后,两端的普通文字、Unicode Emoji、图片、视频和普通文件会双向同步,Telegram 用户无需创建 EdgeChat 账号。

前置条件

  1. 在 Telegram 的 @BotFather 创建 Bot 并取得 Bot Token。
  2. 将 Bot 加入目标群组或超级群组。
  3. @BotFather 关闭该 Bot 的群组隐私模式,或将 Bot 设为群管理员,确保它能收到普通群消息。
  4. 准备目标 Telegram 群 ID。群组 ID 是负数,超级群组通常以 -100 开头。

Bot Token 不需要写入 wrangler.toml 或 GitHub Secrets。管理员在 EdgeChat 后台填写后,Worker 会使用现有服务端加密密钥环加密并保存到 D1,前端不会读回 Token 或 Webhook Secret。

连接 Bot

  1. 使用管理员账号登录 EdgeChat。
  2. 进入后台的“Telegram 互通”。
  3. 填写 Bot Token 并点击“连接 Bot”。
  4. EdgeChat 会调用 Telegram getMe 验证 Token,并自动设置当前站点的 Webhook。

更新 Bot Token 时会同时生成新的 Webhook Secret 并重新配置 Webhook。

创建群组映射

  1. 选择一个 EdgeChat 公开群组。
  2. 填写目标 Telegram 群 ID。
  3. 保存映射。

第一版保持一对一关系:一个 EdgeChat 公开群组只能绑定一个 Telegram 群,一个 Telegram 群也只能绑定一个 EdgeChat 公开群组。映射可以暂停、恢复或删除,私有群组和私信不能绑定。

同步规则

  • Telegram 普通文字消息会保存为外部发送者消息,并继续走 EdgeChat 原有的消息持久化、实时广播和未读通知流程。
  • Telegram 图片、视频和普通文件在 16 MiB 以内时会立即下载、加密并复制到 Cloudflare R2;之后 EdgeChat 不再依赖 Telegram 文件地址。
  • Telegram 用户只保存昵称、Telegram 用户 ID 和来源信息,不会创建本地账号。
  • EdgeChat 页面使用统一的发送者模型渲染,Telegram 来源会显示小型 TG 标识。
  • EdgeChat 消息保存成功后异步转发到已绑定的 Telegram 群。
  • EdgeChat 发往 Telegram 的消息使用粗体用户名,用户名和正文之间保留一个空行。
  • EdgeChat 图片使用 sendPhoto,视频使用 sendVideo,语音便笺使用 sendVoice,音频文件使用 sendAudio,其他文件使用 sendDocument
  • Telegram 来源消息不会再次转发回 Telegram,避免消息循环。
  • Telegram Webhook 重试使用群 ID 与消息 ID 去重,不会重复写入和广播同一条消息。

文件存储与限制

Bridge 文件上限统一为 16 MiB。Telegram 入站会在下载前检查声明大小,并在下载后再次检查实际字节数;EdgeChat 出站也会在读取 R2 和上传 Telegram 前检查大小。

  • Telegram → EdgeChat:超限时不下载附件,只同步原 caption;没有 caption 时显示“附件超过 16 MB,未同步”。
  • EdgeChat → Telegram:本地消息保持发送成功,仅跳过超限附件并记录 Bridge warning;原消息文字仍会同步。
  • 未绑定 R2 时:文字消息继续双向同步,文件不会发起下载或读取;Telegram 入站会在正文后标记“当前部署未启用文件存储,附件未同步”。
  • Telegram 文件写入 R2 前使用 EdgeChat 现有附件密钥加密,下载继续经过 EdgeChat Session 和消息访问权限校验。
  • Bot Token 不会出现在 R2 Key、浏览器下载地址或 API 响应中。
  • R2 对象使用 telegram/{chat_id}/{message_id}-{uuid}.{ext} 形式,消息删除和现有 GC 会继续清理不再引用的对象。

当前限制

当前支持普通文字、Unicode Emoji、Telegram 用户昵称、图片、视频、语音、音频和普通文件。暂不支持贴纸、动画、超大文件、消息编辑、撤回、回复关系和话题映射。

密钥轮换

Telegram Bot Token 和 Webhook Secret 依赖 EdgeChat 的服务端加密密钥环。轮换 active key 时可以新增密钥,但必须保留所有仍被历史密文引用的旧 key ID;删除旧密钥会导致已有 Telegram 配置无法解密。

故障排查

  • 后台提示 Token 无效:确认 Token 完整,并且没有多余空格。
  • 无法保存群组映射:确认 Bot 已加入目标群,群 ID 为负数,目标是群组或超级群组而不是频道。
  • Telegram 消息没有进入 EdgeChat:检查 Bot 群组隐私模式、管理员权限和映射是否已开启。
  • EdgeChat 消息没有进入 Telegram:确认 Bot 仍在目标群内且拥有发送消息权限。
  • 文件没有同步:确认文件不超过 16 MiB,且类型属于图片、视频、语音、音频或普通文件。
  • 更换域名后不同步:在后台重新保存 Bot Token,让系统按当前域名重新设置 Webhook。