use crate::Result;
use crate::types::bot::{GetUserProfilePhotosRequest, User, UserProfilePhotos};
use crate::types::command::{
BotCommand, BotDescription, BotName, BotShortDescription, DeleteMyCommandsRequest,
GetMyCommandsRequest, GetMyDescriptionRequest, GetMyNameRequest, GetMyShortDescriptionRequest,
SetMyCommandsRequest, SetMyDescriptionRequest, SetMyNameRequest, SetMyShortDescriptionRequest,
};
#[cfg(feature = "_blocking")]
use crate::BlockingClient;
#[cfg(feature = "_async")]
use crate::Client;
#[cfg(feature = "_async")]
#[derive(Clone)]
pub struct BotService {
client: Client,
}
#[cfg(feature = "_async")]
impl BotService {
pub(crate) fn new(client: Client) -> Self {
Self { client }
}
pub async fn get_me(&self) -> Result<User> {
self.client.call_method_no_params("getMe").await
}
pub async fn log_out(&self) -> Result<bool> {
self.client.call_method_no_params("logOut").await
}
pub async fn close(&self) -> Result<bool> {
self.client.call_method_no_params("close").await
}
pub async fn get_user_profile_photos(
&self,
request: &GetUserProfilePhotosRequest,
) -> Result<UserProfilePhotos> {
self.client
.call_method("getUserProfilePhotos", request)
.await
}
pub async fn set_my_commands(&self, request: &SetMyCommandsRequest) -> Result<bool> {
self.client.call_method("setMyCommands", request).await
}
pub async fn get_my_commands(&self, request: &GetMyCommandsRequest) -> Result<Vec<BotCommand>> {
self.client.call_method("getMyCommands", request).await
}
pub async fn delete_my_commands(&self, request: &DeleteMyCommandsRequest) -> Result<bool> {
self.client.call_method("deleteMyCommands", request).await
}
pub async fn set_my_name(&self, request: &SetMyNameRequest) -> Result<bool> {
self.client.call_method("setMyName", request).await
}
pub async fn get_my_name(&self, request: &GetMyNameRequest) -> Result<BotName> {
self.client.call_method("getMyName", request).await
}
pub async fn set_my_description(&self, request: &SetMyDescriptionRequest) -> Result<bool> {
self.client.call_method("setMyDescription", request).await
}
pub async fn get_my_description(
&self,
request: &GetMyDescriptionRequest,
) -> Result<BotDescription> {
self.client.call_method("getMyDescription", request).await
}
pub async fn set_my_short_description(
&self,
request: &SetMyShortDescriptionRequest,
) -> Result<bool> {
self.client
.call_method("setMyShortDescription", request)
.await
}
pub async fn get_my_short_description(
&self,
request: &GetMyShortDescriptionRequest,
) -> Result<BotShortDescription> {
self.client
.call_method("getMyShortDescription", request)
.await
}
}
#[cfg(feature = "_blocking")]
#[derive(Clone)]
pub struct BlockingBotService {
client: BlockingClient,
}
#[cfg(feature = "_blocking")]
impl BlockingBotService {
pub(crate) fn new(client: BlockingClient) -> Self {
Self { client }
}
pub fn get_me(&self) -> Result<User> {
self.client.call_method_no_params("getMe")
}
pub fn log_out(&self) -> Result<bool> {
self.client.call_method_no_params("logOut")
}
pub fn close(&self) -> Result<bool> {
self.client.call_method_no_params("close")
}
pub fn get_user_profile_photos(
&self,
request: &GetUserProfilePhotosRequest,
) -> Result<UserProfilePhotos> {
self.client.call_method("getUserProfilePhotos", request)
}
pub fn set_my_commands(&self, request: &SetMyCommandsRequest) -> Result<bool> {
self.client.call_method("setMyCommands", request)
}
pub fn get_my_commands(&self, request: &GetMyCommandsRequest) -> Result<Vec<BotCommand>> {
self.client.call_method("getMyCommands", request)
}
pub fn delete_my_commands(&self, request: &DeleteMyCommandsRequest) -> Result<bool> {
self.client.call_method("deleteMyCommands", request)
}
pub fn set_my_name(&self, request: &SetMyNameRequest) -> Result<bool> {
self.client.call_method("setMyName", request)
}
pub fn get_my_name(&self, request: &GetMyNameRequest) -> Result<BotName> {
self.client.call_method("getMyName", request)
}
pub fn set_my_description(&self, request: &SetMyDescriptionRequest) -> Result<bool> {
self.client.call_method("setMyDescription", request)
}
pub fn get_my_description(&self, request: &GetMyDescriptionRequest) -> Result<BotDescription> {
self.client.call_method("getMyDescription", request)
}
pub fn set_my_short_description(&self, request: &SetMyShortDescriptionRequest) -> Result<bool> {
self.client.call_method("setMyShortDescription", request)
}
pub fn get_my_short_description(
&self,
request: &GetMyShortDescriptionRequest,
) -> Result<BotShortDescription> {
self.client.call_method("getMyShortDescription", request)
}
}