From 79e717d8e8afe090495da64477b670f7b6434544 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 29 Nov 2023 19:26:37 +0300 Subject: =?UTF-8?q?fixes=20#3989=20(Telegram:=20=D0=BA=D0=BE=D0=B3=D0=B4?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B0=D1=82=20=D0=BF=D1=80=D0=B5=D0=B2=D1=80?= =?UTF-8?q?=D0=B0=D1=89=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=B2=20=D1=81?= =?UTF-8?q?=D1=83=D0=BF=D0=B5=D1=80=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D1=83,?= =?UTF-8?q?=20=D0=BE=D0=BD=20=D0=B7=D0=B0=D0=B4=D0=B2=D0=B0=D0=B8=D0=B2?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=B2=20=D0=9C=D0=B8=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D0=B4=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocols/Telegram/src/groupchat.cpp | 3 ++- protocols/Telegram/src/server.cpp | 20 ++++++++++++++------ protocols/Telegram/src/utils.cpp | 12 ++++++++++++ 3 files changed, 28 insertions(+), 7 deletions(-) (limited to 'protocols/Telegram/src') diff --git a/protocols/Telegram/src/groupchat.cpp b/protocols/Telegram/src/groupchat.cpp index 4962a1ac85..bf3f8312a5 100644 --- a/protocols/Telegram/src/groupchat.cpp +++ b/protocols/Telegram/src/groupchat.cpp @@ -201,7 +201,8 @@ int CTelegramProto::GcEventHook(WPARAM, LPARAM lParam) if (gch->ptszText && mir_wstrlen(gch->ptszText) > 0) { rtrimw(gch->ptszText); Chat_UnescapeTags(gch->ptszText); - SendTextMessage(-userId, T2Utf(gch->ptszText)); + if (auto *pUser = FindUser(userId)) + SendTextMessage(pUser->chatId, T2Utf(gch->ptszText)); } break; diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp index d75b12792e..3a81fb4aa3 100644 --- a/protocols/Telegram/src/server.cpp +++ b/protocols/Telegram/src/server.cpp @@ -413,15 +413,23 @@ INT_PTR CTelegramProto::SvcLoadServerHistory(WPARAM hContact, LPARAM) void CTelegramProto::ProcessBasicGroup(TD::updateBasicGroup *pObj) { auto *pBasicGroup = pObj->basic_group_.get(); - if (pBasicGroup->upgraded_to_supergroup_id_) - if (auto *pUser = FindUser(pBasicGroup->upgraded_to_supergroup_id_)) { - pUser->bLoadMembers = true; - if (pUser->m_si) - pUser->m_si->bHasNicklist = true; - } auto iStatusId = pBasicGroup->status_->get_id(); if (iStatusId == TD::chatMemberStatusBanned::ID) { + if (pBasicGroup->upgraded_to_supergroup_id_) { + auto *pUser = FindUser(pBasicGroup->upgraded_to_supergroup_id_); + if (pUser) { + pUser->bLoadMembers = true; + if (pUser->m_si) + pUser->m_si->bHasNicklist = true; + + if (auto *pOldUser = FindUser(pBasicGroup->id_)) { + pUser->hContact = pOldUser->hContact; + SetId(pUser->hContact, pBasicGroup->upgraded_to_supergroup_id_); + } + } + } + debugLogA("We are banned here, skipping"); return; } diff --git a/protocols/Telegram/src/utils.cpp b/protocols/Telegram/src/utils.cpp index 840ee15946..414a9bdc7a 100644 --- a/protocols/Telegram/src/utils.cpp +++ b/protocols/Telegram/src/utils.cpp @@ -451,6 +451,18 @@ CMStringA CTelegramProto::GetMessageText(TG_USER *pUser, const TD::message *pMsg pszUserId = szUserId; switch (pBody->get_id()) { + case TD::messageChatUpgradeTo::ID: + { + auto *pUgrade = (TD::messageChatUpgradeTo *)pBody; + MCONTACT hContact = pUser->hContact; + m_arChats.remove(pUser); + m_arUsers.remove(pUser); + SetId(hContact, pUgrade->supergroup_id_); + pUser = new TG_USER(pUgrade->supergroup_id_, hContact, true); + m_arUsers.insert(pUser); + } + break; + case TD::messagePhoto::ID: { auto *pDoc = (TD::messagePhoto *)pBody; -- cgit v1.2.3