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

调用Telegram Bot的getUserProfilePhotos获取用户头像返回空如何解决

问题原因及解决方案


1. 参数传递格式错误

Telegram Bot API 对大多数简单接口的POST请求,要求参数以application/x-www-form-urlencoded格式传递,你当前代码使用json=par传递JSON格式参数,接口无法正确解析参数,虽然返回ok为true,但实际参数没有生效,会默认返回空结果。
修复方案:将请求行改为dataReq = requests.post(requestStr, data=par),或者直接使用GET请求把参数拼接到URL中。

2. 机器人没有获取用户信息的权限

根据Telegram隐私规则,机器人必须满足以下任意一个条件,才能获取用户头像:

  • 用户曾经主动给你的机器人发送过消息
  • 用户曾经主动点击过你机器人的inline交互按钮
  • 用户和机器人在同一个公开群组/频道中,且机器人拥有管理员权限
    如果用户从未和你的机器人产生过任何交互,就算你拿到了正确的用户ID,接口也会返回空的头像列表。

3. 传入的user_id不正确

请确认你传入的user.id是用户和机器人交互时,Telegram主动推送给你的字段值,不要使用第三方工具查询的用户ID,也不要把群组/频道的chat_id误作为user_id传入。


修复后代码示例

def getUserProfilePicture (self, user : User):
    if (user is None) : return None
    requestStr = self.httpbase + self.token + "/getUserProfilePhotos"
    par ={
        "user_id" : user.id,
        "limit" : 5
    }
    # 改为用data传递表单格式参数
    dataReq = requests.post(requestStr, data=par)
    updateData = dataReq.json() # requests自带json解析方法,不需要手动loads
    isOk = updateData.get("ok")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:36:01