diff options
-rw-r--r-- | protocols/Telegram/src/proto.h | 2 | ||||
-rw-r--r-- | protocols/Telegram/src/server.cpp | 29 |
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()) {
|