From b7e7695a016663f8ec0f8fa57de9e2d3dfd466a2 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 12 May 2024 19:36:10 +0300 Subject: completely fixes #629 (Support for Discord) - reactions --- protocols/Discord/src/dispatch.cpp | 29 +++++++++++++++++++++++++++++ protocols/Discord/src/proto.h | 2 ++ 2 files changed, 31 insertions(+) (limited to 'protocols/Discord/src') diff --git a/protocols/Discord/src/dispatch.cpp b/protocols/Discord/src/dispatch.cpp index 09a3c3deab..8963d4fa7c 100644 --- a/protocols/Discord/src/dispatch.cpp +++ b/protocols/Discord/src/dispatch.cpp @@ -52,6 +52,8 @@ static handlers[] = // these structures must me sorted alphabetically { L"MESSAGE_ACK", &CDiscordProto::OnCommandMessageAck }, { L"MESSAGE_CREATE", &CDiscordProto::OnCommandMessageCreate }, { L"MESSAGE_DELETE", &CDiscordProto::OnCommandMessageDelete }, + { L"MESSAGE_REACTION_ADD", &CDiscordProto::OnCommandMessageAddReaction }, + { L"MESSAGE_REACTION_REMOVE", &CDiscordProto::OnCommandMessageRemoveReaction }, { L"MESSAGE_UPDATE", &CDiscordProto::OnCommandMessageUpdate }, { L"PRESENCE_UPDATE", &CDiscordProto::OnCommandPresence }, @@ -529,6 +531,33 @@ void CDiscordProto::OnCommandMessage(const JSONNode &pRoot, bool bIsNew) } } +///////////////////////////////////////////////////////////////////////////////////////// +// message reactions + +void CDiscordProto::OnCommandMessageAddReaction(const JSONNode &pRoot) +{ + std::string msgId(pRoot["message_id"].as_string()); + if (MEVENT hEvent = db_event_getById(m_szModuleName, msgId.c_str())) { + DB::EventInfo dbei(hEvent); + if (dbei) { + dbei.addReaction(pRoot["emoji"]["name"].as_string().c_str()); + db_event_edit(hEvent, &dbei); + } + } +} + +void CDiscordProto::OnCommandMessageRemoveReaction(const JSONNode &pRoot) +{ + CMStringA msgId(pRoot["message_id"].as_mstring()); + if (MEVENT hEvent = db_event_getById(m_szModuleName, msgId.c_str())) { + DB::EventInfo dbei(hEvent); + if (dbei) { + dbei.delReaction(pRoot["emoji"]["name"].as_string().c_str()); + db_event_edit(hEvent, &dbei); + } + } +} + ///////////////////////////////////////////////////////////////////////////////////////// // someone changed its status diff --git a/protocols/Discord/src/proto.h b/protocols/Discord/src/proto.h index 438c97d6e1..aaa00c0cd5 100644 --- a/protocols/Discord/src/proto.h +++ b/protocols/Discord/src/proto.h @@ -506,6 +506,8 @@ public: void OnCommandMessageCreate(const JSONNode &json); void OnCommandMessageDelete(const JSONNode &json); void OnCommandMessageUpdate(const JSONNode &json); + void OnCommandMessageAddReaction(const JSONNode &json); + void OnCommandMessageRemoveReaction(const JSONNode &json); void OnCommandMessageAck(const JSONNode &json); void OnCommandPresence(const JSONNode &json); void OnCommandReady(const JSONNode &json); -- cgit v1.2.3