电报机器人使用fileid
下载文件。如何从Telegram客户端(我的非官方版本)获取此fileid
? mtproto
中的文件有this location class表示其地址。
文件位置参数
问题是我不知道如何生成适用于fileid
类机器人的File Location
。
更新1:
我试过做一些逆向工程。所以,我发现File Location
类和FileId
之间存在某种关系。
这是我的File Location
示例地址。
0
//此字段仅适用于秘密聊天0
//此字段仅适用于秘密聊天429640340
(199BCA94 HEX
)-3528741004939935589
(CF0764C08833409B HEX
)//根据TG文件,它应该是文件CheckSum 6005
(1775 HEX
)这是我根据FileID
对我从Bot中检索到的前FileLocation
课程的说法:
AgADBAADL6gxG06L8w0nhNO87UW3iZTKmxkABJtAM4jAZAfPdRcAAgI
FileID
值显然是Base64
格式。所以我把它解码了:
0200030400032FA8311B4E8BF30D2784D3BCED45B78994CA9B1900049B403388C06407CF7517000202
现在我们可以看到此十六进制值中的FileLocation
值:
0200030400032FA8311B4E8BF30D2784D3BCED45B789
94CA9B19 HEX
0004
9B403388C06407CF HEX
7517 Hex
000202
注意:值以Big-Endian
格式存储。
现在我们需要解码Unknown
值。我感谢任何有助于解码这些价值的努力。
答案 0 :(得分:1)
这是bot API文件ID的TL方案:https://github.com/danog/MadelineProto/blob/master/src/danog/MadelineProto/TL_botAPI.tl
我在MadelineProto中实现了bot API文件ID转换:你基本上必须对文件ID进行base64解码,通过基于空字节的RLE解码器传递它们,然后使用给定的TL方案对它们进行解码。 请参阅TL / Conversion / BotAPI *以了解在序列化之前如何将MessageMedia对象转换为File对象。
我设法使用此special MTProto bot I built using the same lib对文件ID进行逆向工程(我忘了在这里搜索xd)。