2016-05-12 108 views
3

在應用程序中,我們需要導入用戶的聯繫人。我們發現其中實現了Telegram API的Telegram.Link。它有一個檢索聯繫人的方法。單個聯繫人顯示如下:如何檢索電報聯繫人的照片?

{ 
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和祕密的方法,但我不知道如何使用和調用此方法。

那麼我該如何下載這張照片呢?

回答

0

在電報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"} 
+0

感謝您的回答。你知道在Python或流星(Node.js)中的這種方法的任何實現嗎? – omid

+0

@omid對不起,我沒有編寫太多的python。但是這不包括在你的telegram.link?你可以擴展GitHub倉庫來做到這一點,是嗎? –