Add method getBusinessConnection

This commit is contained in:
Akshett Rai Jindal 2024-08-21 20:53:46 +05:30
parent 7fe9278ce8
commit 68b7aba836
13 changed files with 127 additions and 19 deletions

View file

@ -3052,6 +3052,20 @@ Schema(
), ),
], ],
), ),
Method(
names: ("getBusinessConnection", "GetBusinessConnection", "get_business_connection"),
return_ty: RawTy("BusinessConnection"),
doc: Doc(md: "Use this method to get information about the connection of the bot with a business account. Returns a BusinessConnection object on success."),
tg_doc: "https://core.telegram.org/bots/api#getbusinessconnection",
tg_category: "Available methods",
params: [
Param(
name: "business_connection_id",
ty: String,
descr: Doc(md: "Unique identifier of the business connection"),
),
],
),
Method( Method(
names: ("getMyCommands", "GetMyCommands", "get_my_commands"), names: ("getMyCommands", "GetMyCommands", "get_my_commands"),
return_ty: ArrayOf(RawTy("BotCommand")), return_ty: ArrayOf(RawTy("BotCommand")),

View file

@ -163,6 +163,7 @@ where
answer_callback_query, answer_callback_query,
get_user_chat_boosts, get_user_chat_boosts,
set_my_commands, set_my_commands,
get_business_connection,
get_my_commands, get_my_commands,
set_my_name, set_my_name,
get_my_name, get_my_name,

View file

@ -262,6 +262,7 @@ where
answer_callback_query, answer_callback_query,
get_user_chat_boosts, get_user_chat_boosts,
set_my_commands, set_my_commands,
get_business_connection,
get_my_commands, get_my_commands,
set_my_name, set_my_name,
get_my_name, get_my_name,
@ -751,6 +752,11 @@ trait ErasableRequester<'a> {
commands: Vec<BotCommand>, commands: Vec<BotCommand>,
) -> ErasedRequest<'a, SetMyCommands, Self::Err>; ) -> ErasedRequest<'a, SetMyCommands, Self::Err>;
fn get_business_connection(
&self,
business_connection_id: String,
) -> ErasedRequest<'a, GetBusinessConnection, Self::Err>;
fn get_my_commands(&self) -> ErasedRequest<'a, GetMyCommands, Self::Err>; fn get_my_commands(&self) -> ErasedRequest<'a, GetMyCommands, Self::Err>;
fn set_my_name(&self) -> ErasedRequest<'a, SetMyName, Self::Err>; fn set_my_name(&self) -> ErasedRequest<'a, SetMyName, Self::Err>;
@ -1603,6 +1609,13 @@ where
Requester::set_my_commands(self, commands).erase() Requester::set_my_commands(self, commands).erase()
} }
fn get_business_connection(
&self,
business_connection_id: String,
) -> ErasedRequest<'a, GetBusinessConnection, Self::Err> {
Requester::get_business_connection(self, business_connection_id).erase()
}
fn get_my_commands(&self) -> ErasedRequest<'a, GetMyCommands, Self::Err> { fn get_my_commands(&self) -> ErasedRequest<'a, GetMyCommands, Self::Err> {
Requester::get_my_commands(self).erase() Requester::get_my_commands(self).erase()
} }

View file

@ -244,6 +244,7 @@ where
answer_callback_query, answer_callback_query,
get_user_chat_boosts, get_user_chat_boosts,
set_my_commands, set_my_commands,
get_business_connection,
get_my_commands, get_my_commands,
set_my_name, set_my_name,
get_my_name, get_my_name,

View file

@ -146,6 +146,7 @@ where
answer_callback_query, answer_callback_query,
get_user_chat_boosts, get_user_chat_boosts,
set_my_commands, set_my_commands,
get_business_connection,
get_my_commands, get_my_commands,
set_my_name, set_my_name,
get_my_name, get_my_name,

View file

