diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 33a040e..6732c9a 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -283,6 +283,7 @@ bool Client::init_methods() { methods_.emplace("setbusinessaccountprofilephoto", &Client::process_set_business_account_profile_photo_query); methods_.emplace("removebusinessaccountprofilephoto", &Client::process_remove_business_account_profile_photo_query); methods_.emplace("setbusinessaccountgiftsettings", &Client::process_set_business_account_gift_settings_query); + methods_.emplace("getbusinessaccountstarbalance", &Client::process_get_business_account_star_balance_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); @@ -4513,6 +4514,22 @@ class Client::JsonBusinessMessagesDeleted final : public td::Jsonable { const Client *client_; }; +class Client::JsonStarAmount final : public td::Jsonable { + public: + explicit JsonStarAmount(const td_api::starAmount *amount) : amount_(amount) { + } + void store(td::JsonValueScope *scope) const { + auto object = scope->enter_object(); + object("star_count", amount_->star_count_); + if (amount_->nanostar_count_ != 0) { + object("nanostar_count", amount_->nanostar_count_); + } + } + + private: + const td_api::starAmount *amount_; +}; + class Client::JsonRevenueWithdrawalState final : public td::Jsonable { public: explicit JsonRevenueWithdrawalState(const td_api::RevenueWithdrawalState *state) : state_(state) { @@ -6247,9 +6264,28 @@ class Client::TdOnGetChatInviteLinkCallback final : public TdQueryCallback { PromisedQueryPtr query_; }; -class Client::TdOnGetStarTransactionsQueryCallback final : public TdQueryCallback { +class Client::TdOnGetStarAmountCallback final : public TdQueryCallback { public: - TdOnGetStarTransactionsQueryCallback(const Client *client, PromisedQueryPtr query) + explicit TdOnGetStarAmountCallback(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)); + } + + CHECK(result->get_id() == td_api::starAmount::ID); + auto amount = move_object_as(result); + answer_query(JsonStarAmount(amount.get()), std::move(query_)); + } + + private: + PromisedQueryPtr query_; +}; + +class Client::TdOnGetStarTransactionsCallback final : public TdQueryCallback { + public: + TdOnGetStarTransactionsCallback(const Client *client, PromisedQueryPtr query) : client_(client), query_(std::move(query)) { } @@ -11771,7 +11807,7 @@ td::Status Client::process_get_star_transactions_query(PromisedQueryPtr &query) auto limit = get_integer_arg(query.get(), "limit", 100, 1, 100); send_request(make_object(make_object(my_id_), td::string(), nullptr, td::to_string(offset), limit), - td::make_unique(this, std::move(query))); + td::make_unique(this, std::move(query))); return td::Status::OK(); } @@ -12246,6 +12282,16 @@ td::Status Client::process_set_business_account_gift_settings_query(PromisedQuer return td::Status::OK(); } +td::Status Client::process_get_business_account_star_balance_query(PromisedQueryPtr &query) { + auto business_connection_id = query->arg("business_connection_id").str(); + check_business_connection(business_connection_id, std::move(query), + [this](const BusinessConnection *business_connection, PromisedQueryPtr query) mutable { + send_request(make_object(business_connection->id_), + 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 d136cf9..eca7794 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -214,6 +214,7 @@ class Client final : public WebhookActor::Callback { class JsonGiveawayCompleted; class JsonChatBoostAdded; class JsonPaidMessagePriceChanged; + class JsonStarAmount; class JsonRevenueWithdrawalState; class JsonAffiliateInfo; class JsonStarTransactionType; @@ -264,7 +265,8 @@ class Client final : public WebhookActor::Callback { class TdOnGetUserChatBoostsCallback; class TdOnGetGiftsCallback; class TdOnCreateInvoiceLinkCallback; - class TdOnGetStarTransactionsQueryCallback; + class TdOnGetStarAmountCallback; + class TdOnGetStarTransactionsCallback; class TdOnReplacePrimaryChatInviteLinkCallback; class TdOnGetChatInviteLinkCallback; class TdOnGetGameHighScoresCallback; @@ -736,6 +738,7 @@ class Client final : public WebhookActor::Callback { td::Status process_set_business_account_profile_photo_query(PromisedQueryPtr &query); td::Status process_remove_business_account_profile_photo_query(PromisedQueryPtr &query); td::Status process_set_business_account_gift_settings_query(PromisedQueryPtr &query); + td::Status process_get_business_account_star_balance_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);