如何通过UserID查询Telegram用户信息,非聊天列表用户如何处理
Tdlib 基于陌生user_id查询用户信息的解决方法
问题原因
getUser 接口仅能读取Tdlib本地缓存中已有的用户数据,不在你的聊天列表内的用户默认不会预拉取数据到本地缓存,因此直接调用该接口无法返回结果。
可行解决方案
- 优先使用
searchUser接口
该接口会直接向Telegram服务端发起查询请求,无需依赖本地缓存。直接把目标user_id的字符串形式作为query参数传入即可,只要用户ID合法且用户未开启禁止通过ID搜索的隐私设置,就能拿到对应用户信息。
调用示例:
接口返回的{ "@type": "searchUser", "query": "2024211111", "limit": 1 }users数组第一个元素即为目标用户数据,查询完成后Tdlib会自动把该用户数据写入本地缓存,后续再调用getUser也会正常返回结果。 - 备选方案:临时导入联系人
如果searchUser无返回结果,可以先调用importContacts接口导入该user_id对应用户为临时联系人,导入完成后再调用getUser即可正常拉取信息,不需要留存的话后续调用removeContacts删除即可,整个操作不会给用户发任何通知。
注意事项
若目标用户开启了「不允许陌生人通过用户ID搜索到我」的隐私设置,以上两种方法均无法查询到该用户信息,属于正常的权限限制,无规避方案。
内容的提问来源于stack exchange,提问作者Air Loid
相关产品推荐
相关产品推荐

