12 #include "aegis/config.hpp"
13 #include "aegis/snowflake.hpp"
14 #include "aegis/gateway/objects/guild_member.hpp"
15 #include "aegis/gateway/objects/channel.hpp"
16 #include "aegis/gateway/objects/role.hpp"
17 #include "aegis/gateway/objects/voice_state.hpp"
18 #include "aegis/gateway/objects/presence.hpp"
19 #include "aegis/gateway/objects/emoji.hpp"
20 #include <nlohmann/json.hpp>
34 void from_json(
const nlohmann::json& j, guild& m);
35 void to_json(nlohmann::json& j,
const guild& m);
44 from_json(nlohmann::json::parse(_json), *
this);
49 from_json(_json, *
this);
71 std::vector<objects::role>
roles;
84 std::vector<objects::guild_member>
members;
91 inline void from_json(
const nlohmann::json& j,
guild& m)
93 if (j.count(
"id") && !j[
"id"].is_null())
95 if (j.count(
"name") && !j[
"name"].is_null())
96 m.
name = j[
"name"].get<std::string>();
97 if (j.count(
"icon") && !j[
"icon"].is_null())
98 m.
icon = j[
"icon"].get<std::string>();
99 if (j.count(
"splash") && !j[
"splash"].is_null())
100 m.
splash = j[
"splash"].get<std::string>();
101 if (j.count(
"owner_id") && !j[
"owner_id"].is_null())
103 if (j.count(
"region") && !j[
"region"].is_null())
104 m.
region = j[
"region"].get<std::string>();
105 if (j.count(
"afk_channel_id") && !j[
"afk_channel_id"].is_null())
107 if (j.count(
"afk_timeout") && !j[
"afk_timeout"].is_null())
109 if (j.count(
"embed_enabled") && !j[
"embed_enabled"].is_null())
111 if (j.count(
"embed_channel_id") && !j[
"embed_channel_id"].is_null())
113 if (j.count(
"verification_level") && !j[
"verification_level"].is_null())
115 if (j.count(
"default_message_notifications") && !j[
"default_message_notifications"].is_null())
117 if (j.count(
"mfa_level") && !j[
"mfa_level"].is_null())
119 if (j.count(
"joined_at") && !j[
"joined_at"].is_null())
120 m.
joined_at = j[
"joined_at"].get<std::string>();
121 if (j.count(
"large") && !j[
"large"].is_null())
122 m.
large = j[
"large"];
123 if (j.count(
"unavailable") && !j[
"unavailable"].is_null())
127 if (j.count(
"member_count") && !j[
"member_count"].is_null())
130 if (j.count(
"roles"))
131 for (
const auto & _role : j[
"roles"])
132 m.
roles.push_back(_role);
134 if (j.count(
"members"))
135 for (
const auto & _member : j[
"members"])
138 if (j.count(
"channels"))
139 for (
const auto & _channel : j[
"channels"])
142 if (j.count(
"presences"))
143 for (
const auto & _presence : j[
"presences"])
146 if (j.count(
"emojis"))
147 for (
const auto & _emoji : j[
"emojis"])
148 m.
emojis.push_back(_emoji);
150 if (j.count(
"voice_states"))
151 for (
const auto & _voicestate : j[
"voice_states"])
154 if (j.count(
"features"))
155 for (
const auto & _feature : j[
"features"])
159 inline void to_json(nlohmann::json& j,
const guild& m)
Stores creation time and extra data specific to Discord for entities.
Definition: snowflake.hpp:21
int8_t verification_level
Definition: guild.hpp:68
bool unavailable
Definition: guild.hpp:81
std::string name
Definition: guild.hpp:59
bool widget_enabled
Definition: guild.hpp:76
Class for performing actions pertaining to a specified guild.
Definition: guild.hpp:159
int8_t mfa_level
Definition: guild.hpp:74
Primary class for managing a bot interface.
Definition: core.hpp:157
snowflake id
Definition: guild.hpp:57
std::vector< objects::presence > presences
Definition: guild.hpp:86
int32_t member_count
Definition: guild.hpp:82
std::vector< objects::role > roles
Definition: guild.hpp:71
std::vector< std::string > features
Definition: guild.hpp:73
std::vector< objects::voice_state > voice_states
Definition: guild.hpp:83
snowflake afk_channel_id
Definition: guild.hpp:64
int8_t default_message_notifications
Definition: guild.hpp:69
snowflake embed_channel_id
Definition: guild.hpp:67
std::vector< objects::emoji > emojis
Definition: guild.hpp:72
std::vector< objects::channel > channels
Definition: guild.hpp:85
std::string region
Definition: guild.hpp:63
snowflake widget_channel_id
Definition: guild.hpp:77
int8_t explicit_content_filter
Definition: guild.hpp:70
snowflake guild_id
Definition: guild.hpp:58
std::string splash
Definition: guild.hpp:61
bool large
Definition: guild.hpp:80
snowflake owner_id
Definition: guild.hpp:62
int32_t afk_timeout
Definition: guild.hpp:65
std::vector< objects::guild_member > members
Definition: guild.hpp:84
std::string icon
Definition: guild.hpp:60
bool embed_enabled
Definition: guild.hpp:66
std::string joined_at
Definition: guild.hpp:79