internal static InviteUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var maxAgeModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_age"); var codeModel = changes.FirstOrDefault(x => x.ChangedProperty == "code"); var temporaryModel = changes.FirstOrDefault(x => x.ChangedProperty == "temporary"); var channelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "channel_id"); var maxUsesModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_uses"); int?oldMaxAge = maxAgeModel?.OldValue?.ToObject <int>(), newMaxAge = maxAgeModel?.NewValue?.ToObject <int>(); string oldCode = codeModel?.OldValue?.ToObject <string>(), newCode = codeModel?.NewValue?.ToObject <string>(); bool?oldTemporary = temporaryModel?.OldValue?.ToObject <bool>(), newTemporary = temporaryModel?.NewValue?.ToObject <bool>(); ulong?oldChannelId = channelIdModel?.OldValue?.ToObject <ulong>(), newChannelId = channelIdModel?.NewValue?.ToObject <ulong>(); int?oldMaxUses = maxUsesModel?.OldValue?.ToObject <int>(), newMaxUses = maxUsesModel?.NewValue?.ToObject <int>(); var before = new InviteInfo(oldMaxAge, oldCode, oldTemporary, oldChannelId, oldMaxUses); var after = new InviteInfo(newMaxAge, newCode, newTemporary, newChannelId, newMaxUses); return(new InviteUpdateAuditLogData(before, after)); }
internal static InviteDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var maxAgeModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_age"); var codeModel = changes.FirstOrDefault(x => x.ChangedProperty == "code"); var temporaryModel = changes.FirstOrDefault(x => x.ChangedProperty == "temporary"); var inviterIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "inviter_id"); var channelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "channel_id"); var usesModel = changes.FirstOrDefault(x => x.ChangedProperty == "uses"); var maxUsesModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_uses"); var maxAge = maxAgeModel.OldValue.ToObject <int>(); var code = codeModel.OldValue.ToObject <string>(); var temporary = temporaryModel.OldValue.ToObject <bool>(); var inviterId = inviterIdModel.OldValue.ToObject <ulong>(); var channelId = channelIdModel.OldValue.ToObject <ulong>(); var uses = usesModel.OldValue.ToObject <int>(); var maxUses = maxUsesModel.OldValue.ToObject <int>(); var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId); var inviter = RestUser.Create(discord, inviterInfo); return(new InviteDeleteAuditLogData(maxAge, code, temporary, inviter, channelId, uses, maxUses)); }
internal static ThreadDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var id = entry.TargetId.Value; var thread = log.Threads.FirstOrDefault(x => x.Id == id); var nameModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "name"); var typeModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "type"); var archivedModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "archived"); var autoArchiveDurationModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "auto_archive_duration"); var lockedModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "locked"); var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user"); var name = nameModel.OldValue.ToObject <string>(discord.ApiClient.Serializer); var type = typeModel.OldValue.ToObject <ThreadType>(discord.ApiClient.Serializer); var archived = archivedModel.OldValue.ToObject <bool>(discord.ApiClient.Serializer); var autoArchiveDuration = autoArchiveDurationModel.OldValue.ToObject <ThreadArchiveDuration>(discord.ApiClient.Serializer); var locked = lockedModel.OldValue.ToObject <bool>(discord.ApiClient.Serializer); var rateLimit = rateLimitPerUserModel?.NewValue?.ToObject <int>(discord.ApiClient.Serializer); return(new ThreadDeleteAuditLogData(id, name, type, archived, autoArchiveDuration, locked, rateLimit)); }
internal static RoleCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var colorModel = changes.FirstOrDefault(x => x.ChangedProperty == "color"); var mentionableModel = changes.FirstOrDefault(x => x.ChangedProperty == "mentionable"); var hoistModel = changes.FirstOrDefault(x => x.ChangedProperty == "hoist"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions"); uint? colorRaw = colorModel?.NewValue?.ToObject <uint>(); bool? mentionable = mentionableModel?.NewValue?.ToObject <bool>(); bool? hoist = hoistModel?.NewValue?.ToObject <bool>(); string name = nameModel?.NewValue?.ToObject <string>(); ulong? permissionsRaw = permissionsModel?.NewValue?.ToObject <ulong>(); Color? color = null; GuildPermissions?permissions = null; if (colorRaw.HasValue) { color = new Color(colorRaw.Value); } if (permissionsRaw.HasValue) { permissions = new GuildPermissions(permissionsRaw.Value); } return(new RoleCreateAuditLogData(entry.TargetId.Value, new RoleInfo(color, mentionable, hoist, name, permissions))); }
internal static ThreadUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var id = entry.TargetId.Value; var nameModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "name"); var typeModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "type"); var archivedModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "archived"); var autoArchiveDurationModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "auto_archive_duration"); var lockedModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "locked"); var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user"); var type = typeModel.OldValue.ToObject <ThreadType>(discord.ApiClient.Serializer); var oldName = nameModel.OldValue.ToObject <string>(discord.ApiClient.Serializer); var oldArchived = archivedModel.OldValue.ToObject <bool>(discord.ApiClient.Serializer); var oldAutoArchiveDuration = autoArchiveDurationModel.OldValue.ToObject <ThreadArchiveDuration>(discord.ApiClient.Serializer); var oldLocked = lockedModel.OldValue.ToObject <bool>(discord.ApiClient.Serializer); var oldRateLimit = rateLimitPerUserModel?.OldValue?.ToObject <int>(discord.ApiClient.Serializer); var before = new ThreadInfo(oldName, oldArchived, oldAutoArchiveDuration, oldLocked, oldRateLimit); var newName = nameModel.NewValue.ToObject <string>(discord.ApiClient.Serializer); var newArchived = archivedModel.NewValue.ToObject <bool>(discord.ApiClient.Serializer); var newAutoArchiveDuration = autoArchiveDurationModel.NewValue.ToObject <ThreadArchiveDuration>(discord.ApiClient.Serializer); var newLocked = lockedModel.NewValue.ToObject <bool>(discord.ApiClient.Serializer); var newRateLimit = rateLimitPerUserModel?.NewValue?.ToObject <int>(discord.ApiClient.Serializer); var after = new ThreadInfo(newName, newArchived, newAutoArchiveDuration, newLocked, newRateLimit); var threadInfo = log.Threads.FirstOrDefault(x => x.Id == id); var threadChannel = threadInfo == null ? null : RestThreadChannel.Create(discord, (IGuild)null, threadInfo); return(new ThreadUpdateAuditLogData(threadChannel, type, before, after)); }
internal static ChannelCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var overwrites = new List <Overwrite>(); var overwritesModel = changes.FirstOrDefault(x => x.ChangedProperty == "permission_overwrites"); var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user"); var nsfwModel = changes.FirstOrDefault(x => x.ChangedProperty == "nsfw"); var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate"); var type = typeModel.NewValue.ToObject <ChannelType>(discord.ApiClient.Serializer); var name = nameModel.NewValue.ToObject <string>(discord.ApiClient.Serializer); int? rateLimitPerUser = rateLimitPerUserModel?.NewValue?.ToObject <int>(discord.ApiClient.Serializer); bool?nsfw = nsfwModel?.NewValue?.ToObject <bool>(discord.ApiClient.Serializer); int? bitrate = bitrateModel?.NewValue?.ToObject <int>(discord.ApiClient.Serializer); foreach (var overwrite in overwritesModel.NewValue) { var deny = overwrite["deny"].ToObject <ulong>(discord.ApiClient.Serializer); var permType = overwrite["type"].ToObject <PermissionTarget>(discord.ApiClient.Serializer); var id = overwrite["id"].ToObject <ulong>(discord.ApiClient.Serializer); var allow = overwrite["allow"].ToObject <ulong>(discord.ApiClient.Serializer); overwrites.Add(new Overwrite(id, permType, new OverwritePermissions(allow, deny))); } return(new ChannelCreateAuditLogData(entry.TargetId.Value, name, type, rateLimitPerUser, nsfw, bitrate, overwrites.ToReadOnlyCollection())); }
internal static ChannelUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var topicModel = changes.FirstOrDefault(x => x.ChangedProperty == "topic"); var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user"); var nsfwModel = changes.FirstOrDefault(x => x.ChangedProperty == "nsfw"); var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate"); string oldName = nameModel?.OldValue?.ToObject <string>(discord.ApiClient.Serializer), newName = nameModel?.NewValue?.ToObject <string>(discord.ApiClient.Serializer); string oldTopic = topicModel?.OldValue?.ToObject <string>(discord.ApiClient.Serializer), newTopic = topicModel?.NewValue?.ToObject <string>(discord.ApiClient.Serializer); int?oldRateLimitPerUser = rateLimitPerUserModel?.OldValue?.ToObject <int>(discord.ApiClient.Serializer), newRateLimitPerUser = rateLimitPerUserModel?.NewValue?.ToObject <int>(discord.ApiClient.Serializer); bool?oldNsfw = nsfwModel?.OldValue?.ToObject <bool>(discord.ApiClient.Serializer), newNsfw = nsfwModel?.NewValue?.ToObject <bool>(discord.ApiClient.Serializer); int?oldBitrate = bitrateModel?.OldValue?.ToObject <int>(discord.ApiClient.Serializer), newBitrate = bitrateModel?.NewValue?.ToObject <int>(discord.ApiClient.Serializer); var before = new ChannelInfo(oldName, oldTopic, oldRateLimitPerUser, oldNsfw, oldBitrate); var after = new ChannelInfo(newName, newTopic, newRateLimitPerUser, newNsfw, newBitrate); return(new ChannelUpdateAuditLogData(entry.TargetId.Value, before, after)); }
internal static ChannelCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var overwrites = new List <Overwrite>(); var overwritesModel = changes.FirstOrDefault(x => x.ChangedProperty == "permission_overwrites"); var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var type = typeModel.NewValue.ToObject <ChannelType>(); var name = nameModel.NewValue.ToObject <string>(); foreach (var overwrite in overwritesModel.NewValue) { var deny = overwrite.Value <ulong>("deny"); var _type = overwrite.Value <string>("type"); var id = overwrite.Value <ulong>("id"); var allow = overwrite.Value <ulong>("allow"); PermissionTarget permType = _type == "member" ? PermissionTarget.User : PermissionTarget.Role; overwrites.Add(new Overwrite(id, permType, new OverwritePermissions(allow, deny))); } return(new ChannelCreateAuditLogData(entry.TargetId.Value, name, type, overwrites.ToReadOnlyCollection())); }
internal static MemberUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var nickModel = changes.FirstOrDefault(x => x.ChangedProperty == "nick"); var deafModel = changes.FirstOrDefault(x => x.ChangedProperty == "deaf"); var muteModel = changes.FirstOrDefault(x => x.ChangedProperty == "mute"); var avatarModel = changes.FirstOrDefault(x => x.ChangedProperty == "avatar_hash"); string oldNick = nickModel?.OldValue?.ToObject <string>(discord.ApiClient.Serializer), newNick = nickModel?.NewValue?.ToObject <string>(discord.ApiClient.Serializer); bool?oldDeaf = deafModel?.OldValue?.ToObject <bool>(discord.ApiClient.Serializer), newDeaf = deafModel?.NewValue?.ToObject <bool>(discord.ApiClient.Serializer); bool?oldMute = muteModel?.OldValue?.ToObject <bool>(discord.ApiClient.Serializer), newMute = muteModel?.NewValue?.ToObject <bool>(discord.ApiClient.Serializer); string oldAvatar = avatarModel?.OldValue?.ToObject <string>(discord.ApiClient.Serializer), newAvatar = avatarModel?.NewValue?.ToObject <string>(discord.ApiClient.Serializer); var targetInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var user = RestUser.Create(discord, targetInfo); var before = new MemberInfo(oldNick, oldDeaf, oldMute, oldAvatar); var after = new MemberInfo(newNick, newDeaf, newMute, newAvatar); return(new MemberUpdateAuditLogData(user, before, after)); }
private RestAuditLogEntry(BaseDiscordClient discord, Model fullLog, EntryModel model, IUser user) : base(discord, model.Id) { Action = model.Action; Data = AuditLogHelper.CreateData(discord, fullLog, model); User = user; Reason = model.Reason; }
internal static EmoteCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var change = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "name"); var emoteName = change.NewValue?.ToObject <string>(); return(new EmoteCreateAuditLogData(entry.TargetId.Value, emoteName)); }
public static IAuditLogData CreateData(BaseDiscordClient discord, Model log, EntryModel entry) { if (CreateMapping.TryGetValue(entry.Action, out var func)) { return(func(discord, log, entry)); } return(null); }
internal static EmoteUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var change = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "name"); var newName = change.NewValue?.ToObject <string>(discord.ApiClient.Serializer); var oldName = change.OldValue?.ToObject <string>(discord.ApiClient.Serializer); return(new EmoteUpdateAuditLogData(entry.TargetId.Value, oldName, newName)); }
internal static MessageUnpinAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { RestUser user = null; if (entry.TargetId.HasValue) { var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); user = RestUser.Create(discord, userInfo); } return(new MessageUnpinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, user)); }
internal static MemberUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "nick"); var newNick = changes.NewValue?.ToObject <string>(); var oldNick = changes.OldValue?.ToObject <string>(); var targetInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var user = RestUser.Create(discord, targetInfo); return(new MemberUpdateAuditLogData(user, newNick, oldNick)); }
internal static RestAuditLogEntry Create(BaseDiscordClient discord, Model fullLog, EntryModel model) { var userInfo = fullLog.Users.FirstOrDefault(x => x.Id == model.UserId); IUser user = null; if (userInfo != null) { user = RestUser.Create(discord, userInfo); } return(new RestAuditLogEntry(discord, fullLog, model, user)); }
internal static MemberRoleAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var roleInfos = changes.SelectMany(x => x.NewValue.ToObject <API.Role[]>(discord.ApiClient.Serializer), (model, role) => new { model.ChangedProperty, Role = role }) .Select(x => new MemberRoleEditInfo(x.Role.Name, x.Role.Id, x.ChangedProperty == "$add")) .ToList(); var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); RestUser user = (userInfo != null) ? RestUser.Create(discord, userInfo) : null; return(new MemberRoleAuditLogData(roleInfos.ToReadOnlyCollection(), user)); }
internal static RoleUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var colorModel = changes.FirstOrDefault(x => x.ChangedProperty == "color"); var mentionableModel = changes.FirstOrDefault(x => x.ChangedProperty == "mentionable"); var hoistModel = changes.FirstOrDefault(x => x.ChangedProperty == "hoist"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions"); uint?oldColorRaw = colorModel?.OldValue?.ToObject <uint>(), newColorRaw = colorModel?.NewValue?.ToObject <uint>(); bool?oldMentionable = mentionableModel?.OldValue?.ToObject <bool>(), newMentionable = mentionableModel?.NewValue?.ToObject <bool>(); bool?oldHoist = hoistModel?.OldValue?.ToObject <bool>(), newHoist = hoistModel?.NewValue?.ToObject <bool>(); string oldName = nameModel?.OldValue?.ToObject <string>(), newName = nameModel?.NewValue?.ToObject <string>(); ulong?oldPermissionsRaw = permissionsModel?.OldValue?.ToObject <ulong>(), newPermissionsRaw = permissionsModel?.OldValue?.ToObject <ulong>(); Color?oldColor = null, newColor = null; GuildPermissions?oldPermissions = null, newPermissions = null; if (oldColorRaw.HasValue) { oldColor = new Color(oldColorRaw.Value); } if (newColorRaw.HasValue) { newColor = new Color(newColorRaw.Value); } if (oldPermissionsRaw.HasValue) { oldPermissions = new GuildPermissions(oldPermissionsRaw.Value); } if (newPermissionsRaw.HasValue) { newPermissions = new GuildPermissions(newPermissionsRaw.Value); } var oldProps = new RoleEditInfo(oldColor, oldMentionable, oldHoist, oldName, oldPermissions); var newProps = new RoleEditInfo(newColor, newMentionable, newHoist, newName, newPermissions); return(new RoleUpdateAuditLogData(entry.TargetId.Value, oldProps, newProps)); }
internal static WebhookDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var channelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "channel_id"); var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var avatarHashModel = changes.FirstOrDefault(x => x.ChangedProperty == "avatar_hash"); var channelId = channelIdModel.OldValue.ToObject <ulong>(discord.ApiClient.Serializer); var type = typeModel.OldValue.ToObject <WebhookType>(discord.ApiClient.Serializer); var name = nameModel.OldValue.ToObject <string>(discord.ApiClient.Serializer); var avatarHash = avatarHashModel?.OldValue?.ToObject <string>(discord.ApiClient.Serializer); return(new WebhookDeleteAuditLogData(entry.TargetId.Value, channelId, type, name, avatarHash)); }
internal static WebhookCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var channelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "channel_id"); var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var channelId = channelIdModel.NewValue.ToObject <ulong>(discord.ApiClient.Serializer); var type = typeModel.NewValue.ToObject <WebhookType>(discord.ApiClient.Serializer); var name = nameModel.NewValue.ToObject <string>(discord.ApiClient.Serializer); var webhookInfo = log.Webhooks?.FirstOrDefault(x => x.Id == entry.TargetId); var webhook = RestWebhook.Create(discord, (IGuild)null, webhookInfo); return(new WebhookCreateAuditLogData(webhook, type, name, channelId)); }
internal static ChannelDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var overwritesModel = changes.FirstOrDefault(x => x.ChangedProperty == "permission_overwrites"); var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var overwrites = overwritesModel.OldValue.ToObject <API.Overwrite[]>() .Select(x => new Overwrite(x.TargetId, x.TargetType, new OverwritePermissions(x.Allow, x.Deny))) .ToList(); var type = typeModel.OldValue.ToObject <ChannelType>(); var name = nameModel.OldValue.ToObject <string>(); var id = entry.TargetId.Value; return(new ChannelDeleteAuditLogData(id, name, type, overwrites.ToReadOnlyCollection())); }
internal static ChannelDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var overwritesModel = changes.FirstOrDefault(x => x.ChangedProperty == "permission_overwrites"); var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user"); var nsfwModel = changes.FirstOrDefault(x => x.ChangedProperty == "nsfw"); var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate"); var overwrites = overwritesModel.OldValue.ToObject <API.Overwrite[]>(discord.ApiClient.Serializer) .Select(x => new Overwrite(x.TargetId, x.TargetType, new OverwritePermissions(x.Allow, x.Deny))) .ToList(); var type = typeModel.OldValue.ToObject <ChannelType>(discord.ApiClient.Serializer); var name = nameModel.OldValue.ToObject <string>(discord.ApiClient.Serializer); int? rateLimitPerUser = rateLimitPerUserModel?.OldValue?.ToObject <int>(discord.ApiClient.Serializer); bool?nsfw = nsfwModel?.OldValue?.ToObject <bool>(discord.ApiClient.Serializer); int? bitrate = bitrateModel?.OldValue?.ToObject <int>(discord.ApiClient.Serializer); var id = entry.TargetId.Value; return(new ChannelDeleteAuditLogData(id, name, type, rateLimitPerUser, nsfw, bitrate, overwrites.ToReadOnlyCollection())); }
internal static ChannelUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var topicModel = changes.FirstOrDefault(x => x.ChangedProperty == "topic"); var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate"); var userLimitModel = changes.FirstOrDefault(x => x.ChangedProperty == "user_limit"); string oldName = nameModel?.OldValue?.ToObject <string>(), newName = nameModel?.NewValue?.ToObject <string>(); string oldTopic = topicModel?.OldValue?.ToObject <string>(), newTopic = topicModel?.NewValue?.ToObject <string>(); int?oldBitrate = bitrateModel?.OldValue?.ToObject <int>(), newBitrate = bitrateModel?.NewValue?.ToObject <int>(); int?oldLimit = userLimitModel?.OldValue?.ToObject <int>(), newLimit = userLimitModel?.NewValue?.ToObject <int>(); var before = new ChannelInfo(oldName, oldTopic, oldBitrate, oldLimit); var after = new ChannelInfo(newName, newTopic, newBitrate, newLimit); return(new ChannelUpdateAuditLogData(entry.TargetId.Value, before, after)); }
internal static WebhookUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); var channelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "channel_id"); var avatarHashModel = changes.FirstOrDefault(x => x.ChangedProperty == "avatar_hash"); var oldName = nameModel?.OldValue?.ToObject <string>(); var oldChannelId = channelIdModel?.OldValue?.ToObject <ulong>(); var oldAvatar = avatarHashModel?.OldValue?.ToObject <string>(); var before = new WebhookInfo(oldName, oldChannelId, oldAvatar); var newName = nameModel?.NewValue?.ToObject <string>(); var newChannelId = channelIdModel?.NewValue?.ToObject <ulong>(); var newAvatar = avatarHashModel?.NewValue?.ToObject <string>(); var after = new WebhookInfo(newName, newChannelId, newAvatar); var webhookInfo = log.Webhooks?.FirstOrDefault(x => x.Id == entry.TargetId); var webhook = RestWebhook.Create(discord, (IGuild)null, webhookInfo); return(new WebhookUpdateAuditLogData(webhook, before, after)); }
internal static KickAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); return(new KickAuditLogData(RestUser.Create(discord, userInfo))); }
internal static OverwriteDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var denyModel = changes.FirstOrDefault(x => x.ChangedProperty == "deny"); var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); var idModel = changes.FirstOrDefault(x => x.ChangedProperty == "id"); var allowModel = changes.FirstOrDefault(x => x.ChangedProperty == "allow"); var deny = denyModel.OldValue.ToObject <ulong>(discord.ApiClient.Serializer); var type = typeModel.OldValue.ToObject <PermissionTarget>(discord.ApiClient.Serializer); var id = idModel.OldValue.ToObject <ulong>(discord.ApiClient.Serializer); var allow = allowModel.OldValue.ToObject <ulong>(discord.ApiClient.Serializer); return(new OverwriteDeleteAuditLogData(entry.TargetId.Value, new Overwrite(id, type, new OverwritePermissions(allow, deny)))); }
internal static OverwriteCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var denyModel = changes.FirstOrDefault(x => x.ChangedProperty == "deny"); var allowModel = changes.FirstOrDefault(x => x.ChangedProperty == "allow"); var deny = denyModel.NewValue.ToObject <ulong>(); var allow = allowModel.NewValue.ToObject <ulong>(); var permissions = new OverwritePermissions(allow, deny); var id = entry.Options.OverwriteTargetId.Value; var type = entry.Options.OverwriteType; PermissionTarget target = type == "member" ? PermissionTarget.User : PermissionTarget.Role; return(new OverwriteCreateAuditLogData(new Overwrite(id, target, permissions))); }
internal static MessageDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); return(new MessageDeleteAuditLogData(entry.Options.ChannelId.Value, entry.Options.Count.Value, userInfo != null ? RestUser.Create(discord, userInfo) : null)); }
internal static MessageBulkDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { return(new MessageBulkDeleteAuditLogData(entry.TargetId.Value, entry.Options.Count.Value)); }
internal static GuildUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { var changes = entry.Changes; var afkTimeoutModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); var defaultMessageNotificationsModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); var afkChannelModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); var regionIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); var iconHashModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); var verificationLevelModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); var ownerIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); var mfaLevelModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); var contentFilterModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); int?oldAfkTimeout = afkTimeoutModel?.OldValue?.ToObject <int>(discord.ApiClient.Serializer), newAfkTimeout = afkTimeoutModel?.NewValue?.ToObject <int>(discord.ApiClient.Serializer); DefaultMessageNotifications?oldDefaultMessageNotifications = defaultMessageNotificationsModel?.OldValue?.ToObject <DefaultMessageNotifications>(discord.ApiClient.Serializer), newDefaultMessageNotifications = defaultMessageNotificationsModel?.NewValue?.ToObject <DefaultMessageNotifications>(discord.ApiClient.Serializer); ulong?oldAfkChannelId = afkChannelModel?.OldValue?.ToObject <ulong>(discord.ApiClient.Serializer), newAfkChannelId = afkChannelModel?.NewValue?.ToObject <ulong>(discord.ApiClient.Serializer); string oldName = nameModel?.OldValue?.ToObject <string>(discord.ApiClient.Serializer), newName = nameModel?.NewValue?.ToObject <string>(discord.ApiClient.Serializer); string oldRegionId = regionIdModel?.OldValue?.ToObject <string>(discord.ApiClient.Serializer), newRegionId = regionIdModel?.NewValue?.ToObject <string>(discord.ApiClient.Serializer); string oldIconHash = iconHashModel?.OldValue?.ToObject <string>(discord.ApiClient.Serializer), newIconHash = iconHashModel?.NewValue?.ToObject <string>(discord.ApiClient.Serializer); VerificationLevel?oldVerificationLevel = verificationLevelModel?.OldValue?.ToObject <VerificationLevel>(discord.ApiClient.Serializer), newVerificationLevel = verificationLevelModel?.NewValue?.ToObject <VerificationLevel>(discord.ApiClient.Serializer); ulong?oldOwnerId = ownerIdModel?.OldValue?.ToObject <ulong>(discord.ApiClient.Serializer), newOwnerId = ownerIdModel?.NewValue?.ToObject <ulong>(discord.ApiClient.Serializer); MfaLevel?oldMfaLevel = mfaLevelModel?.OldValue?.ToObject <MfaLevel>(discord.ApiClient.Serializer), newMfaLevel = mfaLevelModel?.NewValue?.ToObject <MfaLevel>(discord.ApiClient.Serializer); int?oldContentFilter = contentFilterModel?.OldValue?.ToObject <int>(discord.ApiClient.Serializer), newContentFilter = contentFilterModel?.NewValue?.ToObject <int>(discord.ApiClient.Serializer); IUser oldOwner = null; if (oldOwnerId != null) { var oldOwnerInfo = log.Users.FirstOrDefault(x => x.Id == oldOwnerId.Value); oldOwner = RestUser.Create(discord, oldOwnerInfo); } IUser newOwner = null; if (newOwnerId != null) { var newOwnerInfo = log.Users.FirstOrDefault(x => x.Id == newOwnerId.Value); newOwner = RestUser.Create(discord, newOwnerInfo); } var before = new GuildInfo(oldAfkTimeout, oldDefaultMessageNotifications, oldAfkChannelId, oldName, oldRegionId, oldIconHash, oldVerificationLevel, oldOwner, oldMfaLevel, oldContentFilter); var after = new GuildInfo(newAfkTimeout, newDefaultMessageNotifications, newAfkChannelId, newName, newRegionId, newIconHash, newVerificationLevel, newOwner, newMfaLevel, newContentFilter); return(new GuildUpdateAuditLogData(before, after)); }