Telegram Bridge 集成
Telegram Bridge 用于将一个 EdgeChat 公开群组与一个 Telegram 群聊绑定。绑定后,两端的普通文字、Unicode Emoji、图片、视频和普通文件会双向同步,Telegram 用户无需创建 EdgeChat 账号。
前置条件
- 在 Telegram 的
@BotFather创建 Bot 并取得 Bot Token。 - 将 Bot 加入目标群组或超级群组。
- 在
@BotFather关闭该 Bot 的群组隐私模式,或将 Bot 设为群管理员,确保它能收到普通群消息。 - 准备目标 Telegram 群 ID。群组 ID 是负数,超级群组通常以
-100开头。
Bot Token 不需要写入 wrangler.toml 或 GitHub Secrets。管理员在 EdgeChat 后台填写后,Worker 会使用现有服务端加密密钥环加密并保存到 D1,前端不会读回 Token 或 Webhook Secret。
连接 Bot
- 使用管理员账号登录 EdgeChat。
- 进入后台的“Telegram 互通”。
- 填写 Bot Token 并点击“连接 Bot”。
- EdgeChat 会调用 Telegram
getMe验证 Token,并自动设置当前站点的 Webhook。
更新 Bot Token 时会同时生成新的 Webhook Secret 并重新配置 Webhook。
创建群组映射
- 选择一个 EdgeChat 公开群组。
- 填写目标 Telegram 群 ID。
- 保存映射。
第一版保持一对一关系:一个 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。
