/// <inheritdoc />
        internal override async Task OnLoginAsync(TokenType tokenType, string token)
        {
            API.UserJson user = await ApiClient.GetMyUserAsync(new RequestOptions { RetryMode = RetryMode.AlwaysRetry }).ConfigureAwait(false);

            ApiClient.CurrentUserId = user.Id;
            base.CurrentUser        = RestSelfUser.Create(this, user);
        }
        internal static InviteDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
        {
            API.AuditLogChangeJson[] changes = entry.Changes;

            API.AuditLogChangeJson maxAgeModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_age");
            API.AuditLogChangeJson codeModel = changes.FirstOrDefault(x => x.ChangedProperty == "code");
            API.AuditLogChangeJson temporaryModel = changes.FirstOrDefault(x => x.ChangedProperty == "temporary");
            API.AuditLogChangeJson inviterIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "inviter_id");
            API.AuditLogChangeJson channelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "channel_id");
            API.AuditLogChangeJson usesModel = changes.FirstOrDefault(x => x.ChangedProperty == "uses");
            API.AuditLogChangeJson maxUsesModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_uses");

            int maxAge = maxAgeModel.OldValue.ToObject<int>(discord.ApiClient.Serializer);
            string code = codeModel.OldValue.ToObject<string>(discord.ApiClient.Serializer);
            bool temporary = temporaryModel.OldValue.ToObject<bool>(discord.ApiClient.Serializer);
            ulong channelId = channelIdModel.OldValue.ToObject<ulong>(discord.ApiClient.Serializer);
            int uses = usesModel.OldValue.ToObject<int>(discord.ApiClient.Serializer);
            int maxUses = maxUsesModel.OldValue.ToObject<int>(discord.ApiClient.Serializer);

            RestUser inviter = null;
            if (inviterIdModel != null)
            {
                ulong inviterId = inviterIdModel.OldValue.ToObject<ulong>(discord.ApiClient.Serializer);
                API.UserJson inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId);
                inviter = RestUser.Create(discord, inviterInfo);
            }

            return new InviteDeleteAuditLogData(maxAge, code, temporary, inviter, channelId, uses, maxUses);
        }
Example #3
0
        public static async Task <RestUser> GetUserAsync(BaseDiscordClient client,
                                                         ulong id, RequestOptions options)
        {
            API.UserJson model = await client.ApiClient.GetUserAsync(id, options).ConfigureAwait(false);

            if (model != null)
            {
                return(RestUser.Create(client, model));
            }
            return(null);
        }
Example #4
0
        internal static MessagePinAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
        {
            RestUser user = null;

            if (entry.TargetId.HasValue)
            {
                API.UserJson userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
                user = RestUser.Create(discord, userInfo);
            }

            return(new MessagePinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, user));
        }
Example #5
0
        internal static RestAuditLogEntry Create(BaseDiscordClient discord, Model fullLog, EntryModel model)
        {
            API.UserJson userInfo = model.UserId != null?fullLog.Users.FirstOrDefault(x => x.Id == model.UserId) : null;

            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)
        {
            API.AuditLogChangeJson[] changes = entry.Changes;

            List <MemberRoleEditInfo> roleInfos = changes.SelectMany(x => x.NewValue.ToObject <API.RoleJson[]>(discord.ApiClient.Serializer),
                                                                     (model, role) => new { model.ChangedProperty, Role = role })
                                                  .Select(x => new MemberRoleEditInfo(x.Role.Name, x.Role.Id, x.ChangedProperty == "$add"))
                                                  .ToList();

            API.UserJson userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
            RestUser     user     = RestUser.Create(discord, userInfo);

            return(new MemberRoleAuditLogData(roleInfos.ToReadOnlyCollection(), user));
        }
        internal static MemberUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
        {
            API.AuditLogChangeJson[] changes = entry.Changes;

            API.AuditLogChangeJson nickModel = changes.FirstOrDefault(x => x.ChangedProperty == "nick");
            API.AuditLogChangeJson deafModel = changes.FirstOrDefault(x => x.ChangedProperty == "deaf");
            API.AuditLogChangeJson muteModel = changes.FirstOrDefault(x => x.ChangedProperty == "mute");

            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);

            API.UserJson targetInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
            RestUser     user       = RestUser.Create(discord, targetInfo);

            MemberInfo before = new MemberInfo(oldNick, oldDeaf, oldMute);
            MemberInfo after  = new MemberInfo(newNick, newDeaf, newMute);

            return(new MemberUpdateAuditLogData(user, before, after));
        }
