mirror of
https://github.com/celisej567/abaddon.git
synced 2026-09-06 20:15:19 +03:00
handle GUILD_MEMBER_UPDATE
This commit is contained in:
@@ -516,6 +516,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
|
||||
case GatewayEvent::MESSAGE_DELETE_BULK: {
|
||||
HandleGatewayMessageDeleteBulk(m);
|
||||
} break;
|
||||
case GatewayEvent::GUILD_MEMBER_UPDATE: {
|
||||
HandleGatewayGuildMemberUpdate(m);
|
||||
} break;
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
@@ -591,6 +594,12 @@ void DiscordClient::HandleGatewayMessageDeleteBulk(const GatewayMessage &msg) {
|
||||
}
|
||||
}
|
||||
|
||||
void DiscordClient::HandleGatewayGuildMemberUpdate(const GatewayMessage &msg) {
|
||||
GuildMemberUpdateMessage data = msg.Data;
|
||||
auto member = GuildMember::from_update_json(msg.Data); // meh
|
||||
m_store.SetGuildMemberData(data.GuildID, data.User.ID, member);
|
||||
}
|
||||
|
||||
void DiscordClient::HandleGatewayMessageUpdate(const GatewayMessage &msg) {
|
||||
Snowflake id = msg.Data.at("id");
|
||||
|
||||
@@ -718,6 +727,7 @@ void DiscordClient::LoadEventMap() {
|
||||
m_event_map["GUILD_CREATE"] = GatewayEvent::GUILD_CREATE;
|
||||
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;
|
||||
}
|
||||
|
||||
DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {
|
||||
|
||||
@@ -123,6 +123,7 @@ private:
|
||||
void HandleGatewayGuildCreate(const GatewayMessage &msg);
|
||||
void HandleGatewayGuildDelete(const GatewayMessage &msg);
|
||||
void HandleGatewayMessageDeleteBulk(const GatewayMessage &msg);
|
||||
void HandleGatewayGuildMemberUpdate(const GatewayMessage &msg);
|
||||
void HeartbeatThread();
|
||||
void SendIdentify();
|
||||
|
||||
|
||||
@@ -9,3 +9,13 @@ void from_json(const nlohmann::json &j, GuildMember &m) {
|
||||
JS_D("deaf", m.IsDeafened);
|
||||
JS_D("mute", m.IsMuted);
|
||||
}
|
||||
|
||||
GuildMember GuildMember::from_update_json(const nlohmann::json &j) {
|
||||
GuildMember ret;
|
||||
JS_D("roles", ret.Roles);
|
||||
JS_D("user", ret.User);
|
||||
JS_ON("nick", ret.Nickname);
|
||||
JS_D("joined_at", ret.JoinedAt);
|
||||
JS_ON("premium_since", ret.PremiumSince);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -15,4 +15,5 @@ struct GuildMember {
|
||||
bool IsMuted; //
|
||||
|
||||
friend void from_json(const nlohmann::json &j, GuildMember &m);
|
||||
static GuildMember from_update_json(const nlohmann::json &j);
|
||||
};
|
||||
|
||||
@@ -133,3 +133,11 @@ void to_json(nlohmann::json &j, const MessageEditObject &m) {
|
||||
if (m.Flags != -1)
|
||||
j["flags"] = m.Flags;
|
||||
}
|
||||
|
||||
void from_json(const nlohmann::json &j, GuildMemberUpdateMessage &m) {
|
||||
JS_D("guild_id", m.GuildID);
|
||||
JS_D("roles", m.Roles);
|
||||
JS_D("user", m.User);
|
||||
JS_ON("nick", m.Nick);
|
||||
JS_D("joined_at", m.JoinedAt);
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ enum class GatewayEvent : int {
|
||||
GUILD_CREATE,
|
||||
GUILD_DELETE,
|
||||
MESSAGE_DELETE_BULK,
|
||||
GUILD_MEMBER_UPDATE,
|
||||
};
|
||||
|
||||
struct GatewayMessage {
|
||||
@@ -189,3 +190,14 @@ struct MessageEditObject {
|
||||
|
||||
friend void to_json(nlohmann::json &j, const MessageEditObject &m);
|
||||
};
|
||||
|
||||
struct GuildMemberUpdateMessage {
|
||||
Snowflake GuildID; //
|
||||
std::vector<Snowflake> Roles; //
|
||||
User User; //
|
||||
std::string Nick; // opt, null
|
||||
std::string JoinedAt;
|
||||
std::string PremiumSince; // opt, null
|
||||
|
||||
friend void from_json(const nlohmann::json &j, GuildMemberUpdateMessage &m);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user