Skip to content
This repository was archived by the owner on Dec 1, 2021. It is now read-only.

Commit 6532eeb

Browse files
committed
Fixed missing message update member creation
1 parent 488d263 commit 6532eeb

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

include/aegis/impl/core.cpp

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1314,17 +1314,35 @@ AEGIS_DECL void core::ws_message_create(const json & result, shards::shard * _sh
13141314
AEGIS_DECL void core::ws_message_update(const json & result, shards::shard * _shard)
13151315
{
13161316
auto _channel = channel_create(result["d"]["channel_id"]);
1317-
lib::optional<std::reference_wrapper<aegis::user>> _user;
1317+
1318+
gateway::events::message_update obj{ *_shard, *_channel };
1319+
13181320
if (result["d"].count("author"))
13191321
{
1320-
const json & author = result["d"]["author"];
1321-
_user = std::ref(*user_create(author["id"]));
1322+
auto g = &_channel->get_guild();
1323+
auto m = find_user(result["d"]["author"]["id"]);
1324+
if (m == nullptr)
1325+
{
1326+
if (result["d"].count("member") && !result["d"]["member"].is_null())
1327+
{
1328+
gateway::objects::member u = result["d"]["member"];
1329+
u._user = result["d"]["author"];
1330+
int64_t author_id = u._user->id;
1331+
m = user_create(author_id);
1332+
m->_load_nolock(g, u, _shard);
1333+
}
1334+
}
1335+
1336+
if (m->get_username().empty() && result["d"].count("member") && !result["d"]["member"].is_null())
1337+
{
1338+
gateway::objects::member u = result["d"]["member"];
1339+
u._user = result["d"]["author"];
1340+
m->_load_nolock(g, u, _shard);
1341+
}
1342+
1343+
obj.user = std::ref(*m);
13221344
}
1323-
gateway::events::message_update obj{ *_shard, *_channel };
1324-
1325-
if(_user.has_value())
1326-
obj.user = std::ref(*_user);
1327-
1345+
13281346
obj.msg = result["d"];
13291347

13301348
if (i_message_update_raw)

0 commit comments

Comments
 (0)