add PRESENCE_UPDATE handling (for user object only)

This commit is contained in:
ouwou
2020-10-13 02:35:02 -04:00
parent c17842c16f
commit 99597a80d2
6 changed files with 64 additions and 0 deletions

View File

@@ -519,6 +519,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
case GatewayEvent::GUILD_MEMBER_UPDATE: {
HandleGatewayGuildMemberUpdate(m);
} break;
case GatewayEvent::PRESENCE_UPDATE: {
HandleGatewayPresenceUpdate(m);
} break;
}
} break;
default:
@@ -600,6 +603,12 @@ void DiscordClient::HandleGatewayGuildMemberUpdate(const GatewayMessage &msg) {
m_store.SetGuildMemberData(data.GuildID, data.User.ID, member);
}
void DiscordClient::HandleGatewayPresenceUpdate(const GatewayMessage &msg) {
PresenceUpdateMessage data = msg.Data;
auto cur = m_store.GetUser(data.User.at("id").get<Snowflake>());
User::update_from_json(data.User, *cur);
}
void DiscordClient::HandleGatewayMessageUpdate(const GatewayMessage &msg) {
Snowflake id = msg.Data.at("id");
@@ -728,6 +737,7 @@ void DiscordClient::LoadEventMap() {
m_event_map["GUILD_DELETE"] = GatewayEvent::GUILD_DELETE;
m_event_map["MESSAGE_DELETE_BULK"] = GatewayEvent::MESSAGE_DELETE_BULK;
m_event_map["GUILD_MEMBER_UPDATE"] = GatewayEvent::GUILD_MEMBER_UPDATE;
m_event_map["PRESENCE_UPDATE"] = GatewayEvent::PRESENCE_UPDATE;
}
DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {