У схемі api telegram.org файл message
тип визначається як такий:
message # c09be45f flags: # out: flags.1? True згадано: flags.4? True media_unread: flags.5? True silent: flags.13? True post: flags.14? True id: int from_id: flags.8? Int to_id: Peer fwd_from: flags.2? MessageFwdHeader via_bot_id: flags.11? Int reply_to_msg_id: flags.3? Int date: int message: string media: flags.9? MessageMedia reply_markup: flags.6? ReplyMarkup entity: flags.7? Vector views: flags.10? Int edit_date : flags.15? int = Повідомлення;
Зверніть увагу на необов’язковий параметр media:flags.9?MessageMedia
визначається як тип MessageMedia
. Але ніде немає MessageMedia
визначено, тому мій клієнт не знає, як його серіалізувати / десеріалізувати.
Який тип MessageMedia
, і як я маю справу з іншими типами, які можуть не бути визначеними?
Відповіді:
0 для відповіді № 1Найкращий спосіб зрозуміти це - це media:flags.9?MessageMedia
являє собою загальний тип або, як вони кажуть a base type
який може бути будь-яким із таких типів:
messageMediaEmpty#3ded6320 = MessageMedia;
messageMediaPhoto#3d8ce53d photo:Photo caption:string = MessageMedia;
messageMediaGeo#56e0d474 geo:GeoPoint = MessageMedia;
messageMediaContact#5e7d2f39 phone_number:string first_name:string last_name:string user_id:int = MessageMedia;
messageMediaUnsupported#9f84f49e = MessageMedia;
messageMediaDocument#f3e02ea8 document:Document caption:string = MessageMedia;
messageMediaWebPage#a32dd600 webpage:WebPage = MessageMedia;
messageMediaVenue#7912b71f geo:GeoPoint title:string address:string provider:string venue_id:string = MessageMedia;
Цей шаблон є загальним у всьому API Telegram