diff --git a/crates/teloxide-core/src/bot/api.rs b/crates/teloxide-core/src/bot/api.rs index 8f0ef1b8..905318b8 100644 --- a/crates/teloxide-core/src/bot/api.rs +++ b/crates/teloxide-core/src/bot/api.rs @@ -1102,7 +1102,7 @@ impl Requester for Bot { ) } - type CreateNewStickerSet = JsonRequest; + type CreateNewStickerSet = MultipartRequest; fn create_new_sticker_set( &self, diff --git a/crates/teloxide-core/src/requests/multipart_payload.rs b/crates/teloxide-core/src/requests/multipart_payload.rs index 1b5b9242..22ec1202 100644 --- a/crates/teloxide-core/src/requests/multipart_payload.rs +++ b/crates/teloxide-core/src/requests/multipart_payload.rs @@ -1,7 +1,7 @@ use crate::{ payloads, requests::Payload, - types::{InputFile, InputFileLike, InputMedia}, + types::{InputFile, InputFileLike, InputMedia, InputSticker}, }; /// Payloads that need to be sent as `multipart/form-data` because they contain @@ -41,3 +41,17 @@ impl MultipartPayload for payloads::EditMessageMediaInline { self.media.files_mut().for_each(|f| f.move_into(into)) } } + +impl MultipartPayload for payloads::CreateNewStickerSet { + fn copy_files(&self, into: &mut dyn FnMut(InputFile)) { + self.stickers + .iter() + .for_each(|InputSticker { sticker: f, .. }: &InputSticker| f.copy_into(into)) + } + + fn move_files(&mut self, into: &mut dyn FnMut(InputFile)) { + self.stickers + .iter_mut() + .for_each(|InputSticker { sticker: f, .. }: &mut InputSticker| f.move_into(into)) + } +}