summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--protocols/Telegram/src/proto.h2
-rw-r--r--protocols/Telegram/src/server.cpp29
2 files changed, 31 insertions, 0 deletions
diff --git a/protocols/Telegram/src/proto.h b/protocols/Telegram/src/proto.h
index c8a48d844e..b0c68e3834 100644
--- a/protocols/Telegram/src/proto.h
+++ b/protocols/Telegram/src/proto.h
@@ -189,6 +189,8 @@ class CTelegramProto : public PROTO<CTelegramProto>
TD::object_ptr<TD::AuthorizationState> pAuthState;
TD::object_ptr<TD::ConnectionState> pConnState;
+ TD::array<TD::int53> m_botIds;
+
mir_cs m_csMarkRead;
TD::int53 m_markChatId = 0;
TD::array<TD::int53> m_markIds;
diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp
index f0315de203..68f62b2ccc 100644
--- a/protocols/Telegram/src/server.cpp
+++ b/protocols/Telegram/src/server.cpp
@@ -24,6 +24,8 @@ void CTelegramProto::OnEndSession(td::ClientManager::Response&)
void __cdecl CTelegramProto::ServerThread(void *)
{
+ m_botIds.clear();
+
m_bTerminated = m_bAuthorized = false;
m_pClientManager = std::make_unique<td::ClientManager>();
m_iClientId = m_pClientManager->create_client_id();
@@ -797,6 +799,15 @@ void CTelegramProto::ProcessMessageContent(TD::updateMessageContent *pObj)
db_event_edit(hDbEvent, &dbei, true);
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
+static char *sttBotIds[] = {
+ "replies_bot_chat_id",
+ "group_anonymous_bot_user_id",
+ "channel_bot_user_id",
+ "anti_spam_bot_user_id",
+};
+
void CTelegramProto::ProcessOption(TD::updateOption *pObj)
{
TD::int53 iValue = 0;
@@ -826,9 +837,18 @@ void CTelegramProto::ProcessOption(TD::updateOption *pObj)
}
setWString(m_iSavedMessages, "Nick", TranslateT("Saved messages"));
+ return;
}
+
+ for (auto &it : sttBotIds)
+ if (pObj->name_ == it) {
+ m_botIds.push_back(iValue);
+ return;
+ }
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
void CTelegramProto::ProcessStatus(TD::updateUserStatus *pObj)
{
if (auto *pUser = FindUser(pObj->user_id_)) {
@@ -909,6 +929,15 @@ void CTelegramProto::ProcessUser(TD::updateUser *pObj)
return;
}
+ for (auto &it : m_botIds)
+ if (it == pUser->id_) {
+ if (auto *pu = FindUser(it)) {
+ Contact::Hide(pu->hContact);
+ Contact::RemoveFromList(pu->hContact);
+ }
+ return;
+ }
+
auto *pu = AddUser(pUser->id_, false);
std::string szFirstName = pUser->first_name_, szLastName = pUser->last_name_;
if (szLastName.empty()) {