From b7e2f2556211f95eff22936bf7c617f9a9b73837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=8B=D1=80=D1=86=D0=B5=D0=B2=20=D0=92=D0=B0=D0=B4?= =?UTF-8?q?=D0=B8=D0=BC=20=D0=98=D0=B3=D0=BE=D1=80=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sat, 15 Jun 2024 12:51:17 +0300 Subject: [PATCH] Add the TBA6.7 methods for bot's name manipulation --- crates/teloxide-core/schema.ron | 38 ++++++++++++++++++- crates/teloxide-core/src/adaptors/cache_me.rs | 2 + crates/teloxide-core/src/adaptors/erased.rs | 14 +++++++ .../teloxide-core/src/adaptors/parse_mode.rs | 2 + .../src/adaptors/throttle/requester_impl.rs | 2 + crates/teloxide-core/src/adaptors/trace.rs | 2 + crates/teloxide-core/src/bot/api.rs | 12 ++++++ crates/teloxide-core/src/local_macros.rs | 16 ++++++++ crates/teloxide-core/src/payloads.rs | 4 ++ .../teloxide-core/src/payloads/get_my_name.rs | 18 +++++++++ .../teloxide-core/src/payloads/set_my_name.rs | 18 +++++++++ crates/teloxide-core/src/payloads/setters.rs | 6 +-- .../teloxide-core/src/requests/requester.rs | 12 ++++++ crates/teloxide-core/src/types.rs | 2 + crates/teloxide-core/src/types/bot_name.rs | 7 ++++ 15 files changed, 151 insertions(+), 4 deletions(-) create mode 100644 crates/teloxide-core/src/payloads/get_my_name.rs create mode 100644 crates/teloxide-core/src/payloads/set_my_name.rs create mode 100644 crates/teloxide-core/src/types/bot_name.rs diff --git a/crates/teloxide-core/schema.ron b/crates/teloxide-core/schema.ron index 9c832672..124c6757 100644 --- a/crates/teloxide-core/schema.ron +++ b/crates/teloxide-core/schema.ron @@ -39,7 +39,7 @@ //! [github]: https://github.com/WaffleLapkin/tg-methods-schema Schema( - api_version: ApiVersion(ver: "6.6", date: "March 9, 2023"), + api_version: ApiVersion(ver: "6.7", date: "April 21, 2023"), methods: [ Method( names: ("getUpdates", "GetUpdates", "get_updates"), @@ -2894,6 +2894,42 @@ Schema( ), ], ), + Method( + names: ("setMyName", "SetMyName", "set_my_name"), + return_ty: True, + doc: Doc(md: "Use this method to change the bot's name. Returns True on success."), + tg_doc: "https://core.telegram.org/bots/api#setmyname", + tg_category: "Available methods", + params: [ + Param( + name: "name", + ty: Option(String), + descr: Doc(md: "New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language.") + ), + Param( + name: "language_code", + ty: Option(String), + descr: Doc(md: "A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name.") + ), + ], + ), + Method( + names: ("getMyName", "GetMyName", "get_my_name"), + return_ty: RawTy("BotName"), + doc: Doc( + md: "Use this method to get the current bot name for the given user language. Returns [BotName] on success.", + md_links: {"BotName": "https://core.telegram.org/bots/api#botname"}, + ), + tg_doc: "https://core.telegram.org/bots/api#getmyname", + tg_category: "Available methods", + params: [ + Param( + name: "language_code", + ty: Option(String), + descr: Doc(md: "A two-letter ISO 639-1 language code or an empty string") + ), + ], + ), Method( names: ("setMyDescription", "SetMyDescription", "set_my_description"), return_ty: True, diff --git a/crates/teloxide-core/src/adaptors/cache_me.rs b/crates/teloxide-core/src/adaptors/cache_me.rs index aca6d5f7..84b4887e 100644 --- a/crates/teloxide-core/src/adaptors/cache_me.rs +++ b/crates/teloxide-core/src/adaptors/cache_me.rs @@ -159,6 +159,8 @@ where answer_callback_query, set_my_commands, get_my_commands, + set_my_name, + get_my_name, set_my_description, get_my_description, set_my_short_description, diff --git a/crates/teloxide-core/src/adaptors/erased.rs b/crates/teloxide-core/src/adaptors/erased.rs index 0008cefe..7e4f390c 100644 --- a/crates/teloxide-core/src/adaptors/erased.rs +++ b/crates/teloxide-core/src/adaptors/erased.rs @@ -254,6 +254,8 @@ where answer_callback_query, set_my_commands, get_my_commands, + set_my_name, + get_my_name, set_my_description, get_my_description, set_my_short_description, @@ -709,6 +711,10 @@ trait ErasableRequester<'a> { fn get_my_commands(&self) -> ErasedRequest<'a, GetMyCommands, Self::Err>; + fn set_my_name(&self) -> ErasedRequest<'a, SetMyName, Self::Err>; + + fn get_my_name(&self) -> ErasedRequest<'a, GetMyName, Self::Err>; + fn set_my_description(&self) -> ErasedRequest<'a, SetMyDescription, Self::Err>; fn get_my_description(&self) -> ErasedRequest<'a, GetMyDescription, Self::Err>; @@ -1512,6 +1518,14 @@ where Requester::get_my_commands(self).erase() } + fn set_my_name(&self) -> ErasedRequest<'a, SetMyName, Self::Err> { + Requester::set_my_name(self).erase() + } + + fn get_my_name(&self) -> ErasedRequest<'a, GetMyName, Self::Err> { + Requester::get_my_name(self).erase() + } + fn set_my_description(&self) -> ErasedRequest<'a, SetMyDescription, Self::Err> { Requester::set_my_description(self).erase() } diff --git a/crates/teloxide-core/src/adaptors/parse_mode.rs b/crates/teloxide-core/src/adaptors/parse_mode.rs index d42e15fc..d7540115 100644 --- a/crates/teloxide-core/src/adaptors/parse_mode.rs +++ b/crates/teloxide-core/src/adaptors/parse_mode.rs @@ -240,6 +240,8 @@ where answer_callback_query, set_my_commands, get_my_commands, + set_my_name, + get_my_name, set_my_description, get_my_description, set_my_short_description, diff --git a/crates/teloxide-core/src/adaptors/throttle/requester_impl.rs b/crates/teloxide-core/src/adaptors/throttle/requester_impl.rs index 8bdfc7c0..436f6488 100644 --- a/crates/teloxide-core/src/adaptors/throttle/requester_impl.rs +++ b/crates/teloxide-core/src/adaptors/throttle/requester_impl.rs @@ -142,6 +142,8 @@ where answer_callback_query, set_my_commands, get_my_commands, + set_my_name, + get_my_name, set_my_description, get_my_description, set_my_short_description, diff --git a/crates/teloxide-core/src/adaptors/trace.rs b/crates/teloxide-core/src/adaptors/trace.rs index 14130ba1..2f42e641 100644 --- a/crates/teloxide-core/src/adaptors/trace.rs +++ b/crates/teloxide-core/src/adaptors/trace.rs @@ -188,6 +188,8 @@ where answer_callback_query, set_my_commands, get_my_commands, + set_my_name, + get_my_name, set_my_description, get_my_description, set_my_short_description, diff --git a/crates/teloxide-core/src/bot/api.rs b/crates/teloxide-core/src/bot/api.rs index 905318b8..35c6231c 100644 --- a/crates/teloxide-core/src/bot/api.rs +++ b/crates/teloxide-core/src/bot/api.rs @@ -829,6 +829,18 @@ impl Requester for Bot { Self::GetMyCommands::new(self.clone(), payloads::GetMyCommands::new()) } + type SetMyName = JsonRequest; + + fn set_my_name(&self) -> Self::SetMyName { + Self::SetMyName::new(self.clone(), payloads::SetMyName::new()) + } + + type GetMyName = JsonRequest; + + fn get_my_name(&self) -> Self::GetMyName { + Self::GetMyName::new(self.clone(), payloads::GetMyName::new()) + } + type SetMyDescription = JsonRequest; fn set_my_description(&self) -> Self::SetMyDescription { diff --git a/crates/teloxide-core/src/local_macros.rs b/crates/teloxide-core/src/local_macros.rs index ee5e2887..9ce59f58 100644 --- a/crates/teloxide-core/src/local_macros.rs +++ b/crates/teloxide-core/src/local_macros.rs @@ -1033,6 +1033,22 @@ macro_rules! requester_forward { $body!(get_my_commands this ()) } }; + (@method set_my_name $body:ident $ty:ident) => { + type SetMyName = $ty![SetMyName]; + + fn set_my_name(&self, ) -> Self::SetMyName { + let this = self; + $body!(set_my_name this ()) + } + }; + (@method get_my_name $body:ident $ty:ident) => { + type GetMyName = $ty![GetMyName]; + + fn get_my_name(&self, ) -> Self::GetMyName { + let this = self; + $body!(get_my_name this ()) + } + }; (@method set_my_description $body:ident $ty:ident) => { type SetMyDescription = $ty![SetMyDescription]; diff --git a/crates/teloxide-core/src/payloads.rs b/crates/teloxide-core/src/payloads.rs index 25333a4f..97d2e61d 100644 --- a/crates/teloxide-core/src/payloads.rs +++ b/crates/teloxide-core/src/payloads.rs @@ -70,6 +70,7 @@ mod get_me; mod get_my_commands; mod get_my_default_administrator_rights; mod get_my_description; +mod get_my_name; mod get_my_short_description; mod get_sticker_set; mod get_updates; @@ -116,6 +117,7 @@ mod set_game_score_inline; mod set_my_commands; mod set_my_default_administrator_rights; mod set_my_description; +mod set_my_name; mod set_my_short_description; mod set_passport_data_errors; mod set_sticker_emoji_list; @@ -199,6 +201,7 @@ pub use get_my_default_administrator_rights::{ GetMyDefaultAdministratorRights, GetMyDefaultAdministratorRightsSetters, }; pub use get_my_description::{GetMyDescription, GetMyDescriptionSetters}; +pub use get_my_name::{GetMyName, GetMyNameSetters}; pub use get_my_short_description::{GetMyShortDescription, GetMyShortDescriptionSetters}; pub use get_sticker_set::{GetStickerSet, GetStickerSetSetters}; pub use get_updates::{GetUpdates, GetUpdatesSetters}; @@ -251,6 +254,7 @@ pub use set_my_default_administrator_rights::{ SetMyDefaultAdministratorRights, SetMyDefaultAdministratorRightsSetters, }; pub use set_my_description::{SetMyDescription, SetMyDescriptionSetters}; +pub use set_my_name::{SetMyName, SetMyNameSetters}; pub use set_my_short_description::{SetMyShortDescription, SetMyShortDescriptionSetters}; pub use set_passport_data_errors::{SetPassportDataErrors, SetPassportDataErrorsSetters}; pub use set_sticker_emoji_list::{SetStickerEmojiList, SetStickerEmojiListSetters}; diff --git a/crates/teloxide-core/src/payloads/get_my_name.rs b/crates/teloxide-core/src/payloads/get_my_name.rs new file mode 100644 index 00000000..04b5140f --- /dev/null +++ b/crates/teloxide-core/src/payloads/get_my_name.rs @@ -0,0 +1,18 @@ +//! Generated by `codegen_payloads`, do not edit by hand. + +use serde::Serialize; + +use crate::types::BotName; + +impl_payload! { + /// Use this method to get the current bot name for the given user language. Returns [`BotName`] on success. + /// + /// [`BotName`]: crate::types::BotName + #[derive(Debug, PartialEq, Eq, Hash, Default, Clone, Serialize)] + pub GetMyName (GetMyNameSetters) => BotName { + optional { + /// A two-letter ISO 639-1 language code or an empty string + pub language_code: String [into], + } + } +} diff --git a/crates/teloxide-core/src/payloads/set_my_name.rs b/crates/teloxide-core/src/payloads/set_my_name.rs new file mode 100644 index 00000000..20bc5592 --- /dev/null +++ b/crates/teloxide-core/src/payloads/set_my_name.rs @@ -0,0 +1,18 @@ +//! Generated by `codegen_payloads`, do not edit by hand. + +use serde::Serialize; + +use crate::types::True; + +impl_payload! { + /// Use this method to change the bot's name. Returns True on success. + #[derive(Debug, PartialEq, Eq, Hash, Default, Clone, Serialize)] + pub SetMyName (SetMyNameSetters) => True { + optional { + /// New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language. + pub name: String [into], + /// A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name. + pub language_code: String [into], + } + } +} diff --git a/crates/teloxide-core/src/payloads/setters.rs b/crates/teloxide-core/src/payloads/setters.rs index 35595cc1..6faa7d16 100644 --- a/crates/teloxide-core/src/payloads/setters.rs +++ b/crates/teloxide-core/src/payloads/setters.rs @@ -23,8 +23,8 @@ pub use crate::payloads::{ GetCustomEmojiStickersSetters as _, GetFileSetters as _, GetForumTopicIconStickersSetters as _, GetGameHighScoresSetters as _, GetMeSetters as _, GetMyCommandsSetters as _, GetMyDefaultAdministratorRightsSetters as _, GetMyDescriptionSetters as _, - GetMyShortDescriptionSetters as _, GetStickerSetSetters as _, GetUpdatesSetters as _, - GetUserProfilePhotosSetters as _, GetWebhookInfoSetters as _, + GetMyNameSetters as _, GetMyShortDescriptionSetters as _, GetStickerSetSetters as _, + GetUpdatesSetters as _, GetUserProfilePhotosSetters as _, GetWebhookInfoSetters as _, HideGeneralForumTopicSetters as _, KickChatMemberSetters as _, LeaveChatSetters as _, LogOutSetters as _, PinChatMessageSetters as _, PromoteChatMemberSetters as _, ReopenForumTopicSetters as _, ReopenGeneralForumTopicSetters as _, @@ -40,7 +40,7 @@ pub use crate::payloads::{ SetCustomEmojiStickerSetThumbnailSetters as _, SetGameScoreInlineSetters as _, SetGameScoreSetters as _, SetMyCommandsSetters as _, SetMyDefaultAdministratorRightsSetters as _, SetMyDescriptionSetters as _, - SetMyShortDescriptionSetters as _, SetPassportDataErrorsSetters as _, + SetMyNameSetters as _, SetMyShortDescriptionSetters as _, SetPassportDataErrorsSetters as _, SetStickerEmojiListSetters as _, SetStickerKeywordsSetters as _, SetStickerMaskPositionSetters as _, SetStickerPositionInSetSetters as _, SetStickerSetThumbnailSetters as _, SetStickerSetTitleSetters as _, SetWebhookSetters as _, diff --git a/crates/teloxide-core/src/requests/requester.rs b/crates/teloxide-core/src/requests/requester.rs index 2061b19b..58adb2b6 100644 --- a/crates/teloxide-core/src/requests/requester.rs +++ b/crates/teloxide-core/src/requests/requester.rs @@ -777,6 +777,16 @@ pub trait Requester { /// For Telegram documentation see [`GetMyCommands`]. fn get_my_commands(&self) -> Self::GetMyCommands; + type SetMyName: Request; + + /// For Telegram documentation see [`SetMyName`]. + fn set_my_name(&self) -> Self::SetMyName; + + type GetMyName: Request; + + /// For Telegram documentation see [`GetMyName`]. + fn get_my_name(&self) -> Self::GetMyName; + type SetMyDescription: Request; /// For Telegram documentation see [`SetMyDescription`]. @@ -1290,6 +1300,8 @@ macro_rules! forward_all { answer_callback_query, set_my_commands, get_my_commands, + set_my_name, + get_my_name, set_my_description, get_my_description, set_my_short_description, diff --git a/crates/teloxide-core/src/types.rs b/crates/teloxide-core/src/types.rs index 5b1cb95b..01f55beb 100644 --- a/crates/teloxide-core/src/types.rs +++ b/crates/teloxide-core/src/types.rs @@ -6,6 +6,7 @@ pub use audio::*; pub use bot_command::*; pub use bot_command_scope::*; pub use bot_description::*; +pub use bot_name::*; pub use bot_short_description::*; pub use callback_game::*; pub use callback_query::*; @@ -131,6 +132,7 @@ mod audio; mod bot_command; mod bot_command_scope; mod bot_description; +mod bot_name; mod bot_short_description; mod callback_game; mod callback_query; diff --git a/crates/teloxide-core/src/types/bot_name.rs b/crates/teloxide-core/src/types/bot_name.rs new file mode 100644 index 00000000..4e370fc2 --- /dev/null +++ b/crates/teloxide-core/src/types/bot_name.rs @@ -0,0 +1,7 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct BotName { + /// The bot's name + pub name: String, +}