diff --git a/src/types/user_profile_photos.rs b/src/types/user_profile_photos.rs
index 21d62bd6..26d8a934 100644
--- a/src/types/user_profile_photos.rs
+++ b/src/types/user_profile_photos.rs
@@ -14,3 +14,27 @@ pub struct UserProfilePhotos {
     /// Requested profile pictures (in up to 4 sizes each).
     pub photos: Vec<Vec<PhotoSize>>,
 }
+
+impl UserProfilePhotos {
+    pub fn new<P1, P2>(total_count: u32, photos: P1) -> Self
+    where
+        P1: Into<Vec<P2>>,
+        P2: Into<Vec<PhotoSize>>,
+    {
+        Self { total_count, photos: photos.into().into_iter().map(Into::into).collect() }
+    }
+
+    pub fn total_count(mut self, val: u32) -> Self {
+        self.total_count = val;
+        self
+    }
+
+    pub fn photos<P1, P2>(mut self, val: P1) -> Self
+    where
+        P1: Into<Vec<P2>>,
+        P2: Into<Vec<PhotoSize>>,
+    {
+        self.photos = val.into().into_iter().map(Into::into).collect();
+        self
+    }
+}