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

如何正确向Telegram API发送请求?自定义方法遇阻求助

问题拆解与解决

先解决404的核心原因

你搞错了Telegram的API体系!stats.getBroadcastStats是MTProto核心API的方法,不是给机器人用的Bot API。你用Bot API的URL格式(https://api.telegram.org/bot<token>/<method>)去调用,肯定会返回404——这俩完全是两套独立的接口。

为什么公开频道统计需要身份验证?

哪怕是公开频道,统计数据也不是谁都能拿的。只有频道管理员、或者被授权的账号(包括机器人,但机器人得先成为频道管理员)才能获取。所以必须验证请求者的身份,你用bot token其实不对,MTProto API需要的是API ID/Hash+会话授权,不是Bot API的token。

参数格式的疑问

如果是Bot API的方法,参数支持两种传递方式:

  • URL查询字符串:比如https://api.telegram.org/bot<token>/sendMessage?chat_id=123&text=hello
  • POST请求体:可以用JSON格式(Content-Type设为application/json)或者表单格式

但stats.getBroadcastStats属于MTProto API,参数得用Telegram自定义的TL语言序列化,根本不能直接传JSON或者URL参数,这也是你调用失败的原因之一。

正确调用的姿势

  1. 别自己硬写了,直接用封装好的MTProto库,比如Python的telethon或者pyrogram,这俩都支持stats.getBroadcastStats方法,只需要配置好API ID/Hash,授权后就能直接调用。
  2. 如果非要自己实现,得先搞懂MTProto的整套流程:
    • 去Telegram开发者平台申请API ID和API Hash(不是bot token)
    • 建立MTProto会话,完成账号/机器人的授权
    • 按照TL格式构造stats.getBroadcastStats的参数(比如channel参数需要是InputChannel类型,得用频道的ID和access hash构造)
    • 用MTProto的协议发送序列化后的请求

怎么读懂Telegram的官方文档?

Telegram的文档分两类,别混着看:

  • Bot API文档:专门给机器人用,所有方法都有明确的URL调用示例、参数说明、返回格式。找方法先看是不是在Bot API的方法列表里,比如sendMessage、getUpdates这些都在这里。
  • MTProto核心API文档:这里的方法是底层接口,每个方法会标注命名空间(比如stats.开头),还有TL定义、参数类型、权限要求。看的时候注意:
    • 先确认方法属于哪套API,别把MTProto的方法拿到Bot API里调用。
    • 注意参数的类型,不是简单的字符串/数字,很多参数需要用TL结构构造(比如InputChannel)。
    • 看清楚权限要求:比如stats.getBroadcastStats要求调用者是频道管理员,或者有查看统计的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:35:05