Example #8
0
 internal static BanAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
 {
     API.UserJson userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
     return(new BanAuditLogData(RestUser.Create(discord, userInfo)));
 }
        internal static GuildUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
        {
            API.AuditLogChangeJson[] changes = entry.Changes;

            API.AuditLogChangeJson afkTimeoutModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout");
            API.AuditLogChangeJson defaultMessageNotificationsModel = changes.FirstOrDefault(x => x.ChangedProperty == "default_message_notifications");
            API.AuditLogChangeJson afkChannelModel        = changes.FirstOrDefault(x => x.ChangedProperty == "afk_channel_id");
            API.AuditLogChangeJson nameModel              = changes.FirstOrDefault(x => x.ChangedProperty == "name");
            API.AuditLogChangeJson regionIdModel          = changes.FirstOrDefault(x => x.ChangedProperty == "region");
            API.AuditLogChangeJson iconHashModel          = changes.FirstOrDefault(x => x.ChangedProperty == "icon_hash");
            API.AuditLogChangeJson verificationLevelModel = changes.FirstOrDefault(x => x.ChangedProperty == "verification_level");
            API.AuditLogChangeJson ownerIdModel           = changes.FirstOrDefault(x => x.ChangedProperty == "owner_id");
            API.AuditLogChangeJson mfaLevelModel          = changes.FirstOrDefault(x => x.ChangedProperty == "mfa_level");
            API.AuditLogChangeJson contentFilterModel     = changes.FirstOrDefault(x => x.ChangedProperty == "explicit_content_filter");
            API.AuditLogChangeJson systemChannelIdModel   = changes.FirstOrDefault(x => x.ChangedProperty == "system_channel_id");
            API.AuditLogChangeJson widgetChannelIdModel   = changes.FirstOrDefault(x => x.ChangedProperty == "widget_channel_id");
            API.AuditLogChangeJson widgetEnabledModel     = changes.FirstOrDefault(x => x.ChangedProperty == "widget_enabled");

            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);
            ExplicitContentFilterLevel?oldContentFilter = contentFilterModel?.OldValue?.ToObject <ExplicitContentFilterLevel>(discord.ApiClient.Serializer),
                                      newContentFilter  = contentFilterModel?.NewValue?.ToObject <ExplicitContentFilterLevel>(discord.ApiClient.Serializer);
            ulong?oldSystemChannelId = systemChannelIdModel?.OldValue?.ToObject <ulong>(discord.ApiClient.Serializer),
                 newSystemChannelId  = systemChannelIdModel?.NewValue?.ToObject <ulong>(discord.ApiClient.Serializer);
            ulong?oldWidgetChannelId = widgetChannelIdModel?.OldValue?.ToObject <ulong>(discord.ApiClient.Serializer),
                 newWidgetChannelId  = widgetChannelIdModel?.NewValue?.ToObject <ulong>(discord.ApiClient.Serializer);
            bool?oldWidgetEnabled    = widgetEnabledModel?.OldValue?.ToObject <bool>(discord.ApiClient.Serializer),
                newWidgetEnabled     = widgetEnabledModel?.NewValue?.ToObject <bool>(discord.ApiClient.Serializer);

            IUser oldOwner = null;

            if (oldOwnerId != null)
            {
                API.UserJson oldOwnerInfo = log.Users.FirstOrDefault(x => x.Id == oldOwnerId.Value);
                oldOwner = RestUser.Create(discord, oldOwnerInfo);
            }

            IUser newOwner = null;

            if (newOwnerId != null)
            {
                API.UserJson newOwnerInfo = log.Users.FirstOrDefault(x => x.Id == newOwnerId.Value);
                newOwner = RestUser.Create(discord, newOwnerInfo);
            }

            GuildInfo before = new GuildInfo(oldAfkTimeout, oldDefaultMessageNotifications,
                                             oldAfkChannelId, oldName, oldRegionId, oldIconHash, oldVerificationLevel, oldOwner,
                                             oldMfaLevel, oldContentFilter, oldSystemChannelId, oldWidgetChannelId, oldWidgetEnabled);
            GuildInfo after = new GuildInfo(newAfkTimeout, newDefaultMessageNotifications,
                                            newAfkChannelId, newName, newRegionId, newIconHash, newVerificationLevel, newOwner,
                                            newMfaLevel, newContentFilter, newSystemChannelId, newWidgetChannelId, newWidgetEnabled);

            return(new GuildUpdateAuditLogData(before, after));
        }
Example #10
0
 internal static MessageDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
 {
     API.UserJson userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
     return(new MessageDeleteAuditLogData(entry.Options.ChannelId.Value, entry.Options.Count.Value, RestUser.Create(discord, userInfo)));
 }