internal DiscordGuildMember(DiscordHttpClient http, DiscordApiData data, Snowflake guildId) // We do not specify the base constructor here because the member ID must be // manually retrieved, as it is actually the user ID rather than a unique one. { this.http = http; GuildId = guildId; Nickname = data.GetString("nick"); JoinedAt = data.GetDateTime("joined_at").Value; IsDeaf = data.GetBoolean("deaf") ?? false; IsMute = data.GetBoolean("mute") ?? false; IList <DiscordApiData> rolesArray = data.GetArray("roles"); Snowflake[] roleIds = new Snowflake[rolesArray.Count]; for (int i = 0; i < rolesArray.Count; i++) { roleIds[i] = rolesArray[i].ToSnowflake().Value; } RoleIds = roleIds; DiscordApiData userData = data.Get("user"); User = new DiscordUser(false, userData); Id = User.Id; }
internal DiscordIntegration(DiscordHttpClient http, DiscordApiData data) : base(data) { this.http = http; Name = data.GetString("name"); Type = data.GetString("type"); IsEnabled = data.GetBoolean("enabled"); IsSyncing = data.GetBoolean("syncing"); ExpireBehavior = data.GetInteger("expire_behavior"); ExpireGracePeriod = data.GetInteger("expire_grace_period"); SyncedAt = data.GetDateTime("synced_at"); RoleId = data.GetSnowflake("role_id"); DiscordApiData userData = data.Get("user"); if (userData != null) { User = new DiscordUser(false, userData); } DiscordApiData accountData = data.Get("account"); if (accountData != null) { Account = new DiscordIntegrationAccount(accountData); } }
internal DiscordGuildStoreChannel(DiscordHttpClient http, DiscordApiData data, Snowflake?guildId = null) : base(http, data, DiscordChannelType.GuildStore, guildId) { this.http = http; Nsfw = data.GetBoolean("nsfw") ?? false; ParentId = data.GetSnowflake("parent_id"); }
internal DiscordInviteMetadata(DiscordHttpClient http, DiscordApiData data) : base(http, data) { DiscordApiData inviterData = data.Get("inviter"); if (inviterData != null) { Inviter = new DiscordUser(false, inviterData); } Uses = data.GetInteger("uses").Value; MaxUses = data.GetInteger("max_uses").Value; MaxAge = data.GetInteger("max_age").Value; IsTemporary = data.GetBoolean("temporary").Value; CreatedAt = data.GetDateTime("created_at").Value; IsRevoked = data.GetBoolean("revoked") ?? false; }
internal DiscordGuildEmbed(DiscordHttpClient http, Snowflake guildId, DiscordApiData data) { this.http = http; GuildId = guildId; Enabled = data.GetBoolean("enabled").Value; ChannelId = data.GetSnowflake("channel_id").Value; }
internal DiscordUser(bool isWebhookUser, DiscordApiData data) : base(data) { IsWebhookUser = isWebhookUser; Username = data.GetString("username"); Discriminator = data.GetString("discriminator"); IsBot = data.GetBoolean("bot") ?? false; HasTwoFactorAuth = data.GetBoolean("mfa_enabled") ?? false; IsVerified = data.GetBoolean("verified") ?? false; Email = data.GetString("email"); string avatarHash = data.GetString("avatar"); if (avatarHash != null) { Avatar = DiscordCdnUrl.ForUserAvatar(Id, avatarHash); } }
internal DiscordEmoji(DiscordApiData data) : base(data) { Name = data.GetString("name"); UserId = data.LocateSnowflake("user.id"); RequireColons = data.GetBoolean("require_colons") ?? false; IsManaged = data.GetBoolean("managed") ?? false; IsAnimated = data.GetBoolean("animated") ?? false; IList <DiscordApiData> roles = data.GetArray("roles"); Snowflake[] roleIds = new Snowflake[roles.Count]; for (int i = 0; i < roleIds.Length; i++) { roleIds[i] = (roles[i].ToSnowflake().Value); } RoleIds = roleIds; }
internal DiscordGuildNewsChannel(DiscordHttpClient http, DiscordApiData data, Snowflake?guildId = null) : base(http, data, DiscordChannelType.GuildNews, guildId) { this.http = http; Topic = data.GetString("topic"); Nsfw = data.GetBoolean("nsfw") ?? false; ParentId = data.GetSnowflake("parent_id"); lastMessageId = data.GetSnowflake("last_message_id") ?? default(Snowflake); }
internal DiscordGame(DiscordApiData data) { Name = data.GetString("name"); Type = (DiscordGameType)(data.GetInteger("type") ?? 0); Url = data.GetString("url"); CreatedAt = data.GetInt64("created_at"); ApplicationId = data.GetSnowflake("application_id"); Details = data.GetString("details"); State = data.GetString("state"); Instance = data.GetBoolean("instance"); Flags = (DiscordActivityFlag)(data.GetInteger("flags") ?? 0); DiscordApiData timestampsData = data.Get("timestamps"); if (timestampsData != null) { Timestamps = new DiscordActivityTimestamps(timestampsData); } DiscordApiData emojiData = data.Get("emoji"); if (emojiData != null) { Emoji = new DiscordActivityEmoji(emojiData); } DiscordApiData partyData = data.Get("party"); if (partyData != null) { Party = new DiscordActivityParty(partyData); } DiscordApiData assetsData = data.Get("assets"); if (assetsData != null) { Assets = new DiscordActivityAssets(assetsData); } DiscordApiData secretsData = data.Get("secrets"); if (secretsData != null) { Secrets = new DiscordActivitySecrets(secretsData); } IList <DiscordApiData> buttonsArray = data.GetArray("buttons"); if (buttonsArray != null) { Buttons = buttonsArray.Select(d => d.ToString()).ToArray(); } }
internal DiscordMessageMember(DiscordApiData data) { Nickname = data.GetString("nick"); JoinedAt = data.GetDateTime("joined_at").Value; IsDeaf = data.GetBoolean("deaf") ?? false; IsMute = data.GetBoolean("mute") ?? false; IList <DiscordApiData> rolesArray = data.GetArray("roles"); if (rolesArray != null) { Snowflake[] roleIds = new Snowflake[rolesArray.Count]; for (int i = 0; i < rolesArray.Count; i++) { roleIds[i] = rolesArray[i].ToSnowflake().Value; } RoleIds = roleIds; } }
internal DiscordRole(DiscordHttpClient http, Snowflake guildId, DiscordApiData data) : base(data) { this.http = http; GuildId = guildId; Name = data.GetString("name"); IsHoisted = data.GetBoolean("hoist").Value; Position = data.GetInteger("position").Value; IsManaged = data.GetBoolean("managed").Value; IsMentionable = data.GetBoolean("mentionable").Value; int color = data.GetInteger("color").Value; Color = DiscordColor.FromHexadecimal(color); long permissions = data.GetInt64("permissions").Value; Permissions = (DiscordPermission)permissions; }
internal DiscordMessage(DiscordHttpClient http, DiscordApiData data) : base(data) { this.http = http; originalData = data; Content = data.GetString("content"); Timestamp = data.GetDateTime("timestamp").GetValueOrDefault(); EditedTimestamp = data.GetDateTime("edited_timestamp").GetValueOrDefault(); TextToSpeech = data.GetBoolean("tts").GetValueOrDefault(); MentionEveryone = data.GetBoolean("mention_everyone").GetValueOrDefault(); Nonce = data.GetSnowflake("nonce"); IsPinned = data.GetBoolean("pinned").GetValueOrDefault(); ChannelId = data.GetSnowflake("channel_id").GetValueOrDefault(); WebhookId = data.GetSnowflake("webhook_id"); Type = (DiscordMessageType)(data.GetInteger("type") ?? 0); Flags = (DiscordMessageFlags)(data.GetInteger("flags") ?? 0); // Get author DiscordApiData authorData = data.Get("author"); if (authorData != null) { Author = new DiscordUser(WebhookId.HasValue, authorData); } // Get member DiscordApiData memberData = data.Get("member"); if (memberData != null) { Member = new DiscordMessageMember(memberData); } // Get activity DiscordApiData activityData = data.Get("activity"); if (activityData != null) { Activity = new DiscordMessageActivity(activityData); } // Get application DiscordApiData applicationData = data.Get("application"); if (applicationData != null) { Application = new DiscordMessageApplication(applicationData); } // Get reference DiscordApiData messageReferenceData = data.Get("message_reference"); if (messageReferenceData != null) { MessageReference = new DiscordMessageReference(messageReferenceData); } // Get mentions IList <DiscordApiData> mentionsArray = data.GetArray("mentions"); if (mentionsArray != null) { DiscordUser[] mentions = new DiscordUser[mentionsArray.Count]; for (int i = 0; i < mentionsArray.Count; i++) { mentions[i] = new DiscordUser(false, mentionsArray[i]); } Mentions = mentions; } // Get mentioned roles IList <DiscordApiData> mentionRolesArray = data.GetArray("mention_roles"); if (mentionRolesArray != null) { Snowflake[] mentionedRoles = new Snowflake[mentionRolesArray.Count]; for (int i = 0; i < mentionRolesArray.Count; i++) { mentionedRoles[i] = mentionRolesArray[i].ToSnowflake().Value; } MentionedRoleIds = mentionedRoles; } // Get channel mentions IList <DiscordApiData> channelMentionsArray = data.GetArray("mention_channels"); if (channelMentionsArray != null) { DiscordChannelMention[] mentions = new DiscordChannelMention[channelMentionsArray.Count]; for (int i = 0; i < channelMentionsArray.Count; i++) { mentions[i] = new DiscordChannelMention(channelMentionsArray[i]); } MentionedChannels = mentions; } // Get attachments IList <DiscordApiData> attachmentsArray = data.GetArray("attachments"); if (attachmentsArray != null) { DiscordAttachment[] attachments = new DiscordAttachment[attachmentsArray.Count]; for (int i = 0; i < attachmentsArray.Count; i++) { attachments[i] = new DiscordAttachment(attachmentsArray[i]); } Attachments = attachments; } // Get embeds IList <DiscordApiData> embedsArray = data.GetArray("embeds"); if (embedsArray != null) { DiscordEmbed[] embeds = new DiscordEmbed[embedsArray.Count]; for (int i = 0; i < embedsArray.Count; i++) { embeds[i] = new DiscordEmbed(embedsArray[i]); } Embeds = embeds; } // Get reactions IList <DiscordApiData> reactionsArray = data.GetArray("reactions"); if (reactionsArray != null) { DiscordReaction[] reactions = new DiscordReaction[reactionsArray.Count]; for (int i = 0; i < reactionsArray.Count; i++) { reactions[i] = new DiscordReaction(reactionsArray[i]); } Reactions = reactions; } }
internal DiscordGuild(DiscordHttpClient http, DiscordApiData data) : base(data) { this.http = http; Name = data.GetString("name"); RegionId = data.GetString("region"); AfkTimeout = data.GetInteger("afk_timeout").Value; IsEmbedEnabled = data.GetBoolean("embed_enabled") ?? false; OwnerId = data.GetSnowflake("owner_id").Value; AfkChannelId = data.GetSnowflake("afk_channel_id"); EmbedChannelId = data.GetSnowflake("embed_channel_id"); ApplicationId = data.GetSnowflake("application_id"); IsWidgetEnabled = data.GetBoolean("widget_enabled") ?? false; WidgetChannelId = data.GetSnowflake("widget_channel_id"); SystemChannelId = data.GetSnowflake("system_channel_id"); ExplicitContentFilter = (GuildExplicitContentFilterLevel)data.GetInteger("explicit_content_filter").Value; VerificationLevel = (GuildVerificationLevel)data.GetInteger("verification_level").Value; DefaultMessageNotifications = (GuildNotificationOption)(data.GetInteger("default_message_notifications") ?? 0); MfaLevel = (GuildMfaLevel)data.GetInteger("mfa_level").Value; // Get image hashes string iconHash = data.GetString("icon"); if (iconHash != null) { Icon = DiscordCdnUrl.ForGuildIcon(Id, iconHash); } string splashHash = data.GetString("splash"); if (splashHash != null) { Splash = DiscordCdnUrl.ForGuildSplash(Id, splashHash); } // Get features IList <DiscordApiData> featuresData = data.GetArray("features"); string[] features = new string[featuresData.Count]; for (int i = 0; i < features.Length; i++) { features[i] = featuresData[i].ToString(); } Features = features; // Get roles IList <DiscordApiData> rolesData = data.GetArray("roles"); Dictionary <Snowflake, DiscordRole> roles = new Dictionary <Snowflake, DiscordRole>(); for (int i = 0; i < rolesData.Count; i++) { DiscordRole role = new DiscordRole(http, Id, rolesData[i]); roles.Add(role.Id, role); } Roles = roles; // Get emojis IList <DiscordApiData> emojisArray = data.GetArray("emojis"); Dictionary <Snowflake, DiscordEmoji> emojis = new Dictionary <Snowflake, DiscordEmoji>(); for (int i = 0; i < emojisArray.Count; i++) { DiscordEmoji emoji = new DiscordEmoji(emojisArray[i]); emojis.Add(emoji.Id, emoji); } Emojis = emojis; }