diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 11d2665..e524765 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -7374,8 +7374,7 @@ class Client::TdOnGetMyStarBalanceCallback final : public TdQueryCallback { class Client::TdOnGetStarTransactionsCallback final : public TdQueryCallback { public: - TdOnGetStarTransactionsCallback(const Client *client, PromisedQueryPtr query) - : client_(client), query_(std::move(query)) { + TdOnGetStarTransactionsCallback(Client *client, PromisedQueryPtr query) : client_(client), query_(std::move(query)) { } void on_result(object_ptr result) final { @@ -7385,11 +7384,24 @@ class Client::TdOnGetStarTransactionsCallback final : public TdQueryCallback { CHECK(result->get_id() == td_api::starTransactions::ID); auto transactions = move_object_as(result); - answer_query(JsonStarTransactions(transactions.get(), client_), std::move(query_)); + td::vector sticker_set_ids; + for (const auto &transaction : transactions->transactions_) { + if (transaction->type_->get_id() == td_api::starTransactionTypeGiftPurchase::ID) { + td::combine(sticker_set_ids, + get_gift_sticker_set_ids( + static_cast(transaction->type_.get())->gift_)); + } + } + client_->get_sticker_set_names( + std::move(sticker_set_ids), + td::PromiseCreator::lambda([actor_id = client_->actor_id(client_), transactions = std::move(transactions), + query = std::move(query_)](td::Unit) mutable { + send_closure(actor_id, &Client::return_star_transactions, std::move(transactions), std::move(query)); + })); } private: - const Client *client_; + Client *client_; PromisedQueryPtr query_; }; @@ -15388,6 +15400,10 @@ void Client::return_received_gifts(object_ptr gifts, bool answer_query(JsonReceivedGifts(gifts.get(), can_be_managed, this), std::move(query)); } +void Client::return_star_transactions(object_ptr transactions, PromisedQueryPtr query) { + answer_query(JsonStarTransactions(transactions.get(), this), std::move(query)); +} + void Client::return_chat_full_info(int64 chat_id, int64 pinned_message_id, PromisedQueryPtr query) { answer_query(JsonChat(chat_id, this, true, pinned_message_id), std::move(query)); } diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index a019c63..576230c 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -951,6 +951,8 @@ class Client final : public WebhookActor::Callback { void return_received_gifts(object_ptr gifts, bool can_be_managed, PromisedQueryPtr query); + void return_star_transactions(object_ptr transactions, PromisedQueryPtr query); + void return_chat_full_info(int64 chat_id, int64 pinned_message_id, PromisedQueryPtr query); void fix_reply_markup_bot_user_ids(object_ptr &reply_markup) const;