You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram群组机器人Webhook配置位置及消息获取方法咨询

如何配置Telegram Bot Webhook并获取用户消息

一、Webhook URL的核心配置逻辑

你提到的https://api.telegram.org/bot{my_bot_token}/setWebhook?url={url_to_send_updates_to}这个请求,是直接发给Telegram服务器的,不需要在你的服务器(比如www.example.com)上做额外配置。你的服务器只需要提供一个可被公网访问的HTTPS接口(比如https://www.example.com/telegram-webhook),用来接收Telegram推送的用户消息。

简单梳理:

  • 你的服务器:负责开发并暴露一个接收消息的POST接口(必须支持HTTPS,Telegram强制要求)
  • Telegram服务器:通过你发送的setWebhook请求,将用户的消息自动推送到你指定的接口地址

二、完整操作步骤

1. 准备服务器接收接口

在你的服务器上开发一个POST接口,路径可自定义(比如/telegram-webhook)。这个接口要能解析Telegram推送的JSON格式更新数据,典型数据结构如下:

{
  "update_id": 123456789,
  "message": {
    "chat": {"id": 987654321},
    "text": "用户发送的具体消息内容",
    "from": {"id": 123456789, "username": "test_user"}
  }
}

2. 向Telegram发送setWebhook请求

把你的接口地址替换到{url_to_send_updates_to},把机器人token替换{my_bot_token},可以直接在浏览器访问该URL,或者用curl命令发送:

curl "https://api.telegram.org/bot<你的BotToken>/setWebhook?url=https://www.example.com/telegram-webhook"

成功的话,Telegram会返回类似{"ok":true,"result":true,"description":"Webhook was set"}的响应。

3. 验证Webhook状态

可以通过getWebhookInfo接口检查配置是否生效:

curl "https://api.telegram.org/bot<你的BotToken>/getWebhookInfo"

返回结果会显示当前Webhook的URL、最近的错误记录、推送状态等信息。

三、获取并处理用户消息

当用户在群组或私聊给机器人发消息时,Telegram会自动将消息数据POST到你设置的Webhook接口。你只需要在接口中解析收到的JSON数据,提取message.text(消息内容)、message.from.id(用户ID)、message.chat.id(聊天ID)等字段,即可完成消息处理。

举个Python Flask的简单接口示例:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/telegram-webhook', methods=['POST'])
def handle_webhook():
    update_data = request.get_json()
    if 'message' in update_data:
        chat_id = update_data['message']['chat']['id']
        user_msg = update_data['message']['text']
        # 这里可以添加自定义逻辑,比如回复用户、存储消息等
        print(f"收到消息:{user_msg},来自聊天ID:{chat_id}")
    return jsonify({'status': 'success'})

if __name__ == '__main__':
    # 生产环境需配合HTTPS服务,比如用Nginx反向代理或配置SSL证书
    app.run(host='0.0.0.0', port=443, ssl_context=('cert.pem', 'key.pem'))

四、关键注意事项

  • HTTPS强制要求:Telegram仅支持HTTPS的Webhook地址,端口限定为443、80、88、8443中的一个;本地测试可使用ngrok等工具将本地端口映射为公网HTTPS地址。
  • 接口必须支持POST:Telegram只会用POST方法推送数据,确保你的接口允许POST请求。
  • 避免重复处理:可通过update_id标记已处理的消息,防止因网络波动导致Telegram重复推送。

内容的提问来源于stack exchange,提问作者ashok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:45:45