diff options
Diffstat (limited to 'discord/member.cpp')
-rw-r--r-- | discord/member.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/discord/member.cpp b/discord/member.cpp index 35e7c93..0e4f6fc 100644 --- a/discord/member.cpp +++ b/discord/member.cpp @@ -1,4 +1,5 @@ #include "member.hpp" +#include "../abaddon.hpp" void from_json(const nlohmann::json &j, GuildMember &m) { JS_O("user", m.User); @@ -10,6 +11,21 @@ void from_json(const nlohmann::json &j, GuildMember &m) { JS_D("mute", m.IsMuted); } +std::vector<RoleData> GuildMember::GetSortedRoles() const { + std::vector<RoleData> roles; + for (const auto role_id : Roles) { + const auto role = Abaddon::Get().GetDiscordClient().GetRole(role_id); + if (!role.has_value()) continue; + roles.push_back(std::move(*role)); + } + + std::sort(roles.begin(), roles.end(), [](const RoleData &a, const RoleData &b) { + return a.Position > b.Position; + }); + + return roles; +} + GuildMember GuildMember::from_update_json(const nlohmann::json &j) { GuildMember ret; JS_D("roles", ret.Roles); |