summaryrefslogtreecommitdiff
path: root/protocols/Telegram/src/groupchat.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2025-06-22 19:32:45 +0300
committerGeorge Hazan <george.hazan@gmail.com>2025-06-22 19:32:45 +0300
commit40eb6363bb4e66bbd3bbc1e4191baaa46e1c21c0 (patch)
treee31488defdcf5306a4d8c46fed8d717f5fa8d8b0 /protocols/Telegram/src/groupchat.cpp
parenta1cce76d8dfd272f3482f9d640606fcd3ca03234 (diff)
fixes #5051 (Telegram: нет возможности увидеть ссылку на канал)
Diffstat (limited to 'protocols/Telegram/src/groupchat.cpp')
-rw-r--r--protocols/Telegram/src/groupchat.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/protocols/Telegram/src/groupchat.cpp b/protocols/Telegram/src/groupchat.cpp
index 38ab04a307..c4f134f6d9 100644
--- a/protocols/Telegram/src/groupchat.cpp
+++ b/protocols/Telegram/src/groupchat.cpp
@@ -404,6 +404,19 @@ void CTelegramProto::ProcessBasicGroupInfo(TG_USER *pChat, TD::basicGroupFullInf
void CTelegramProto::ProcessSuperGroupInfo(TG_USER *pUser, TD::supergroupFullInfo *pInfo)
{
+ setDword(pUser->hContact, "MemberCount", pInfo->member_count_);
+
+ if (auto *pLink = pInfo->invite_link_.get())
+ setUString(pUser->hContact, "Link", pLink->invite_link_.c_str());
+ else if (auto *pGroup = FindSuperGroup(pUser->id)) {
+ if (pGroup->group->usernames_) {
+ CMStringA szLink(FORMAT, "https://t.me/%s", pGroup->group->usernames_->editable_username_.c_str());
+ setString(pUser->hContact, "Link", szLink);
+ }
+ else delSetting(pUser->hContact, "Link");
+ }
+ else delSetting(pUser->hContact, "Link");
+
if (!pInfo->description_.empty()) {
setUString(pUser->hContact, "About", pInfo->description_.c_str());
GcChangeTopic(pUser, pInfo->description_);
@@ -418,16 +431,16 @@ void CTelegramProto::ProcessSuperGroup(TD::updateSupergroup *pObj)
return;
}
- TG_SUPER_GROUP tmp(pObj->supergroup_->id_, 0);
- auto *pGroup = m_arSuperGroups.find(&tmp);
+ auto id = pObj->supergroup_->id_;
+ auto *pGroup = FindSuperGroup(id);
if (pGroup == nullptr) {
- pGroup = new TG_SUPER_GROUP(tmp.id, std::move(pObj->supergroup_));
+ pGroup = new TG_SUPER_GROUP(id, std::move(pObj->supergroup_));
m_arSuperGroups.insert(pGroup);
}
else pGroup->group = std::move(pObj->supergroup_);
if (iStatusId == TD::chatMemberStatusLeft::ID) {
- auto *pUser = AddFakeUser(tmp.id, true);
+ auto *pUser = AddFakeUser(id, true);
pUser->isForum = pGroup->group->is_forum_;
if (pUser->hContact == INVALID_CONTACT_ID) {
// cache some information for the search
@@ -438,7 +451,7 @@ void CTelegramProto::ProcessSuperGroup(TD::updateSupergroup *pObj)
else RemoveFromClist(pUser);
}
else {
- auto *pChat = AddUser(tmp.id, true);
+ auto *pChat = AddUser(id, true);
pChat->isForum = pGroup->group->is_forum_;
if (!pGroup->group->is_channel_)
pChat->bLoadMembers = true;