Fix breaking change in TBA 7.2 which removes is_video and is_animated

This commit is contained in:
Сырцев Вадим Игоревич 2024-06-10 14:30:43 +03:00
parent 1952daf5e2
commit 1cca2aaf28
2 changed files with 78 additions and 2 deletions

View file

@ -105,8 +105,10 @@ pub enum StickerType {
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct StickerFormatFlags { pub struct StickerFormatFlags {
/// True, if the sticker is animated /// True, if the sticker is animated
#[serde(default)]
pub is_animated: bool, pub is_animated: bool,
/// True, if the sticker is a video sticker /// True, if the sticker is a video sticker
#[serde(default)]
pub is_video: bool, pub is_video: bool,
} }

View file

@ -20,6 +20,7 @@ pub struct StickerSet {
#[serde(flatten)] #[serde(flatten)]
pub kind: StickerType, pub kind: StickerType,
// FIXME: remove it in 7.2 https://core.telegram.org/bots/api#march-31-2024
/// Sticker format flags shared by all stickers in this set. /// Sticker format flags shared by all stickers in this set.
#[serde(flatten)] #[serde(flatten)]
pub flags: StickerFormatFlags, pub flags: StickerFormatFlags,
@ -112,7 +113,7 @@ mod tests {
"is_animated": false, "is_animated": false,
"is_video": false, "is_video": false,
"type": "regular", "type": "regular",
"thumb": { "thumbnail": {
"file_id": "AAMCAQADFQABYzB4ATH0sqXx351gZ5GpY1Z3Tl8AAlgCAAJ1t4hFbxNCoAg1-akBAAdtAAMpBA", "file_id": "AAMCAQADFQABYzB4ATH0sqXx351gZ5GpY1Z3Tl8AAlgCAAJ1t4hFbxNCoAg1-akBAAdtAAMpBA",
"file_unique_id": "AQADWAIAAnW3iEVy", "file_unique_id": "AQADWAIAAnW3iEVy",
"file_size": 7698, "file_size": 7698,
@ -131,7 +132,7 @@ mod tests {
"is_animated": false, "is_animated": false,
"is_video": false, "is_video": false,
"type": "regular", "type": "regular",
"thumb": { "thumbnail": {
"file_id": "AAMCAQADFQABYzB4AcABR8-MuvGagis9Pk6liSAAAs8DAAL2YYBFNbvduoN1p7oBAAdtAAMpBA", "file_id": "AAMCAQADFQABYzB4AcABR8-MuvGagis9Pk6liSAAAs8DAAL2YYBFNbvduoN1p7oBAAdtAAMpBA",
"file_unique_id": "AQADzwMAAvZhgEVy", "file_unique_id": "AQADzwMAAvZhgEVy",
"file_size": 7780, "file_size": 7780,
@ -152,4 +153,77 @@ mod tests {
assert!(set.thumbnail.is_none()); assert!(set.thumbnail.is_none());
assert_eq!(set.stickers.len(), 2); assert_eq!(set.stickers.len(), 2);
} }
#[test]
// In TBA7.2 fields `is_video` and `is_audio` are removed, so it's the breaking
// change.
fn test() {
let json = r#"{
"name": "tba66_by_memorization_helper_bot",
"title": "Teloxide TBA6.6 TEST",
"sticker_type": "regular",
"contains_masks": false,
"stickers": [
{
"width": 512,
"height": 512,
"emoji": "\\ud83e\\udd80",
"set_name": "tba66_by_memorization_helper_bot",
"is_animated": false,
"is_video": false,
"type": "regular",
"thumbnail": {
"file_id": "AAMCAgADFQABZmbS1r0a5NWqrPIHJSCabGw3LUwAAh5MAAKRGTlL-H1XHcgw5coBAAdtAAM1BA",
"file_unique_id": "AQADHkwAApEZOUty",
"file_size": 7786,
"width": 320,
"height": 320
},
"thumb": {
"file_id": "AAMCAgADFQABZmbS1r0a5NWqrPIHJSCabGw3LUwAAh5MAAKRGTlL-H1XHcgw5coBAAdtAAM1BA",
"file_unique_id": "AQADHkwAApEZOUty",
"file_size": 7786,
"width": 320,
"height": 320
},
"file_id": "CAACAgIAAxUAAWZm0ta9GuTVqqzyByUgmmxsNy1MAAIeTAACkRk5S_h9Vx3IMOXKNQQ",
"file_unique_id": "AgADHkwAApEZOUs",
"file_size": 11936
},
{
"width": 512,
"height": 512,
"emoji": "\\ud83e\\udd80",
"set_name": "tba66_by_memorization_helper_bot",
"is_animated": false,
"is_video": false,
"type": "regular",
"thumbnail": {
"file_id": "AAMCAgADFQABZmbS1jN5O3rMp4gsH3eeBPajWVUAAoxIAAKtXDhLhabEKw0iE9sBAAdtAAM1BA",
"file_unique_id": "AQADjEgAAq1cOEty",
"file_size": 7768,
"width": 320,
"height": 320
},
"thumb": {
"file_id": "AAMCAgADFQABZmbS1jN5O3rMp4gsH3eeBPajWVUAAoxIAAKtXDhLhabEKw0iE9sBAAdtAAM1BA",
"file_unique_id": "AQADjEgAAq1cOEty",
"file_size": 7768,
"width": 320,
"height": 320
},
"file_id": "CAACAgIAAxUAAWZm0tYzeTt6zKeILB93ngT2o1lVAAKMSAACrVw4S4WmxCsNIhPbNQQ",
"file_unique_id": "AgADjEgAAq1cOEs",
"file_size": 12092
}
]
}"#;
let set: StickerSet = serde_json::from_str(json).unwrap();
assert!(set.is_static());
assert!(set.is_regular());
assert!(set.thumbnail.is_none());
assert_eq!(set.stickers.len(), 2);
}
} }