From 1722aefd7ba37b96bbb47dfb7436504cbfb818fb Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 10 Jul 2026 15:25:21 +0300 Subject: Process information about communities. --- td/telegram/ChatManager.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'td') diff --git a/td/telegram/ChatManager.cpp b/td/telegram/ChatManager.cpp index 455bec494..c7fe6c445 100644 --- a/td/telegram/ChatManager.cpp +++ b/td/telegram/ChatManager.cpp @@ -11,6 +11,7 @@ #include "td/telegram/BotVerification.h" #include "td/telegram/BotVerification.hpp" #include "td/telegram/ChatTheme.h" +#include "td/telegram/CommunityManager.h" #include "td/telegram/Dependencies.h" #include "td/telegram/DialogAdministrator.h" #include "td/telegram/DialogInviteLink.hpp" @@ -5698,8 +5699,11 @@ void ChatManager::on_get_chat(tl_object_ptr &&chat, const ch on_get_channel_forbidden(static_cast(*chat), source); break; case telegram_api::community::ID: + td_->community_manager_->on_get_community(static_cast(*chat), source); break; case telegram_api::communityForbidden::ID: + td_->community_manager_->on_get_community_forbidden(static_cast(*chat), + source); break; default: UNREACHABLE(); @@ -5709,12 +5713,22 @@ void ChatManager::on_get_chat(tl_object_ptr &&chat, const ch void ChatManager::on_get_chats(vector> &&chats, const char *source) { for (auto &chat : chats) { auto constuctor_id = chat->get_id(); - if (constuctor_id == telegram_api::channel::ID || constuctor_id == telegram_api::channelForbidden::ID) { - // apply info about megagroups before corresponding chats + if (constuctor_id == telegram_api::community::ID || constuctor_id == telegram_api::communityForbidden::ID) { + // apply info about communities before the corresponding channels on_get_chat(std::move(chat), source); chat = nullptr; } } + for (auto &chat : chats) { + if (chat != nullptr) { + auto constuctor_id = chat->get_id(); + if (constuctor_id == telegram_api::channel::ID || constuctor_id == telegram_api::channelForbidden::ID) { + // apply info about megagroups before the corresponding chats + on_get_chat(std::move(chat), source); + chat = nullptr; + } + } + } for (auto &chat : chats) { if (chat != nullptr) { on_get_chat(std::move(chat), source); -- cgit v1.2.3