From 070a06588db198d6bae180a365bcd765d2f470bd Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 15 Apr 2026 17:29:27 +0300 Subject: [PATCH] Improve get_message_sticker_set_ids. --- telegram-bot-api/Client.cpp | 22 +++++++++++++++++----- telegram-bot-api/Client.h | 2 +- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 8a9c14f..049d7b2 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -6952,7 +6952,7 @@ class Client::TdOnGetChatPinnedMessageCallback final : public TdQueryCallback { CHECK(pinned_message_id > 0); auto pinned_message_info = client_->get_message(chat_id_, pinned_message_id, true); CHECK(pinned_message_info != nullptr); - sticker_set_ids.push_back(get_sticker_set_id(pinned_message_info)); + sticker_set_ids = get_message_sticker_set_ids(pinned_message_info); } auto chat_info = client_->get_chat(chat_id_); @@ -17378,6 +17378,7 @@ void Client::set_message_reply_markup(MessageInfo *message_info, object_ptr &content) { + CHECK(content != nullptr); if (content->get_id() != td_api::messageSticker::ID) { return 0; } @@ -17385,12 +17386,23 @@ td::int64 Client::get_sticker_set_id(const object_ptr &c return static_cast(content.get())->sticker_->set_id_; } -td::int64 Client::get_sticker_set_id(const MessageInfo *message_info) { - if (message_info == nullptr || message_info->content == nullptr) { - return 0; +td::vector Client::get_message_sticker_set_ids(const MessageInfo *message_info) { + if (message_info == nullptr) { + return {}; } - return get_sticker_set_id(message_info->content); + td::vector sticker_set_ids; + auto content_sticker_set_id = get_sticker_set_id(message_info->content); + if (content_sticker_set_id != 0) { + sticker_set_ids.push_back(content_sticker_set_id); + } + if (message_info->reply_to_message != nullptr && message_info->reply_to_message->content_ != nullptr) { + auto reply_sticker_set_id = get_sticker_set_id(message_info->reply_to_message->content_); + if (reply_sticker_set_id != 0) { + sticker_set_ids.push_back(reply_sticker_set_id); + } + } + return sticker_set_ids; } bool Client::have_sticker_set_name(int64 sticker_set_id) const { diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 294b840..74b001a 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -1198,7 +1198,7 @@ class Client final : public WebhookActor::Callback { static int64 get_sticker_set_id(const object_ptr &content); - static int64 get_sticker_set_id(const MessageInfo *message_info); + static td::vector get_message_sticker_set_ids(const MessageInfo *message_info); bool have_sticker_set_name(int64 sticker_set_id) const;