示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }
示例#4
0
        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)));
        }
示例#5
0
        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));
        }
示例#6
0
        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()));
        }
示例#7
0
        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()));
        }
示例#9
0
        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));
        }
示例#10
0
 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;
 }
示例#11
0
        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));
        }
示例#12
0
        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));
        }
示例#16
0
        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));
        }
示例#21
0
        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()));
        }
示例#23
0
        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));
        }
示例#24
0
        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));
        }
示例#25
0
        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))));
        }
示例#27
0
        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));
 }
示例#30
0
        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));
        }