示例#1
0
        public DiscordUser(SocketGuild guild, SocketGuildUser user, DBDiscordUser dbUser, List <UserUnverifyHistoryItem> unverifyHistory)
        {
            Guild  = guild;
            User   = user;
            ID     = dbUser.ID;
            Points = dbUser.Points;
            GivenReactionsCount    = dbUser.GivenReactionsCount;
            ObtainedReactionsCount = dbUser.ObtainedReactionsCount;
            WebAdminAccess         = !string.IsNullOrEmpty(dbUser.WebAdminPassword);
            ApiAccess = !string.IsNullOrEmpty(dbUser.ApiToken);
            Birthday  = dbUser.Birthday == null ? null : new UserBirthday(dbUser.Birthday);

            Channels = dbUser.Channels
                       .Select(o => new ChannelStatItem(guild.GetChannel(o.ChannelIDSnowflake), o))
                       .Where(o => o.Channel != null)
                       .OrderByDescending(o => o.Count)
                       .ToList();

            UnverifyHistory = unverifyHistory;
            MathAuditItems  = dbUser.MathAudit.Select(o => new MathAuditItem(o, guild)).ToList();

            if (dbUser.Statistics != null)
            {
                Statistics = new StatisticItem(dbUser.Statistics);
            }
        }
示例#2
0
        private async Task <DiscordUser> MapUserAsync(DBDiscordUser dbUser, List <UserUnverifyHistoryItem> unverifyHistory)
        {
            var guild = DiscordClient.GetGuild(dbUser.GuildIDSnowflake);

            if (guild == null)
            {
                return(null);
            }

            var socketUser = await guild.GetUserFromGuildAsync(dbUser.UserIDSnowflake);

            if (socketUser == null)
            {
                return(null);
            }

            return(new DiscordUser(guild, socketUser, dbUser, unverifyHistory));
        }
示例#3
0
        public static async Task <DiscordUser> CreateAsync(SocketGuild guild, SocketGuildUser user, DBDiscordUser dbUser, DiscordSocketClient discordClient,
                                                           RestApplication botAppInfo)
        {
            var result = new DiscordUser()
            {
                ApiAccess              = !string.IsNullOrEmpty(dbUser.ApiToken),
                Guild                  = guild,
                User                   = user,
                ID                     = dbUser.ID,
                Points                 = dbUser.Points,
                GivenReactionsCount    = dbUser.GivenReactionsCount,
                ObtainedReactionsCount = dbUser.ObtainedReactionsCount,
                WebAdminAccess         = !string.IsNullOrEmpty(dbUser.WebAdminPassword),
                Birthday               = dbUser.Birthday,
                ApiAccessCount         = dbUser.ApiAccessCount,
                WebAdminLoginCount     = dbUser.WebAdminLoginCount,
                Flags                  = dbUser.Flags,
                UnverifyEndsAt         = dbUser.Unverify?.EndDateTime,
                UnverifyImunityGroup   = dbUser.UnverifyImunityGroup
            };

            if (botAppInfo.Owner.Id == user.Id)
            {
                result.Flags |= (long)UserFlags.BotAdmin;
            }

            result.Channels = dbUser.Channels
                              .Select(o => new ChannelStatItem(guild.GetChannel(o.ChannelIDSnowflake), o))
                              .Where(o => o.Channel != null)
                              .OrderByDescending(o => o.Count)
                              .ThenByDescending(o => o.LastMessageAt)
                              .ToList();

            if (dbUser.UsedInvite != null)
            {
                SocketGuildUser inviteCreator = null;
                if (dbUser.UsedInvite.Creator != null)
                {
                    inviteCreator = await guild.GetUserFromGuildAsync(dbUser.UsedInvite.Creator.UserIDSnowflake);
                }

                result.UsedInvite = new InviteModel(dbUser.UsedInvite, inviteCreator);
            }
            else if (!string.IsNullOrEmpty(dbUser.UsedInviteCode))
            {
                result.UsedInvite = new InviteModel(dbUser.UsedInviteCode);
            }

            result.UnverifyHistory = dbUser.IncomingUnverifyOperations
                                     .Select(o => new UnverifyLogItem(o, discordClient))
                                     .OrderByDescending(o => o.DateTime)
                                     .ToList();

            result.GivenUnverifyHistory = dbUser.OutgoingUnverifyOperations
                                          .Select(o => new UnverifyLogItem(o, discordClient))
                                          .OrderByDescending(o => o.DateTime)
                                          .ToList();

            result.Reminders = new List <RemindItem>();
            foreach (var remind in dbUser.Reminders)
            {
                var fromUser = remind.FromUser != null ? await guild.GetUserFromGuildAsync(remind.FromUser.UserIDSnowflake) : null;

                result.Reminders.Add(new RemindItem(remind, fromUser));
            }

            result.CreatedInvites = dbUser.CreatedInvites.Select(o => new InviteModel(o, user, o.UsedUsers.Count)).ToList();

            return(result);
        }
示例#4
0
        public async Task <List <UserUnverifyHistoryItem> > GetUnverifyHistoryOfUserAsync(DBDiscordUser user)
        {
            var data = Repository.GetHistoryOfUser(user.GuildIDSnowflake, user.UserIDSnowflake);

            var result = new List <UserUnverifyHistoryItem>();

            foreach (var item in data)
            {
                var guild = DiscordClient.GetGuild(item.GuildIDSnowflake);

                var historyItem = new UserUnverifyHistoryItem(item)
                {
                    FromUser = (await guild.GetUserFromGuildAsync(item.FromUserIDSnowflake))?.GetFullName()
                };

                result.Add(historyItem);
            }

            return(result);
        }
示例#5
0
        public static async Task <DiscordUser> MapUserAsync(DiscordSocketClient discord, BotState state, DBDiscordUser dBUser)
        {
            var guild = discord.GetGuild(dBUser.GuildIDSnowflake);

            if (guild == null)
            {
                return(null);
            }

            var socketUser = await guild.GetUserFromGuildAsync(dBUser.UserIDSnowflake);

            if (socketUser == null)
            {
                return(null);
            }

            return(await DiscordUser.CreateAsync(guild, socketUser, dBUser, discord, state.AppInfo));
        }