internal RestAuditLogGuildMetadata(RestDiscordClient client, AuditLogModel auditLogModel, AuditLogEntryModel model) : base(client) { for (var i = 0; i < model.Changes.Length; i++) { var change = model.Changes[i]; switch (change.Key) { case "name": { Name = new AuditLogValue <string>(change); break; } case "icon_hash": { IconHash = new AuditLogValue <string>(change); break; } case "splash_hash": { SplashHash = new AuditLogValue <string>(change); break; } case "owner_id": { OwnerId = new AuditLogValue <ulong>(change); var ownerBeforeModel = Array.Find(auditLogModel.Users, x => x.Id == OwnerId.OldValue); var ownerAfterModel = Array.Find(auditLogModel.Users, x => x.Id == OwnerId.NewValue); Owner = new AuditLogValue <RestUser>( ownerBeforeModel != null ? new RestUser(client, ownerBeforeModel) : Optional <RestUser> .Empty, ownerAfterModel != null ? new RestUser(client, ownerAfterModel) : Optional <RestUser> .Empty); break; } case "region": { VoiceRegionId = new AuditLogValue <string>(change); break; } case "afk_channel_id": { AfkChannelId = new AuditLogValue <ulong?>(change); break; } case "afk_timeout": { AfkTimeout = new AuditLogValue <int>(change); break; } case "mfa_level": { MfaLevel = new AuditLogValue <MfaLevel>(change); break; } case "verification_level": { VerificationLevel = new AuditLogValue <VerificationLevel>(change); break; } case "explicit_content_filter": { ContentFilterLevel = new AuditLogValue <ContentFilterLevel>(change); break; } case "default_message_notifications": { DefaultNotificationLevel = new AuditLogValue <DefaultNotificationLevel>(change); break; } case "vanity_url_code": { VanityUrlCode = new AuditLogValue <string>(change); break; } case "widget_enabled": { IsWidgetEnabled = new AuditLogValue <bool>(change); break; } case "widget_channel_id": { WidgetChannelId = new AuditLogValue <ulong?>(change); break; } case "system_channel_id": { SystemChannelId = new AuditLogValue <ulong?>(change); break; } } } }
internal RestAuditLogChannelMetadata(RestDiscordClient client, AuditLogModel auditLogModel, AuditLogEntryModel model) : base(client) { ChannelId = model.TargetId; for (var i = 0; i < model.Changes.Length; i++) { var change = model.Changes[i]; switch (change.Key) { case "name": { Name = new AuditLogValue <string>(change); break; } case "topic": { Topic = new AuditLogValue <string>(change); break; } case "bitrate": { Bitrate = new AuditLogValue <int>(change); break; } case "permission_overwrites": { var overwritesBefore = Optional <IReadOnlyList <RestOverwrite> > .Empty; if (change.OldValue.HasValue) { var models = client.Serializer.ToObject <OverwriteModel[]>(change.OldValue.Value); overwritesBefore = models.Select(x => new RestOverwrite(client, x, ChannelId)).ToImmutableArray(); } var overwritesAfter = Optional <IReadOnlyList <RestOverwrite> > .Empty; if (change.NewValue.HasValue) { var models = client.Serializer.ToObject <OverwriteModel[]>(change.NewValue.Value); overwritesAfter = models.Select(x => new RestOverwrite(client, x, ChannelId)).ToImmutableArray(); } Overwrites = new AuditLogValue <IReadOnlyList <RestOverwrite> >(overwritesBefore, overwritesAfter); break; } case "nsfw": { IsNsfw = new AuditLogValue <bool>(change); break; } case "rate_limit_per_user": { Slowmode = new AuditLogValue <int>(change); break; } case "type": { ChannelType = client.Serializer.ToObject <AuditLogChannelType>(change.OldValue.HasValue ? change.OldValue.Value : change.NewValue.Value); break; } } } }