diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 791b450..c2e7270 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -286,6 +286,7 @@ bool Client::init_methods() { methods_.emplace("getbusinessaccountstarbalance", &Client::process_get_business_account_star_balance_query); methods_.emplace("getbusinessaccountgifts", &Client::process_get_business_account_gifts_query); methods_.emplace("convertgifttostars", &Client::process_convert_gift_to_stars_query); + methods_.emplace("upgradegift", &Client::process_upgrade_gift_query); methods_.emplace("setuseremojistatus", &Client::process_set_user_emoji_status_query); methods_.emplace("getchat", &Client::process_get_chat_query); methods_.emplace("setchatphoto", &Client::process_set_chat_photo_query); @@ -6365,6 +6366,23 @@ class Client::TdOnGetChatInviteLinkCallback final : public TdQueryCallback { PromisedQueryPtr query_; }; +class Client::TdOnUpgradeGiftCallback final : public TdQueryCallback { + public: + explicit TdOnUpgradeGiftCallback(PromisedQueryPtr query) : query_(std::move(query)) { + } + + void on_result(object_ptr result) final { + if (result->get_id() == td_api::error::ID) { + return fail_query_with_error(std::move(query_), move_object_as(result)); + } + + answer_query(td::JsonTrue(), std::move(query_)); + } + + private: + PromisedQueryPtr query_; +}; + class Client::TdOnGetStarAmountCallback final : public TdQueryCallback { public: explicit TdOnGetStarAmountCallback(PromisedQueryPtr query) : query_(std::move(query)) { @@ -12447,6 +12465,22 @@ td::Status Client::process_convert_gift_to_stars_query(PromisedQueryPtr &query) return td::Status::OK(); } +td::Status Client::process_upgrade_gift_query(PromisedQueryPtr &query) { + auto business_connection_id = query->arg("business_connection_id").str(); + auto owned_gift_id = query->arg("owned_gift_id"); + auto keep_original_details = to_bool(query->arg("keep_original_details")); + auto star_count = get_integer_arg(query.get(), "star_count", 0, 0, 1000000); + check_business_connection(business_connection_id, std::move(query), + [this, owned_gift_id, keep_original_details, star_count]( + const BusinessConnection *business_connection, PromisedQueryPtr query) mutable { + send_request( + make_object(business_connection->id_, owned_gift_id.str(), + keep_original_details, star_count), + td::make_unique(std::move(query))); + }); + return td::Status::OK(); +} + td::Status Client::process_set_user_emoji_status_query(PromisedQueryPtr &query) { TRY_RESULT(user_id, get_user_id(query.get())); auto emoji_status_custom_emoji_id = td::to_integer(query->arg("emoji_status_custom_emoji_id")); diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index f8d95d1..1d74d02 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -267,6 +267,7 @@ class Client final : public WebhookActor::Callback { class TdOnGetUserChatBoostsCallback; class TdOnGetGiftsCallback; class TdOnCreateInvoiceLinkCallback; + class TdOnUpgradeGiftCallback; class TdOnGetStarAmountCallback; class TdOnGetReceivedGiftsCallback; class TdOnGetStarTransactionsCallback; @@ -744,6 +745,7 @@ class Client final : public WebhookActor::Callback { td::Status process_get_business_account_star_balance_query(PromisedQueryPtr &query); td::Status process_get_business_account_gifts_query(PromisedQueryPtr &query); td::Status process_convert_gift_to_stars_query(PromisedQueryPtr &query); + td::Status process_upgrade_gift_query(PromisedQueryPtr &query); td::Status process_set_user_emoji_status_query(PromisedQueryPtr &query); td::Status process_get_chat_query(PromisedQueryPtr &query); td::Status process_set_chat_photo_query(PromisedQueryPtr &query);