Support polls in get_message_content_sticker_set_ids.

main
levlam 2 months ago
parent 102c7175e5
commit f96546bae2

@ -17224,13 +17224,28 @@ void Client::set_message_reply_markup(MessageInfo *message_info, object_ptr<td_a
message_info->is_content_changed = true; message_info->is_content_changed = true;
} }
td::int64 Client::get_sticker_set_id(const object_ptr<td_api::MessageContent> &content) { td::vector<td::int64> Client::get_message_content_sticker_set_ids(const object_ptr<td_api::MessageContent> &content) {
CHECK(content != nullptr); CHECK(content != nullptr);
if (content->get_id() != td_api::messageSticker::ID) { switch (content->get_id()) {
return 0; case td_api::messagePoll::ID: {
const auto *poll = static_cast<const td_api::messagePoll *>(content.get())->poll_.get();
td::vector<int64> sticker_set_ids;
for (const auto &option : poll->options_) {
td::combine(sticker_set_ids, get_message_content_sticker_set_ids(option->media_));
}
return sticker_set_ids;
}
case td_api::messageSticker::ID: {
auto sticker_set_id = static_cast<const td_api::messageSticker *>(content.get())->sticker_->set_id_;
if (sticker_set_id != 0) {
return {sticker_set_id};
}
break;
}
default:
break;
} }
return {};
return static_cast<const td_api::messageSticker *>(content.get())->sticker_->set_id_;
} }
td::vector<td::int64> Client::get_message_sticker_set_ids(const MessageInfo *message_info) { td::vector<td::int64> Client::get_message_sticker_set_ids(const MessageInfo *message_info) {
@ -17239,15 +17254,9 @@ td::vector<td::int64> Client::get_message_sticker_set_ids(const MessageInfo *mes
} }
td::vector<int64> sticker_set_ids; td::vector<int64> sticker_set_ids;
auto content_sticker_set_id = get_sticker_set_id(message_info->content); td::combine(sticker_set_ids, get_message_content_sticker_set_ids(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) { 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_); td::combine(sticker_set_ids, get_message_content_sticker_set_ids(message_info->reply_to_message->content_));
if (reply_sticker_set_id != 0) {
sticker_set_ids.push_back(reply_sticker_set_id);
}
} }
if (message_info->business_reply_to_message != nullptr) { if (message_info->business_reply_to_message != nullptr) {
td::combine(sticker_set_ids, get_message_sticker_set_ids(message_info->business_reply_to_message.get())); td::combine(sticker_set_ids, get_message_sticker_set_ids(message_info->business_reply_to_message.get()));

@ -1184,7 +1184,7 @@ class Client final : public WebhookActor::Callback {
static void set_message_reply_markup(MessageInfo *message_info, object_ptr<td_api::ReplyMarkup> &&reply_markup); static void set_message_reply_markup(MessageInfo *message_info, object_ptr<td_api::ReplyMarkup> &&reply_markup);
static int64 get_sticker_set_id(const object_ptr<td_api::MessageContent> &content); static td::vector<int64> get_message_content_sticker_set_ids(const object_ptr<td_api::MessageContent> &content);
static td::vector<int64> get_message_sticker_set_ids(const MessageInfo *message_info); static td::vector<int64> get_message_sticker_set_ids(const MessageInfo *message_info);

Loading…
Cancel
Save