如何检索Telegram联系人的照片?

4
在应用程序中,我们需要导入用户的联系人。我们发现Telegram.Link实现了Telegram API。它有一个检索联系人的方法。单个联系人如下所示:
{
T: api.type.UserContact,
id: 148049613,
first_name: "M.",
last_name: "Barezban",
username: "Barezban",
access_hash: "0x47ad17f617b9e945",
phone: "989363356056",
photo: {
  T: api.type.UserProfilePhoto,
  photo_id: "0x08d30ecd1b31a7bc",
  photo_small: {
    T: api.type.FileLocation,
    dc_id: 4,
    volume_id: "0x00000000192931a8",
    local_id: 75848,
    secret: "0xac6db13d308318b3"
  },
  photo_big: {
    T: api.type.FileLocation,
    dc_id: 4,
    volume_id: "0x00000000192931a8",
    local_id: 75850,
    secret: "0x4f302deb78247cce"
  }
},
status: {
  T: api.type.UserStatusOffline,
  was_online: 1463043346
}}

我找不到下载个人资料照片的方法。我应该使用哪种方法?
我尝试了python-telegram-bot,它实现了Telegram Bot API并有两种方法可以帮助我:getUserProfilePhotosgetFile
我尝试了bot.getUserProfilePhotos(148049613),但是得到了telegram.error.NetworkError: Bad Request: user not found (400)
我还尝试了bot.getFile('0x08d30ecd1b31a7bc'),但是得到了telegram.error.NetworkError: Bad Request: invalid file id (400) 还有一种名为upload.getFile的方法,它使用volume_id、local_id和secret,但我不知道如何使用和调用这个方法。
那么我该如何下载这张照片?
1个回答

0
在 Telegram API 中进行文件下载的方式是:

upload.getFile#e3a6cfb5 location:InputFileLocation offset:int limit:int = upload.File;

请查看upload.getFile以及https://core.telegram.org/api/files#downloading-files

注意,其中一些API类型已过时(在此处查看最新信息),但文件下载的基本原理在那里有解释。

您拥有所需的一切。在大多数情况下,您只需调用upload.getFile(最多512 KB)即可下载个人资料图片。上面的链接提供了清晰的详细信息。

1)对于InputFileLocation,请使用

api.type.FileLocation{
   dc_id: 4,
   volume_id: "0x00000000192931a8",
   local_id: 75850,
   secret: "0x4f302deb78247cce"}

2) 对于偏移量,请使用:0

3) 对于限制,请使用:0

请注意,您需要从正确的连接发送此内容,即连接到dc_id = 4,以避免

{error_code: 303, error_message: "USER_MIGRATE_4" / "FILE_MIGRATE_4"}  

谢谢您的回答。您知道在Python或Meteor(Node.js)中有没有这种方法的实现吗? - omid
@omid 抱歉,我不太熟悉 Python 编程。但是这个功能不是已经包含在你的 Telegram 链接中了吗?你可以扩展 GitHub 存储库来实现这个功能,对吧? - Charles Okwuagwu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接