@ -192,6 +192,7 @@ where
answer_callback_query, answer_callback_query,
get_user_chat_boosts, get_user_chat_boosts,
set_my_commands, set_my_commands,
get_business_connection,
get_my_commands, get_my_commands,
set_my_name, set_my_name,
get_my_name, get_my_name,

View file

@ -881,6 +881,18 @@ impl Requester for Bot {
Self::SetMyCommands::new(self.clone(), payloads::SetMyCommands::new(commands)) Self::SetMyCommands::new(self.clone(), payloads::SetMyCommands::new(commands))
} }
type GetBusinessConnection = JsonRequest<payloads::GetBusinessConnection>;
fn get_business_connection<B>(&self, business_connection_id: B) -> Self::GetBusinessConnection
where
B: Into<String>,
{
Self::GetBusinessConnection::new(
self.clone(),
payloads::GetBusinessConnection::new(business_connection_id),
)
}
type GetMyCommands = JsonRequest<payloads::GetMyCommands>; type GetMyCommands = JsonRequest<payloads::GetMyCommands>;
fn get_my_commands(&self) -> Self::GetMyCommands { fn get_my_commands(&self) -> Self::GetMyCommands {

View file

@ -1069,6 +1069,14 @@ macro_rules! requester_forward {
$body!(set_my_commands this (commands: C)) $body!(set_my_commands this (commands: C))
} }
}; };
(@method get_business_connection $body:ident $ty:ident) => {
type GetBusinessConnection = $ty![GetBusinessConnection];
fn get_business_connection<BCI>(&self, business_connection_id: BCI) -> Self::GetBusinessConnection where BCI: Into<String> {
let this = self;
$body!(get_business_connection this (business_connection_id: BCI))
}
};
(@method get_my_commands $body:ident $ty:ident) => { (@method get_my_commands $body:ident $ty:ident) => {
type GetMyCommands = $ty![GetMyCommands]; type GetMyCommands = $ty![GetMyCommands];
@ -1524,7 +1532,7 @@ fn codegen_requester_forward() {
convert_params.sort_unstable(); convert_params.sort_unstable();
let prefixes: IndexMap<_, _> = convert_params let mut prefixes: IndexMap<_, _> = convert_params
.iter() .iter()
.copied() .copied()
// Workaround to output the last type as the first letter // Workaround to output the last type as the first letter
@ -1533,6 +1541,18 @@ fn codegen_requester_forward() {
.map(|(l, r)| (l, min_prefix(l, r))) .map(|(l, r)| (l, min_prefix(l, r)))
.collect(); .collect();
// FIXME: This hard-coded value has been set to avoid conflicting generic
// parameter 'B' with impl<B> Requester... in all the adaptors and other places
//
// One fix could be to take full abbrevation for all the parameters instead of
// just the first character. Other fix is to change the generic parameter name
// in all the impl blocks to something like 'Z' because that is very less likely
// to conflict in future.
if prefixes.contains_key("business_connection_id") {
prefixes["business_connection_id"] = "BCI";
}
let prefixes = prefixes;
let args = m let args = m
.params .params
.iter() .iter()

View file

@ -59,6 +59,7 @@ mod edit_message_text_inline;
mod export_chat_invite_link; mod export_chat_invite_link;
mod forward_message; mod forward_message;
mod forward_messages; mod forward_messages;
mod get_business_connection;
mod get_chat; mod get_chat;
mod get_chat_administrators; mod get_chat_administrators;
mod get_chat_member; mod get_chat_member;
@ -193,6 +194,7 @@ pub use edit_message_text_inline::{EditMessageTextInline, EditMessageTextInlineS
pub use export_chat_invite_link::{ExportChatInviteLink, ExportChatInviteLinkSetters}; pub use export_chat_invite_link::{ExportChatInviteLink, ExportChatInviteLinkSetters};
pub use forward_message::{ForwardMessage, ForwardMessageSetters}; pub use forward_message::{ForwardMessage, ForwardMessageSetters};
pub use forward_messages::{ForwardMessages, ForwardMessagesSetters}; pub use forward_messages::{ForwardMessages, ForwardMessagesSetters};
pub use get_business_connection::{GetBusinessConnection, GetBusinessConnectionSetters};
pub use get_chat::{GetChat, GetChatSetters}; pub use get_chat::{GetChat, GetChatSetters};
pub use get_chat_administrators::{GetChatAdministrators, GetChatAdministratorsSetters}; pub use get_chat_administrators::{GetChatAdministrators, GetChatAdministratorsSetters};
pub use get_chat_member::{GetChatMember, GetChatMemberSetters}; pub use get_chat_member::{GetChatMember, GetChatMemberSetters};

View file

@ -0,0 +1,16 @@
//! Generated by `codegen_payloads`, do not edit by hand.
use serde::Serialize;
use crate::types::BusinessConnection;
impl_payload! {
/// Use this method to get information about the connection of the bot with a business account. Returns a BusinessConnection object on success.
#[derive(Debug, PartialEq, Eq, Hash, Clone, Serialize)]
pub GetBusinessConnection (GetBusinessConnectionSetters) => BusinessConnection {
required {
/// Unique identifier of the business connection
pub business_connection_id: String [into],
}
}
}

View file

@ -19,20 +19,21 @@ pub use crate::payloads::{
EditMessageReplyMarkupInlineSetters as _, EditMessageReplyMarkupSetters as _, EditMessageReplyMarkupInlineSetters as _, EditMessageReplyMarkupSetters as _,
EditMessageTextInlineSetters as _, EditMessageTextSetters as _, EditMessageTextInlineSetters as _, EditMessageTextSetters as _,
ExportChatInviteLinkSetters as _, ForwardMessageSetters as _, ForwardMessagesSetters as _, ExportChatInviteLinkSetters as _, ForwardMessageSetters as _, ForwardMessagesSetters as _,
GetChatAdministratorsSetters as _, GetChatMemberCountSetters as _, GetChatMemberSetters as _, GetBusinessConnectionSetters as _, GetChatAdministratorsSetters as _,
GetChatMembersCountSetters as _, GetChatMenuButtonSetters as _, GetChatSetters as _, GetChatMemberCountSetters as _, GetChatMemberSetters as _, GetChatMembersCountSetters as _,
GetCustomEmojiStickersSetters as _, GetFileSetters as _, GetForumTopicIconStickersSetters as _, GetChatMenuButtonSetters as _, GetChatSetters as _, GetCustomEmojiStickersSetters as _,
GetGameHighScoresSetters as _, GetMeSetters as _, GetMyCommandsSetters as _, GetFileSetters as _, GetForumTopicIconStickersSetters as _, GetGameHighScoresSetters as _,
GetMyDefaultAdministratorRightsSetters as _, GetMyDescriptionSetters as _, GetMeSetters as _, GetMyCommandsSetters as _, GetMyDefaultAdministratorRightsSetters as _,
GetMyNameSetters as _, GetMyShortDescriptionSetters as _, GetStickerSetSetters as _, GetMyDescriptionSetters as _, GetMyNameSetters as _, GetMyShortDescriptionSetters as _,
GetUpdatesSetters as _, GetUserChatBoostsSetters as _, GetUserProfilePhotosSetters as _, GetStickerSetSetters as _, GetUpdatesSetters as _, GetUserChatBoostsSetters as _,
GetWebhookInfoSetters as _, HideGeneralForumTopicSetters as _, KickChatMemberSetters as _, GetUserProfilePhotosSetters as _, GetWebhookInfoSetters as _,
LeaveChatSetters as _, LogOutSetters as _, PinChatMessageSetters as _, HideGeneralForumTopicSetters as _, KickChatMemberSetters as _, LeaveChatSetters as _,
PromoteChatMemberSetters as _, ReopenForumTopicSetters as _, LogOutSetters as _, PinChatMessageSetters as _, PromoteChatMemberSetters as _,
ReopenGeneralForumTopicSetters as _, ReplaceStickerInSetSetters as _, ReopenForumTopicSetters as _, ReopenGeneralForumTopicSetters as _,
RestrictChatMemberSetters as _, RevokeChatInviteLinkSetters as _, SendAnimationSetters as _, ReplaceStickerInSetSetters as _, RestrictChatMemberSetters as _,
SendAudioSetters as _, SendChatActionSetters as _, SendContactSetters as _, RevokeChatInviteLinkSetters as _, SendAnimationSetters as _, SendAudioSetters as _,
SendDiceSetters as _, SendDocumentSetters as _, SendGameSetters as _, SendInvoiceSetters as _, SendChatActionSetters as _, SendContactSetters as _, SendDiceSetters as _,
SendDocumentSetters as _, SendGameSetters as _, SendInvoiceSetters as _,
SendLocationSetters as _, SendMediaGroupSetters as _, SendMessageSetters as _, SendLocationSetters as _, SendMediaGroupSetters as _, SendMessageSetters as _,
SendPhotoSetters as _, SendPollSetters as _, SendStickerSetters as _, SendVenueSetters as _, SendPhotoSetters as _, SendPollSetters as _, SendStickerSetters as _, SendVenueSetters as _,
SendVideoNoteSetters as _, SendVideoSetters as _, SendVoiceSetters as _, SendVideoNoteSetters as _, SendVideoSetters as _, SendVoiceSetters as _,

View file

@ -831,6 +831,13 @@ pub trait Requester {
where where
C: IntoIterator<Item = BotCommand>; C: IntoIterator<Item = BotCommand>;
type GetBusinessConnection: Request<Payload = GetBusinessConnection, Err = Self::Err>;
/// For Telegram documentation see [`GetBusinessConnection`].
fn get_business_connection<B>(&self, business_connection_id: B) -> Self::GetBusinessConnection
where
B: Into<String>;
type GetMyCommands: Request<Payload = GetMyCommands, Err = Self::Err>; type GetMyCommands: Request<Payload = GetMyCommands, Err = Self::Err>;
/// For Telegram documentation see [`GetMyCommands`]. /// For Telegram documentation see [`GetMyCommands`].
@ -1386,6 +1393,7 @@ macro_rules! forward_all {
answer_callback_query, answer_callback_query,
get_user_chat_boosts, get_user_chat_boosts,
set_my_commands, set_my_commands,
get_business_connection,
get_my_commands, get_my_commands,
set_my_name, set_my_name,
get_my_name, get_my_name,

View file

@ -168,10 +168,28 @@ mod tests {
for update in allowed_updates_reference { for update in allowed_updates_reference {
match update { match update {
// CAUTION: Don't forget to add new `UpdateKind` to `allowed_updates_reference`! // CAUTION: Don't forget to add new `UpdateKind` to `allowed_updates_reference`!
Message | EditedMessage | ChannelPost | EditedChannelPost | MessageReaction Message
| MessageReactionCount | InlineQuery | ChosenInlineResult | CallbackQuery | EditedMessage
| ShippingQuery | PreCheckoutQuery | Poll | PollAnswer | MyChatMember | ChannelPost
| ChatMember | ChatJoinRequest | ChatBoost | RemovedChatBoost => { | EditedChannelPost
| MessageReaction
| MessageReactionCount
| InlineQuery
| ChosenInlineResult
| CallbackQuery
| ShippingQuery
| PreCheckoutQuery
| Poll
| PollAnswer
| MyChatMember
| ChatMember
| ChatJoinRequest
| ChatBoost
| RemovedChatBoost
| BusinessMessage
| BusinessConnection
| EditedBusinessMessage
| DeletedBusinessMessages => {
assert!(full_set.contains(&Kind(update))) assert!(full_set.contains(&Kind(update)))
} }
} }