在应用中,我们需要导入用户的联系人。我们找到了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,并且有两种方法可以帮助我:getUserProfilePhotos
和 getFile
。
我尝试了 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 但我不知道如何使用和调用此方法。
那么如何下载这张照片呢?
最佳答案
Telegram API 中的文件下载通过以下方式完成:
upload.getFile#e3a6cfb5 location:InputFileLocation offset:int limit:int = upload.File;
参见 upload.getFile以及https://core.telegram.org/api/files#downloading-files
注意其中一些 API 类型已过时 (look here for the latest),但此处解释了文件下载工作原理的要点。
您拥有所需的一切。在大多数情况下,只需调用 upload.getFile
(最大 512 Kb)即可下载个人资料图片。 link上面给出了清晰的细节。
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 - 如何检索 Telegram 联系人的照片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37191949/