summaryrefslogtreecommitdiff
path: root/discord
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-02-26 00:58:30 -0500
committerouwou <26526779+ouwou@users.noreply.github.com>2021-02-26 00:58:30 -0500
commitc69ebaf35714febf50839e94b126eccfd236d3e4 (patch)
treece643f3c344540af0d30006836aeb9c28094de9d /discord
parent2d65ed96bc4cad21274f2fc7c30650048f1eb4e5 (diff)
downloadabaddon-portaudio-c69ebaf35714febf50839e94b126eccfd236d3e4.tar.gz
abaddon-portaudio-c69ebaf35714febf50839e94b126eccfd236d3e4.zip
store member data received in MESSAGE_CREATE, _UPDATE
Diffstat (limited to 'discord')
-rw-r--r--discord/discord.cpp7
-rw-r--r--discord/message.cpp3
-rw-r--r--discord/message.hpp7
3 files changed, 13 insertions, 4 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp
index 52f3125..b0d79e0 100644
--- a/discord/discord.cpp
+++ b/discord/discord.cpp
@@ -1469,6 +1469,8 @@ void DiscordClient::StoreMessageData(Message &msg) {
if (chan.has_value() && chan->GuildID.has_value())
msg.GuildID = *chan->GuildID;
+ m_store.BeginTransaction();
+
m_store.SetMessage(msg.ID, msg);
m_store.SetUser(msg.Author.ID, msg.Author);
if (msg.Reactions.has_value())
@@ -1482,6 +1484,11 @@ void DiscordClient::StoreMessageData(Message &msg) {
for (const auto &user : msg.Mentions)
m_store.SetUser(user.ID, user);
+ if (msg.Member.has_value())
+ m_store.SetGuildMember(*msg.GuildID, msg.Author.ID, *msg.Member);
+
+ m_store.EndTransaction();
+
if (msg.ReferencedMessage.has_value() && msg.MessageReference.has_value() && msg.MessageReference->ChannelID.has_value())
if (msg.ReferencedMessage.value() != nullptr)
StoreMessageData(**msg.ReferencedMessage);
diff --git a/discord/message.cpp b/discord/message.cpp
index c6457e5..5728df2 100644
--- a/discord/message.cpp
+++ b/discord/message.cpp
@@ -188,7 +188,7 @@ void from_json(const nlohmann::json &j, Message &m) {
JS_D("channel_id", m.ChannelID);
JS_O("guild_id", m.GuildID);
JS_D("author", m.Author);
- // JS_O("member", m.Member);
+ JS_O("member", m.Member);
JS_D("content", m.Content);
JS_D("timestamp", m.Timestamp);
JS_N("edited_timestamp", m.EditedTimestamp);
@@ -224,6 +224,7 @@ void Message::from_json_edited(const nlohmann::json &j) {
JS_D("channel_id", ChannelID);
JS_O("guild_id", GuildID);
JS_O("author", Author);
+ JS_O("member", Member);
JS_O("content", Content);
JS_O("timestamp", Timestamp);
JS_ON("edited_timestamp", EditedTimestamp);
diff --git a/discord/message.hpp b/discord/message.hpp
index d89045b..a666aa5 100644
--- a/discord/message.hpp
+++ b/discord/message.hpp
@@ -4,13 +4,14 @@
#include "user.hpp"
#include "sticker.hpp"
#include "emoji.hpp"
+#include "member.hpp"
#include <string>
#include <vector>
enum class MessageType {
DEFAULT = 0, // yep
- RECIPIENT_ADD = 1, // nope
- RECIPIENT_REMOVE = 2, // nope
+ RECIPIENT_ADD = 1, // yep
+ RECIPIENT_REMOVE = 2, // yep
CALL = 3, // nope
CHANNEL_NAME_CHANGE = 4, // nope
CHANNEL_ICON_CHANGE = 5, // nope
@@ -167,7 +168,7 @@ struct Message {
Snowflake ChannelID;
std::optional<Snowflake> GuildID;
UserData Author;
- // std::optional<GuildMember> Member;
+ std::optional<GuildMember> Member;
std::string Content;
std::string Timestamp;
std::string EditedTimestamp; // null