diff options
Diffstat (limited to 'protocols/Telegram')
| -rw-r--r-- | protocols/Telegram/Telegram.vcxproj | 1 | ||||
| -rw-r--r-- | protocols/Telegram/Telegram.vcxproj.filters | 3 | ||||
| -rw-r--r-- | protocols/Telegram/src/server.cpp | 9 | ||||
| -rw-r--r-- | protocols/Telegram/src/utils.cpp | 17 | ||||
| -rw-r--r-- | protocols/Telegram/src/utils.h | 2 |
5 files changed, 26 insertions, 6 deletions
diff --git a/protocols/Telegram/Telegram.vcxproj b/protocols/Telegram/Telegram.vcxproj index 5bda58b10d..6261b8acdf 100644 --- a/protocols/Telegram/Telegram.vcxproj +++ b/protocols/Telegram/Telegram.vcxproj @@ -52,6 +52,7 @@ <ClInclude Include="src\proto.h" />
<ClInclude Include="src\resource.h" />
<ClInclude Include="src\stdafx.h" />
+ <ClInclude Include="src\utils.h" />
<ClInclude Include="src\version.h" />
</ItemGroup>
<ItemGroup>
diff --git a/protocols/Telegram/Telegram.vcxproj.filters b/protocols/Telegram/Telegram.vcxproj.filters index 556048fcbc..948f34d1af 100644 --- a/protocols/Telegram/Telegram.vcxproj.filters +++ b/protocols/Telegram/Telegram.vcxproj.filters @@ -48,6 +48,9 @@ <ClInclude Include="src\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="src\utils.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="res\version.rc">
diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp index b411cba637..59da2a3c9f 100644 --- a/protocols/Telegram/src/server.cpp +++ b/protocols/Telegram/src/server.cpp @@ -393,18 +393,13 @@ void CTelegramProto::ProcessMessage(TD::updateNewMessage *pObj) return;
}
- if (pUser->isGroupChat) {
- debugLogA("message from group chat, ignored");
- return;
- }
-
CMStringA szText(GetMessageText(pMessage->content_.get()));
if (szText.IsEmpty()) {
debugLogA("this message was not processed, ignored");
return;
}
- char szId[100];
+ char szId[100], szUserId[100];
_i64toa(pMessage->id_, szId, 10);
PROTORECVEVENT pre = {};
@@ -413,6 +408,8 @@ void CTelegramProto::ProcessMessage(TD::updateNewMessage *pObj) pre.timestamp = pMessage->date_;
if (pMessage->is_outgoing_)
pre.flags |= PREF_SENT;
+ if (pUser->isGroupChat)
+ pre.szUserId = getSender(pMessage->sender_id_.get(), szUserId, sizeof(szUserId));
ProtoChainRecvMsg(pUser->hContact, &pre);
}
diff --git a/protocols/Telegram/src/utils.cpp b/protocols/Telegram/src/utils.cpp index d921927a60..b725ba5f90 100644 --- a/protocols/Telegram/src/utils.cpp +++ b/protocols/Telegram/src/utils.cpp @@ -17,6 +17,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "stdafx.h"
+char* getSender(const TD::MessageSender *pSender, char *pDest, size_t cbSize)
+{
+ switch (pSender->get_id()) {
+ case TD::messageSenderChat::ID:
+ _i64toa_s(((TD::messageSenderChat *)pSender)->chat_id_, pDest, cbSize, 10);
+ break;
+ case TD::messageSenderUser::ID:
+ _i64toa_s(((TD::messageSenderUser *)pSender)->user_id_, pDest, cbSize, 10);
+ break;
+ default:
+ *pDest = 0;
+ }
+ return pDest;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
void CTelegramProto::UpdateString(MCONTACT hContact, const char *pszSetting, const std::string &str)
{
if (str.empty())
diff --git a/protocols/Telegram/src/utils.h b/protocols/Telegram/src/utils.h index 50e96676b7..846428a086 100644 --- a/protocols/Telegram/src/utils.h +++ b/protocols/Telegram/src/utils.h @@ -1 +1,3 @@ #pragma once
+
+char *getSender(const TD::MessageSender *pSender, char *pDest, size_t cbSize);
|
