using Maki.Structures.Channels;
using Maki.Structures.Messages;
using Maki.Structures.Presences;
using Maki.Structures.Roles;
using Newtonsoft.Json;
using System;
namespace Maki.Structures.Guilds
{
///
/// Discord API Guild structure
///
internal struct Guild
{
///
/// guild id
///
[JsonProperty("id")]
public ulong Id;
///
/// guild name (2-100 characters)
///
[JsonProperty("name")]
public string Name;
///
/// icon hash
///
[JsonProperty("icon")]
public string IconHash;
///
/// splash hash
///
[JsonProperty("splash")]
public string SplashHash;
///
/// id of owner
///
[JsonProperty("owner_id")]
public ulong? OwnerId;
///
/// the id of the voice region
///
[JsonProperty("region")]
public string VoiceRegionId;
///
/// id of afk channel
///
[JsonProperty("afk_channel_id")]
public ulong? AfkChannelId;
///
/// afk timeout in seconds
///
[JsonProperty("afk_timeout")]
public int? AfkTimeout;
///
/// is this guild embeddable (e.g. widget)
///
[JsonProperty("embed_enabled")]
public bool? WidgetEnabled;
///
/// id of embedded channel
///
[JsonProperty("embed_channel_id")]
public ulong? WidgetChannelId;
///
/// level of verification
///
[JsonProperty("verification_level")]
public int? VerificationLevel;
///
/// default message notifications level
///
[JsonProperty("default_message_notifications")]
public int? MessageNotificationLevel;
///
/// array of role objects
///
[JsonProperty("roles")]
public Role[] Roles;
///
/// array of emoji objects
///
[JsonProperty("emojis")]
public Emoji[] Emojis;
///
/// array of guild features
///
[JsonProperty("features")]
public string[] Features;
///
/// required MFA level for the guild
///
[JsonProperty("mfa_level")]
public int? MultiFactorAuthLevel;
///
/// date this guild was joined at
///
[JsonProperty("joined_at")]
public DateTime? Created;
///
/// whether this is considered a large guild
///
[JsonProperty("large")]
public bool? IsLarge;
///
/// is this guild unavailable
///
[JsonProperty("unavailable")]
public bool? IsUnavailable;
///
/// total number of members in this guild
///
[JsonProperty("member_count")]
public int? MemberCount;
///
/// array of voice state objects (without the guild_id key)
///
[JsonProperty("voice_states")]
public object[] VoiceStates;
///
/// array of guild member objects
///
[JsonProperty("members")]
public GuildMember[] Members;
///
/// array of channel objects
///
[JsonProperty("channels")]
public Channel[] Channels;
///
/// array of simple presence objects, which share the same fields as Presence Update event sans a roles or guild_id key
///
[JsonProperty("presences")]
public Presence[] Presences;
}
}