#pragma once #include "snowflake.hpp" #include "json.hpp" #include struct UserData { Snowflake ID; std::string Username; std::string Discriminator; std::string Avatar; // null std::optional IsBot; std::optional IsSystem; std::optional IsMFAEnabled; std::optional Locale; std::optional IsVerified; std::optional Email; // null std::optional Flags; std::optional PremiumType; // null std::optional PublicFlags; // undocumented (opt) std::optional IsDesktop; std::optional IsMobile; std::optional IsNSFWAllowed; // null std::optional Phone; // null? friend void from_json(const nlohmann::json &j, UserData &m); friend void to_json(nlohmann::json &j, const UserData &m); static void update_from_json(const nlohmann::json &j, UserData &m); bool HasAvatar() const; bool HasAnimatedAvatar() const; std::string GetAvatarURL(std::string ext = "png", std::string size = "32") const; Snowflake GetHoistedRole(Snowflake guild_id, bool with_color = false) const; std::string GetMention() const; };