Skip to main content
BotMux 在 /tgapi/ 提供 Telegram API 代理,透明转发请求到 api.telegram.org 并捕获发出的消息。代理还会拦截多个管理方法,使您的后端可以使用标准 Telegram Bot API 而不会与 BotMux 的内部状态冲突。

为什么使用 API 代理?

Telegram 的 getUpdates 只返回收到的消息——机器人自身发送的消息不包含在内。API 代理通过拦截发送方法并将发出的消息保存到数据库来解决这个问题。

设置

更改后端的 API 基础 URL:
代理将所有请求转发到 Telegram 并原样返回响应,但被拦截的方法除外,这些方法由 BotMux 内部处理。

文件下载代理

BotMux 还提供文件下载端点,可作为 Telegram 机器人库的 base_file_url 直接替换:
此端点从 Telegram 下载文件并流式传输给客户端。WebP 文件(贴纸)会自动转换为 PNG 以兼容浏览器。

Local Bot API Server 作为上游

BotMux 可使用自托管的 Telegram Bot API Server 替代 api.telegram.org:
当上游以 --local 模式运行时,getFile 可能返回绝对文件系统路径。BotMux 通过两种方式处理:
  1. 通过 /tgapi/ — getFile 响应将绝对 file_path 重写为 BotMux 相对路径,后端可继续使用 base_file_url=http://botmux:8080/tgapi。
  2. 直接读取文件系统 — 若 BotMux 与 Local Bot API 共享卷,指定文件根目录:
使用 -tg-api-files 时,/api/media 和 /tgapi/file/ 可直接从磁盘提供文件。设置自定义 -tg-api 后会自动启用更大的上传限制(约 2 GB)和更长的超时。

捕获的发送方法

当启用代理模式时,API 代理 URL 会显示在机器人详情视图中(点击复制)。

被拦截的方法

以下 Telegram Bot API 方法被代理拦截,由 BotMux 内部处理而不是转发到 Telegram:
当设置 BOTMUX_ALLOW_AUTO_REGISTER=1 时,setWebhook 拦截实现了零配置迁移:将您现有的机器人后端指向 BotMux 的 API 代理 URL,BotMux 将自动注册机器人并开始将更新转发到您的后端。