From c5d1ea09341bdacfcabf170733afe65048f35f27 Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 30 Mar 2025 08:19:19 +0300 Subject: [PATCH] Add BusinessConnection.rights. --- telegram-bot-api/Client.cpp | 61 ++++++++++++++++++++++++++++++++++++- telegram-bot-api/Client.h | 1 + 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 5a1af1f..a8bb448 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -4360,6 +4360,60 @@ class Client::JsonMessageReactionCountUpdated final : public td::Jsonable { const Client *client_; }; +class Client::JsonBusinessBotRights final : public td::Jsonable { + public: + explicit JsonBusinessBotRights(const td_api::businessBotRights *rights) : rights_(rights) { + } + void store(td::JsonValueScope *scope) const { + auto object = scope->enter_object(); + if (rights_->can_reply_) { + object("can_reply", td::JsonTrue()); + } + if (rights_->can_read_messages_) { + object("can_read_messages", td::JsonTrue()); + } + if (rights_->can_delete_sent_messages_) { + object("can_delete_sent_messages", td::JsonTrue()); + } + if (rights_->can_delete_all_messages_) { + object("can_delete_all_messages", td::JsonTrue()); + } + if (rights_->can_edit_name_) { + object("can_edit_name", td::JsonTrue()); + } + if (rights_->can_edit_bio_) { + object("can_edit_bio", td::JsonTrue()); + } + if (rights_->can_edit_profile_photo_) { + object("can_edit_profile_photo", td::JsonTrue()); + } + if (rights_->can_edit_username_) { + object("can_edit_username", td::JsonTrue()); + } + if (rights_->can_view_gifts_and_stars_) { + object("can_view_gifts_and_stars", td::JsonTrue()); + } + if (rights_->can_sell_gifts_) { + object("can_convert_gifts_to_stars", td::JsonTrue()); + } + if (rights_->can_change_gift_settings_) { + object("can_change_gift_settings", td::JsonTrue()); + } + if (rights_->can_transfer_and_upgrade_gifts_) { + object("can_transfer_and_upgrade_gifts", td::JsonTrue()); + } + if (rights_->can_transfer_stars_) { + object("can_transfer_stars", td::JsonTrue()); + } + if (rights_->can_manage_stories_) { + object("can_manage_stories", td::JsonTrue()); + } + } + + private: + const td_api::businessBotRights *rights_; +}; + class Client::JsonBusinessConnection final : public td::Jsonable { public: JsonBusinessConnection(const BusinessConnection *connection, const Client *client) @@ -4371,8 +4425,13 @@ class Client::JsonBusinessConnection final : public td::Jsonable { object("user", JsonUser(connection_->user_id_, client_)); object("user_chat_id", connection_->user_chat_id_); object("date", connection_->date_); - object("can_reply", td::JsonBool(connection_->rights_->can_reply_)); object("is_enabled", td::JsonBool(connection_->is_enabled_)); + if (connection_->rights_ != nullptr) { + object("can_reply", td::JsonBool(connection_->rights_->can_reply_)); + object("rights", JsonBusinessBotRights(connection_->rights_.get())); + } else { + object("can_reply", td::JsonBool(false)); + } } private: diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 234d78f..7a47601 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -179,6 +179,7 @@ class Client final : public WebhookActor::Callback { class JsonUniqueGift; class JsonMessageReactionUpdated; class JsonMessageReactionCountUpdated; + class JsonBusinessBotRights; class JsonBusinessConnection; class JsonBusinessMessagesDeleted; class JsonAddress;