#![allow(clippy::too_many_arguments)]
use serde::Serialize;
use crate::error::Result;
use crate::input_file::InputFile;
use crate::Bot;
use std::collections::HashMap;
impl Bot {
pub fn set_sticker_set_thumbnail<F: InputFile>(
&self,
name: String,
user_id: i64,
format: String,
) -> SetStickerSetThumbnailBuilder<F> {
SetStickerSetThumbnailBuilder::new(self, name, user_id, format)
}
}
#[derive(Serialize)]
pub struct SetStickerSetThumbnailBuilder<'a, F: InputFile> {
#[serde(skip)]
bot: &'a Bot,
#[serde(skip)]
data: HashMap<&'a str, F>,
pub name: String,
pub user_id: i64,
pub format: String,
}
impl<'a, F: InputFile> SetStickerSetThumbnailBuilder<'a, F> {
pub fn new(bot: &'a Bot, name: String, user_id: i64, format: String) -> Self {
let data = HashMap::new();
Self {
bot,
data,
name,
user_id,
format,
}
}
pub fn name(mut self, name: String) -> Self {
self.name = name;
self
}
pub fn user_id(mut self, user_id: i64) -> Self {
self.user_id = user_id;
self
}
pub fn thumbnail(mut self, thumbnail: F) -> Self {
self.data.insert("thumbnail", thumbnail);
self
}
pub fn format(mut self, format: String) -> Self {
self.format = format;
self
}
pub async fn send(self) -> Result<bool> {
let form = serde_json::to_value(&self)?;
self.bot
.post("setStickerSetThumbnail", Some(&form), Some(self.data))
.await
}
}