From bf6a7b1197b55bfd9786f30ee6d7a531aee82aee Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 20 Apr 2026 14:39:38 +0300 Subject: [PATCH] Use get_sticker_set_names in TdOnGetGiftsCallback. --- telegram-bot-api/Client.cpp | 21 +++++++++++++++++---- telegram-bot-api/Client.h | 2 ++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 4f30b42..505108e 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -7337,7 +7337,7 @@ class Client::TdOnGetReceivedGiftsCallback final : public TdQueryCallback { auto gifts = move_object_as(result); td::vector sticker_set_ids; for (const auto &gift : gifts->gifts_) { - td::combine(sticker_set_ids, Client::get_sent_gift_sticker_set_ids(gift->gift_)); + td::combine(sticker_set_ids, get_sent_gift_sticker_set_ids(gift->gift_)); } client_->get_sticker_set_names( std::move(sticker_set_ids), @@ -7495,7 +7495,7 @@ class Client::TdOnGetUserChatBoostsCallback final : public TdQueryCallback { class Client::TdOnGetGiftsCallback final : public TdQueryCallback { public: - TdOnGetGiftsCallback(const Client *client, PromisedQueryPtr query) : client_(client), query_(std::move(query)) { + TdOnGetGiftsCallback(Client *client, PromisedQueryPtr query) : client_(client), query_(std::move(query)) { } void on_result(object_ptr result) final { @@ -7506,11 +7506,20 @@ class Client::TdOnGetGiftsCallback final : public TdQueryCallback { CHECK(result->get_id() == td_api::availableGifts::ID); auto available_gifts = move_object_as(result); auto gifts = td::transform(std::move(available_gifts->gifts_), [](auto &&gift) { return std::move(gift->gift_); }); - answer_query(JsonGifts(gifts, client_), std::move(query_)); + td::vector sticker_set_ids; + for (const auto &gift : gifts) { + td::combine(sticker_set_ids, get_gift_sticker_set_ids(gift)); + } + client_->get_sticker_set_names( + std::move(sticker_set_ids), + td::PromiseCreator::lambda([actor_id = client_->actor_id(client_), gifts = std::move(gifts), + query = std::move(query_)](td::Unit) mutable { + send_closure(actor_id, &Client::return_gifts, std::move(gifts), std::move(query)); + })); } private: - const Client *client_; + Client *client_; PromisedQueryPtr query_; }; @@ -15370,6 +15379,10 @@ void Client::return_stickers(object_ptr stickers, PromisedQuer answer_query(JsonStickers(stickers->stickers_, this), std::move(query)); } +void Client::return_gifts(td::vector> gifts, PromisedQueryPtr query) { + answer_query(JsonGifts(gifts, this), std::move(query)); +} + void Client::return_received_gifts(object_ptr gifts, bool can_be_managed, PromisedQueryPtr query) { answer_query(JsonReceivedGifts(gifts.get(), can_be_managed, this), std::move(query)); diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index cccbcaf..a019c63 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -947,6 +947,8 @@ class Client final : public WebhookActor::Callback { void return_stickers(object_ptr stickers, PromisedQueryPtr query); + void return_gifts(td::vector> gifts, PromisedQueryPtr query); + void return_received_gifts(object_ptr gifts, bool can_be_managed, PromisedQueryPtr query); void return_chat_full_info(int64 chat_id, int64 pinned_message_id, PromisedQueryPtr query);