store member data received in MESSAGE_CREATE, _UPDATE

This commit is contained in:
ouwou
2021-02-26 00:58:30 -05:00
parent 2d65ed96bc
commit c69ebaf357
3 changed files with 13 additions and 4 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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