diff --git a/td/telegram/StickersManager.cpp b/td/telegram/StickersManager.cpp index 4574e906..b7f0b6b4 100644 --- a/td/telegram/StickersManager.cpp +++ b/td/telegram/StickersManager.cpp @@ -1638,7 +1638,12 @@ void StickersManager::on_get_messages_sticker_set(int64 sticker_set_id, stickers.push_back(it->second); s->sticker_emojis_map_[it->second].push_back(pack->emoticon_); } - s->emoji_stickers_map_.emplace(remove_emoji_modifiers(pack->emoticon_), std::move(stickers)); + auto &sticker_ids = s->emoji_stickers_map_[remove_emoji_modifiers(pack->emoticon_)]; + for (auto sticker_id : stickers) { + if (std::find(sticker_ids.begin(), sticker_ids.end(), sticker_id) == sticker_ids.end()) { + sticker_ids.push_back(sticker_id); + } + } } update_sticker_set(s); diff --git a/td/telegram/StickersManager.hpp b/td/telegram/StickersManager.hpp index b3b89edb..02bcd56c 100644 --- a/td/telegram/StickersManager.hpp +++ b/td/telegram/StickersManager.hpp @@ -225,7 +225,10 @@ void StickersManager::parse_sticker_set(StickerSet *sticker_set, T &parser) { vector emojis; parse(emojis, parser); for (auto &emoji : emojis) { - sticker_set->emoji_stickers_map_[remove_emoji_modifiers(emoji)].push_back(sticker_id); + auto &sticker_ids = sticker_set->emoji_stickers_map_[remove_emoji_modifiers(emoji)]; + if (sticker_ids.empty() || sticker_ids.back() != sticker_id) { + sticker_ids.push_back(sticker_id); + } } sticker_set->sticker_emojis_map_[sticker_id] = std::move(emojis); }