/ / Обробка невизначених типів у схемі API Telegram.org, наприклад “MessageMedia” - api, telegram

Обробка невизначених типів в схемі Telegram.org API, наприклад "MessageMedia" - api, telegram

У схемі 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