diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 6c4bb19d4..1b1c594e7 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -3650,6 +3650,9 @@ publicForwards total_count:int32 forwards:vector next_offset:stri //@can_set_custom_background True, if custom background can be set in the chat for all users chatBoostLevelFeatures level:int32 story_per_day_count:int32 custom_emoji_reaction_count:int32 title_color_count:int32 profile_accent_color_count:int32 can_set_profile_background_custom_emoji:Bool accent_color_count:int32 can_set_background_custom_emoji:Bool can_set_emoji_status:Bool chat_theme_background_count:int32 can_set_custom_background:Bool = ChatBoostLevelFeatures; +//@description Contains list of features available on the first chat boost levels @features The list of features +chatBoostFeatures features:vector = ChatBoostFeatures; + //@class ChatBoostSource @description Describes source of a chat boost @@ -8270,6 +8273,9 @@ getStoryPublicForwards story_sender_chat_id:int53 story_id:int32 offset:string l //@description Returns list of features available on the specific chat boost level; this is an offline request @level Chat boost level getChatBoostLevelFeatures level:int32 = ChatBoostLevelFeatures; +//@description Returns list of features available on the first 10 chat boost levels; this is an offline request +getChatBoostFeatures = ChatBoostFeatures; + //@description Returns the list of available chat boost slots for the current user getAvailableChatBoostSlots = ChatBoostSlots; diff --git a/td/telegram/BoostManager.cpp b/td/telegram/BoostManager.cpp index 4b3d3af48..7623aea77 100644 --- a/td/telegram/BoostManager.cpp +++ b/td/telegram/BoostManager.cpp @@ -361,6 +361,14 @@ td_api::object_ptr BoostManager::get_chat_boost_ can_set_emoji_status, theme_counts.chat_theme_count_, can_set_custom_background); } +td_api::object_ptr BoostManager::get_chat_boost_features_object() const { + vector> features; + for (int32 level = 1; level <= 10; level++) { + features.push_back(get_chat_boost_level_features_object(level)); + } + return td_api::make_object(std::move(features)); +} + void BoostManager::get_boost_slots(Promise> &&promise) { td_->create_handler(std::move(promise))->send(); } diff --git a/td/telegram/BoostManager.h b/td/telegram/BoostManager.h index 8403d61be..51c8eb750 100644 --- a/td/telegram/BoostManager.h +++ b/td/telegram/BoostManager.h @@ -31,6 +31,8 @@ class BoostManager final : public Actor { td_api::object_ptr get_chat_boost_level_features_object(int32 level) const; + td_api::object_ptr get_chat_boost_features_object() const; + void get_boost_slots(Promise> &&promise); void get_dialog_boost_status(DialogId dialog_id, Promise> &&promise); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 8dd139346..795c67424 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -6721,6 +6721,12 @@ void Td::on_request(uint64 id, const td_api::getChatBoostLevelFeatures &request) promise.set_value(boost_manager_->get_chat_boost_level_features_object(request.level_)); } +void Td::on_request(uint64 id, const td_api::getChatBoostFeatures &request) { + CHECK_IS_USER(); + CREATE_REQUEST_PROMISE(); + promise.set_value(boost_manager_->get_chat_boost_features_object()); +} + void Td::on_request(uint64 id, const td_api::getAvailableChatBoostSlots &request) { CHECK_IS_USER(); CREATE_REQUEST_PROMISE(); diff --git a/td/telegram/Td.h b/td/telegram/Td.h index 511270994..22519b6a7 100644 --- a/td/telegram/Td.h +++ b/td/telegram/Td.h @@ -1071,6 +1071,8 @@ class Td final : public Actor { void on_request(uint64 id, const td_api::getChatBoostLevelFeatures &request); + void on_request(uint64 id, const td_api::getChatBoostFeatures &request); + void on_request(uint64 id, const td_api::getAvailableChatBoostSlots &request); void on_request(uint64 id, const td_api::getChatBoostStatus &request); diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index a82a77890..7c75dba26 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -4450,6 +4450,8 @@ class CliClient final : public Actor { int32 level; get_args(args, level); send_request(td_api::make_object(level)); + } else if (op == "gcbf") { + send_request(td_api::make_object()); } else if (op == "gacbs") { send_request(td_api::make_object()); } else if (op == "gcbs") {