Improve get_message_sticker_set_ids.

main
levlam 2 months ago
parent dcdcb552d9
commit 070a06588d

@ -6952,7 +6952,7 @@ class Client::TdOnGetChatPinnedMessageCallback final : public TdQueryCallback {
CHECK(pinned_message_id > 0); CHECK(pinned_message_id > 0);
auto pinned_message_info = client_->get_message(chat_id_, pinned_message_id, true); auto pinned_message_info = client_->get_message(chat_id_, pinned_message_id, true);
CHECK(pinned_message_info != nullptr); 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_); auto chat_info = client_->get_chat(chat_id_);
@ -17378,6 +17378,7 @@ void Client::set_message_reply_markup(MessageInfo *message_info, object_ptr<td_a
} }
td::int64 Client::get_sticker_set_id(const object_ptr<td_api::MessageContent> &content) { td::int64 Client::get_sticker_set_id(const object_ptr<td_api::MessageContent> &content) {
CHECK(content != nullptr);
if (content->get_id() != td_api::messageSticker::ID) { if (content->get_id() != td_api::messageSticker::ID) {
return 0; return 0;
} }
@ -17385,12 +17386,23 @@ td::int64 Client::get_sticker_set_id(const object_ptr<td_api::MessageContent> &c
return static_cast<const td_api::messageSticker *>(content.get())->sticker_->set_id_; return static_cast<const td_api::messageSticker *>(content.get())->sticker_->set_id_;
} }
td::int64 Client::get_sticker_set_id(const MessageInfo *message_info) { td::vector<td::int64> Client::get_message_sticker_set_ids(const MessageInfo *message_info) {
if (message_info == nullptr || message_info->content == nullptr) { if (message_info == nullptr) {
return 0; return {};
} }
return get_sticker_set_id(message_info->content); td::vector<int64> 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 { bool Client::have_sticker_set_name(int64 sticker_set_id) const {

@ -1198,7 +1198,7 @@ class Client final : public WebhookActor::Callback {
static int64 get_sticker_set_id(const object_ptr<td_api::MessageContent> &content); static int64 get_sticker_set_id(const object_ptr<td_api::MessageContent> &content);
static int64 get_sticker_set_id(const MessageInfo *message_info); static td::vector<int64> get_message_sticker_set_ids(const MessageInfo *message_info);
bool have_sticker_set_name(int64 sticker_set_id) const; bool have_sticker_set_name(int64 sticker_set_id) const;

Loading…
Cancel
Save