Telegram Bot 模型下:Bot 服务器、Telegram 服务器与用户之间的交互机制

本篇所有内容皆为grok回复

核心结论
Bot 服务器与用户之间无直接通信,所有交互必须通过 Telegram 官方服务器中转。


一、整体架构概览

用户 (Telegram 客户端)
     ↔ HTTPS
Telegram 官方服务器
     ↔ HTTPS (TLS 加密)
Bot 服务器 (你的代码)
  • 用户 ↔ Telegram:直接长连接(WebSocket / HTTPS)
  • Bot 服务器 ↔ Telegram:通过 Bot API(HTTPS)
  • Bot 服务器 ↔ 用户无直接连接

二、两种更新获取模式

模式 说明 数据流向 适用场景
Long Polling(轮询) Bot 主动向 Telegram 拉取更新 Bot → TG → Bot 开发测试、内网服务器
Webhook(钩子) Telegram 主动推送更新到 Bot TG → Bot 生产环境(推荐)

1. Long Polling 流程

sequenceDiagram
    participant U as 用户
    participant TG as Telegram 服务器
    participant B as Bot 服务器

    U->>TG: 发送消息
    B->>TG: getUpdates() [轮询]
    TG-->>B: 返回 Update 列表
    B->>TG: sendMessage()
    TG-->>U: 推送回复
  • 调用:GET /getUpdates
  • 无需公网,但效率低、延迟高

2. Webhook 流程(推荐)

sequenceDiagram
    participant U as 用户
    participant TG as Telegram 服务器
    participant B as Bot 服务器

    Note over B: setWebhook(url) 已设置
    U->>TG: 发送消息
    TG->>B: POST /webhook (JSON Update)
    B-->>TG: HTTP 200
    B->>TG: sendMessage()
    TG-->>U: 推送回复
  • 调用:POST /setWebhook?url=https://yourbot.com/webhook
  • 要求:
    • 公网 HTTPS(443 端口)
    • 有效 SSL 证书
    • 快速响应(< 几秒)

三、核心数据:Update 对象

Telegram 推送/返回的 JSON 示例:

{
  "update_id": 123456789,
  "message": {
    "message_id": 100,
    "from": { "id": 987654321, "first_name": "张三" },
    "chat": { "id": 987654321, "type": "private" },
    "date": 1731171234,
    "text": "/start"
  }
}

包含类型:message, callback_query, inline_query 等。


四、Bot 回复用户(通过 API)

所有回复必须调用 Bot API:

POST https://api.telegram.org/bot
<TOKEN>/sendMessage
Content-Type: application/json

{
  "chat_id": 987654321,
  "text": "你好!"
}

常见方法:

  • sendMessage:文字
  • sendPhoto:图片
  • editMessageText:编辑消息
  • answerCallbackQuery:按钮回调

五、安全机制

机制 说明
Bot Token 唯一身份凭证,类似密码
HTTPS 强制 Webhook 必须使用 TLS
Secret Token 自定义头验证来源
IP 白名单 可限制仅 Telegram IP 访问
# 示例验证
if request.headers.get('X-Telegram-Bot-Api-Secret-Token') != 'your_secret':
    abort(403)

六、完整交互图(Webhook 模式)

graph TD
    A[用户发送消息] --> B(Telegram 服务器)
    B --> C{生成 Update}
    C --> D[POST 到 yourbot.com/webhook]
    D --> E[Bot 验证 HTTPS + Secret Token]
    E --> F[处理逻辑]
    F --> G[调用 sendMessage API]
    G --> B
    B --> H[推送给用户]

七、常见部署方案

平台 Webhook 支持 推荐度
VPS / 云服务器 Yes 5 stars
Heroku / Render Yes 4 stars
Vercel / Cloudflare Warning (需适配) 3 stars
Ngrok Yes (临时) 开发专用

八、为什么不能直连用户?

原因 说明
隐私保护 不暴露用户 IP、设备信息
安全隔离 Bot 无法直接攻击用户
反垃圾 限制主动发送消息
统一管理 Telegram 可封禁恶意 Bot

只能给主动和你聊过的用户发消息


九、官方文档


十、总结表

角色 职责 与谁直接通信
用户 发送消息 Telegram
Telegram 服务器 中转、存储、推送 用户 + Bot
Bot 服务器 处理逻辑、调用 API 仅 Telegram

最终答案
Bot 服务器与用户之间没有直接通信,所有交互 100% 通过 Telegram 官方服务器中转。


推荐生产方案
Webhook + HTTPS + Secret Token + 公网服务器


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注