diff options
Diffstat (limited to 'protocols/Telegram/src/groupchat.cpp')
-rw-r--r-- | protocols/Telegram/src/groupchat.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/protocols/Telegram/src/groupchat.cpp b/protocols/Telegram/src/groupchat.cpp index a591e1ae80..a5c575c66d 100644 --- a/protocols/Telegram/src/groupchat.cpp +++ b/protocols/Telegram/src/groupchat.cpp @@ -308,13 +308,14 @@ void CTelegramProto::GcChangeMember(TG_USER *pChat, const char *adminId, TD::int } } -void CTelegramProto::GcChangeTopic(TG_USER *pChat, const wchar_t *pwszNewTopic) +void CTelegramProto::GcChangeTopic(TG_USER *pChat, const std::string &szNewTopic) { - if (pChat->m_si == nullptr || pwszNewTopic == nullptr) + if (pChat->m_si == nullptr) return; + Utf2T wszTopic(szNewTopic.c_str()); GCEVENT gce = { pChat->m_si, GC_EVENT_TOPIC }; - gce.pszText.w = pwszNewTopic; + gce.pszText.w = wszTopic; gce.time = time(0); Chat_Event(&gce); } @@ -400,7 +401,7 @@ void CTelegramProto::ProcessBasicGroupInfo(TD::updateBasicGroupFullInfo *pObj) if (auto *pInfo = pObj->basic_group_full_info_.get()) { if (!pInfo->description_.empty()) - GcChangeTopic(pChat, Utf2T(pInfo->description_.c_str())); + GcChangeTopic(pChat, pInfo->description_); g_chatApi.UM_RemoveAll(pChat->m_si); GcAddMembers(pChat, pInfo->members_, true); @@ -436,6 +437,19 @@ void CTelegramProto::ProcessForum(TD::updateForumTopicInfo *pForum) Chat_Control(si, SESSION_ONLINE); } +void CTelegramProto::ProcessSuperGroupInfo(TD::updateSupergroupFullInfo *pObj) +{ + auto *pChat = FindUser(pObj->supergroup_id_); + if (pChat == nullptr) { + debugLogA("Uknown super group id %lld, skipping", pObj->supergroup_id_); + return; + } + + auto *pInfo = pObj->supergroup_full_info_.get(); + if (!pInfo->description_.empty()) + GcChangeTopic(pChat, pInfo->description_); +} + void CTelegramProto::ProcessSuperGroup(TD::updateSupergroup *pObj) { auto iStatusId = pObj->supergroup_->status_->get_id(); |