summaryrefslogtreecommitdiff
path: root/protocols/Discord/src
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2024-05-12 19:36:10 +0300
committerGeorge Hazan <george.hazan@gmail.com>2024-05-12 19:36:10 +0300
commitb7e7695a016663f8ec0f8fa57de9e2d3dfd466a2 (patch)
tree8fa20e280cbe75e3c707039924e2a47f67753264 /protocols/Discord/src
parente11e428fa9014f0795d4c503b3afd93d0aa7c7c4 (diff)
completely fixes #629 (Support for Discord) - reactions
Diffstat (limited to 'protocols/Discord/src')
-rw-r--r--protocols/Discord/src/dispatch.cpp29
-rw-r--r--protocols/Discord/src/proto.h2
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);