diff options
author | George Hazan <george.hazan@gmail.com> | 2024-05-12 19:36:10 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-05-12 19:36:10 +0300 |
commit | b7e7695a016663f8ec0f8fa57de9e2d3dfd466a2 (patch) | |
tree | 8fa20e280cbe75e3c707039924e2a47f67753264 /protocols/Discord/src | |
parent | e11e428fa9014f0795d4c503b3afd93d0aa7c7c4 (diff) |
completely fixes #629 (Support for Discord) - reactions
Diffstat (limited to 'protocols/Discord/src')
-rw-r--r-- | protocols/Discord/src/dispatch.cpp | 29 | ||||
-rw-r--r-- | protocols/Discord/src/proto.h | 2 |
2 files changed, 31 insertions, 0 deletions
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 },
@@ -530,6 +532,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
void CDiscordProto::OnCommandMessageAck(const JSONNode &pRoot)
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);
|