Exemple #1
0
            public async Task sil(CommandContext ctx, int miktar)
            {
                try
                {
                    await ctx.TriggerTypingAsync();

                    await ctx.Message.DeleteAsync();

                    DiscordChannel kanal = ctx.Channel;
                    int            sayi  = miktar;
                    do
                    {
                        List <DiscordMessage> messages = (await kanal.GetMessagesAsync(sayi > 100 ? 100 : sayi)).ToList();
                        await kanal.DeleteMessagesAsync(messages);

                        sayi -= 100;
                    } while (sayi >= 100);


                    DiscordMessage msg = await ctx.RespondAsync($"Son {miktar} Mesaj Başarı İle Silindi.");

                    await Task.Delay(TimeSpan.FromSeconds(3));

                    await msg.DeleteAsync();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("HATA : " + ex.Message);
                }
            }
        public static async Task DeleteAsync(this IEnumerable <DiscordMessage> messageCollection)
        {
            if (messageCollection is null)
            {
                throw new ArgumentNullException(nameof(messageCollection), "Cannot be null!");
            }

            DiscordChannel channel = messageCollection.First().Channel;
            await channel.DeleteMessagesAsync(messageCollection);
        }
Exemple #3
0
        private async Task CleanUp(DiscordChannel channel, DiscordMessage afterMessage)
        {
            var messages = await channel.GetMessagesAfterAsync(afterMessage.Id);

            if (messages.Count > 1)
            {
                await channel.DeleteMessagesAsync(messages);
            }

            await channel.DeleteMessageAsync(afterMessage);
        }
Exemple #4
0
        public async Task PruneAsync(ImmutableArray <DiscordMessage> messages, DiscordChannel channel, int baseAmount)
        {
            if (messages.Length <= 0)
            {
                throw new FoxException("Uh, I've found no messages to delete. Note that they must be newer than 2 weeks!");
            }

            await channel.DeleteMessagesAsync(messages);

            await SimpleEmbedAsync($"`{messages.Length}/{baseAmount}` messages have been deleted.");
        }
        public async Task CleanupAsync()
        {
            if (_messages.Count <= 0)
            {
                return;
            }

            if (_channel.Type == DSharpPlus.ChannelType.Text)
            {
                await _channel.DeleteMessagesAsync(_messages.Where(x => x != null));
            }
        }
Exemple #6
0
        /// <summary>
        /// Deletes all the responses in the specific channel
        /// </summary>
        /// <param name="channel"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public async Task DeleteAllResponseAsync(DiscordChannel channel, int count = 10)
        {
            //if (!(Redis is StackExchangeClient))
            //    throw new Exception("The redis client must be a StackExchangeClient to utlise the SCAN.");
            //
            //var key = Namespace.Combine(channel.Guild, "replies", "*");
            //var redis = Redis as StackExchangeClient;
            //var server = redis.GetServersEnumable().First();

            //IEnumerable<DiscordMessage> deletes = server.Keys(pattern: key)
            //                                        .Select(k => redis.FetchStringAsync(key, "ResponseMsg", "0").Result)
            //                                        .Select(str => ulong.TryParse(str, out var id) ? id : 0)
            //                                        .Select(id => { try { return channel.GetMessageAsync(id).Result; } catch { return null; } })
            //                                        .Where(msg => msg != null);

            var messages = await channel.GetMessagesAsync();

            await channel.DeleteMessagesAsync(messages.Where(m => m.Author.Id == Bot.Discord.CurrentUser.Id).Take(count), "Cleanup");
        }
Exemple #7
0
            public async Task Purge(CommandContext ctx, int amount = 100, DiscordChannel channel = null)
            {
                if (channel == null)
                {
                    channel = ctx.Channel;
                }

                var messages = await channel.GetMessagesBeforeAsync(ctx.Message.Id, amount);

                await channel.DeleteMessagesAsync(messages);

                if (ctx.Channel.Id == channel.Id)
                {
                    await ctx.Message.DeleteAsync();

                    return;
                }

                await ctx.RespondAsync("Channel cleared");
            }
Exemple #8
0
        private async Task WaitForCancellationAsync()
        {
            while (!_cts.IsCancellationRequested)
            {
                if (!Ready)
                {
                    await Task.Delay(TimeSpan.FromMilliseconds(500));

                    continue;
                }

                lock (_lockerObject)
                {
                    Task.Run(async() =>
                    {
                        while (Ready)
                        {
                            if (DateTime.Now >= _nextStatusCheck)
                            {
                                _nextStatusCheck = DateTime.Now + Program.Config.UpdateDelay;

                                try
                                {
                                    var request         = (HttpWebRequest)WebRequest.Create(Program.Config.StatusURL);
                                    request.ContentType = "application/json";
                                    request.Credentials = CredentialCache.DefaultCredentials;
                                    var res             = request.GetResponse();
                                    var serverList      = new List <ServerModel>();
                                    await using (var stream = res.GetResponseStream())
                                    {
                                        if (stream != null)
                                        {
                                            using var reader = new StreamReader(stream);
                                            var result       = await reader.ReadToEndAsync();
                                            serverList       = JsonConvert.DeserializeObject <List <ServerModel> >(result);
                                        }
                                    }

                                    res.Close();
                                    res.Dispose();
                                    foreach (var serverModel in serverList)
                                    {
                                        if (await Program.ServerStatusRepository.EntryExists(Convert.ToInt32(serverModel.Id)))
                                        {
                                            var model = await Program.ServerStatusRepository.FindById(
                                                Convert.ToInt32(serverModel.Id));
                                            model.CurrentStatus.EditTime  = DateTime.Now;
                                            model.CurrentStatus.Online    = serverModel.Online == "1";
                                            model.CurrentStatus.UserCount = Convert.ToInt32(serverModel.UserCount);
                                            model.History = new List <ServerEntryStatusHistory>
                                            {
                                                new ServerEntryStatusHistory
                                                {
                                                    EntryTime = DateTime.Now, Id = Guid.NewGuid(),
                                                    Online    = serverModel.Online == "1", ServerId = model.Id,
                                                    UserCount = model.CurrentStatus.UserCount
                                                }
                                            };
                                            await Program.ServerStatusRepository.UpdateCurrentStatusAsync(model);
                                        }
                                        else
                                        {
                                            var model = new ServerEntry
                                            {
                                                CurrentStatus = new ServerEntryStatus(),
                                                ExpRate       = serverModel.EXPRate,
                                                Id            = Guid.NewGuid(),
                                                RgbColor      = "rgb(0, 0, 0)",
                                                ServerId      = Convert.ToInt32(serverModel.Id),
                                                ServerName    = serverModel.Name,
                                                ServerType    = serverModel.Type
                                            };
                                            model.CurrentStatus.Id        = Guid.NewGuid();
                                            model.CurrentStatus.EditTime  = DateTime.Now;
                                            model.CurrentStatus.Online    = serverModel.Online == "1";
                                            model.CurrentStatus.UserCount = Convert.ToInt32(serverModel.UserCount);
                                            model.History = new List <ServerEntryStatusHistory>
                                            {
                                                new ServerEntryStatusHistory
                                                {
                                                    EntryTime = DateTime.Now, Id = Guid.NewGuid(),
                                                    Online    = serverModel.Online == "1", ServerId = model.Id,
                                                    UserCount = model.CurrentStatus.UserCount
                                                }
                                            };
                                            await _serverStatusRepository.AddServerAsync(model);
                                        }
                                    }
                                }
                                catch (Exception e)
                                {
                                    Program.Log(e);
                                }
                            }

                            if (DateTime.Now < _nextOutputTime)
                            {
                                await Task.Delay(500);
                                continue;
                            }

                            _nextOutputTime = DateTime.Now + Program.Config.OutputDelay;

                            try
                            {
                                var models = await _serverStatusRepository.GetAllAsync();
                                models     = models.OrderByDescending(a => a.CurrentStatus.Online)
                                             .ThenByDescending(a => a.CurrentStatus.UserCount != -1)
                                             .ThenByDescending(a => a.CurrentStatus.UserCount).ToList();
                                var temp = "```md\r\n";
                                foreach (var serverEntry in models)
                                {
                                    temp += Program.Config.OutputFormat
                                            .Replace("$SERVERNAME$", serverEntry.ServerName)
                                            .Replace("$STATUS$", serverEntry.CurrentStatus.Online ? "Online" : "Offline")
                                            .Replace("$USERCOUNT$", $"{serverEntry.CurrentStatus.UserCount}");
                                    if (!temp.EndsWith("\r\n"))
                                    {
                                        temp += "\r\n";
                                    }
                                }

                                temp += "```";
                                if (_lastMessage != null)
                                {
                                    await _channel.DeleteMessageAsync(_lastMessage);
                                }
                                else
                                {
                                    var currentMessages = await _channel.GetMessagesAsync();
                                    if (currentMessages != null)
                                    {
                                        await _channel.DeleteMessagesAsync(currentMessages);
                                    }
                                }

                                _lastMessage = await _channel.SendMessageAsync(temp);
                            }
                            catch (Exception e)
                            {
                                Program.Log(e);
                            }

                            await Task.Delay(500);
                        }
                    });
                }
                await Task.Delay(-1);
            }
        }
Exemple #9
0
 /// <summary>
 ///     Deletes a list of <see cref="DiscordMessage" /> from the <see cref="DiscordMember" /> in the
 ///     <see cref="DiscordChannel" />.
 /// </summary>
 /// <param name="channel">Represents the <see cref="DiscordChannel" />.</param>
 /// <param name="messages">Represents a list of <see cref="DiscordMessage" /> which will deleted.</param>
 /// <param name="member">
 ///     Represents the suspect <see cref="DiscordMember" /> which will all his
 ///     <see cref="DiscordMessage" />s
 /// </param>
 /// <param name="reason">Represents the reason why those <see cref="DiscordMessage" />s has been deleted.</param>
 /// <returns></returns>
 public static async Task BulkMessagesFromUserAsync(this DiscordChannel channel, IEnumerable <DiscordMessage> messages, DiscordMember member, string reason = null)
 {
     var memberMessage = messages.Where(x => x.Author == member)
                         .ToList();
     await channel.DeleteMessagesAsync(memberMessage, reason);
 }
Exemple #10
0
 /// <summary>
 ///     Deletes a list of <see cref="DiscordMessage" /> in the <see cref="DiscordChannel" />.
 /// </summary>
 /// <param name="channel">Represents the <see cref="DiscordChannel" />.</param>
 /// <param name="messages">Represents a list of <see cref="DiscordMessage" /> which will deleted.</param>
 /// <param name="reason">Represents the reason why those <see cref="DiscordMessage" />s has been deleted.</param>
 /// <returns></returns>
 public static async Task BulkMessagesAsync(this DiscordChannel channel, IEnumerable <DiscordMessage> messages, string reason = null)
 {
     await channel.DeleteMessagesAsync(messages, reason);
 }
Exemple #11
0
        public static async Task UpdateGuildRanking(DiscordGuild e)
        {
            DiscordChannel RankingChannel = RPClass.GuildRankingChannel;

            if (!RPClass.Guilds.Any())
            {
                try
                {
                    await RankingChannel.DeleteMessagesAsync(await RankingChannel.GetMessagesAsync(100));
                }
                catch {
                    var msgs = await RankingChannel.GetMessagesAsync(100);

                    foreach (var msg in msgs)
                    {
                        await msg.DeleteAsync();
                    }
                }
                return;
            }
            try
            {
                await RankingChannel.DeleteMessagesAsync(await RankingChannel.GetMessagesAsync(100));
            }
            catch {
                var msgs = await RankingChannel.GetMessagesAsync(100);

                foreach (var msg in msgs)
                {
                    await msg.DeleteAsync();
                }
            }
            List <string> tableStrings = new List <string>();
            int           positionMax  = 4;
            int           nameMax      = RPClass.Guilds.Max(x => x.Name.Length) + 2;
            int           fameMax      = 6;
            int           infamyMax    = 8;
            int           rankMax      = 6;

            if (nameMax < 6)
            {
                nameMax = 6;
            }

            string table = $"╔{new string('═', positionMax)}╤{new string('═', nameMax)}╤{new string('═', fameMax)}╤{new string('═', infamyMax)}╤{new string('═', rankMax)}╗\n";

            table += $"║{"Pos".PadRight(positionMax)}│{" Name".PadRight(nameMax)}│{" Fame".PadRight(fameMax)}│{" Infamy".PadRight(infamyMax)}│{" Rank".PadRight(rankMax)}║\n";
            table += $"╠{new string('═', positionMax)}╪{new string('═', nameMax)}╪{new string('═', fameMax)}╪{new string('═', infamyMax)}╪{new string('═', rankMax)}╣\n";


            List <GuildObject.RootObject> GuildsNew = new List <GuildObject.RootObject>();

            foreach (GuildObject.RootObject guild in RPClass.Guilds)
            {
                int xp     = 0;
                int fame   = 0;
                int infamy = 0;
                UserObject.RootObject user;
                if (guild.UserIDs.Count > 0)
                {
                    foreach (ulong num in guild.UserIDs)
                    {
                        user = RPClass.Users.FirstOrDefault(x => x.UserData.UserID == num);
                        if (user != null)
                        {
                            xp     += user.Xp;
                            fame   += user.UserData.Fame;
                            infamy += user.UserData.Infamy;
                        }
                    }
                    xp = (xp / guild.UserIDs.Count);
                    GuildsNew.Add(new GuildObject.RootObject(0, guild.Name, new List <ulong>()
                    {
                        (ulong)xp, (ulong)fame, (ulong)infamy
                    }));                                                                                                                   // xp, fame, infamy
                }
            }
            List <GuildObject.RootObject> SortedGuilds = GuildsNew.OrderByDescending(x => x.UserIDs[0]).ToList();

            int countNum = 1;

            foreach (GuildObject.RootObject guild in SortedGuilds)
            {
                ulong rank = guild.UserIDs[0];
                RPClass.Users.Where(x => x.UserData.GuildID == guild.Id);
                string GuildRank = "S1";
                if (rank < 10000)
                {
                    GuildRank = "S2";
                }
                if (rank < 9000)
                {
                    GuildRank = "S3";
                }
                if (rank < 8000)
                {
                    GuildRank = "A1";
                }
                if (rank < 7000)
                {
                    GuildRank = "A2";
                }
                if (rank < 6000)
                {
                    GuildRank = "A3";
                }
                if (rank < 5500)
                {
                    GuildRank = "B1";
                }
                if (rank < 5000)
                {
                    GuildRank = "B2";
                }
                if (rank < 4500)
                {
                    GuildRank = "B3";
                }
                if (rank < 4000)
                {
                    GuildRank = "C1";
                }
                if (rank < 3000)
                {
                    GuildRank = "C2";
                }
                if (rank < 2500)
                {
                    GuildRank = "C3";
                }
                if (rank < 2000)
                {
                    GuildRank = "D1";
                }
                if (rank < 1000)
                {
                    GuildRank = "D2";
                }
                if (rank < 500)
                {
                    GuildRank = "D3";
                }

                table += $"║{countNum.ToString().PadRight(positionMax)}│ {guild.Name.PadRight(nameMax - 1)}│ {guild.UserIDs[1].ToString().PadRight(fameMax - 1)}│ {guild.UserIDs[2].ToString().PadRight(infamyMax - 1)}│ {GuildRank.PadRight(rankMax - 1)}║\n";


                if (table.Length > 1500)
                {
                    table += $"╚{new string('═', positionMax)}╧{new string('═', nameMax)}╧{new string('═', fameMax)}╧{new string('═', infamyMax)}╧{new string('═', rankMax)}╝";
                    tableStrings.Add(table);
                    table = "";
                    if (guild != SortedGuilds.Last())
                    {
                        table = $"╔{new string('═', positionMax)}╤{new string('═', nameMax)}╤{new string('═', fameMax)}╤{new string('═', infamyMax)}╤{new string('═', rankMax)}╗\n";
                    }
                }

                countNum += 1;
            }

            if (table != "")
            {
                table += $"╚{new string('═', positionMax)}╧{new string('═', nameMax)}╧{new string('═', fameMax)}╧{new string('═', infamyMax)}╧{new string('═', rankMax)}╝";
                tableStrings.Add(table);
            }
            foreach (var tableString in tableStrings)
            {
                await RankingChannel.SendMessageAsync("```" + tableString + "```");
            }
        }
Exemple #12
0
        public static async Task UpdatePlayerRanking(DiscordGuild e, int type)
        {
            DiscordChannel RankingChannel = RPClass.HeroRankingChannel;

            if (type == 2)
            {
                RankingChannel = RPClass.VillainRankingChannel;
            }
            else if (type == 3)
            {
                RankingChannel = RPClass.RogueRankingChannel;
            }
            else if (type == 4)
            {
                RankingChannel = RPClass.AcademyRankingChannel;
            }

            if (!RPClass.Users.Where(x => x.UserData.Role == type && x.Xp > 0).Any())
            {
                try
                {
                    await RankingChannel.DeleteMessagesAsync(await RankingChannel.GetMessagesAsync(100));
                }
                catch {
                    var msgs = await RankingChannel.GetMessagesAsync(100);

                    foreach (var msg in msgs)
                    {
                        await msg.DeleteAsync();
                    }
                }
                return;
            }
            try
            {
                await RankingChannel.DeleteMessagesAsync(await RankingChannel.GetMessagesAsync(100));
            }
            catch {
                var msgs = await RankingChannel.GetMessagesAsync(100);

                foreach (var msg in msgs)
                {
                    await msg.DeleteAsync();
                }
            }
            List <UserObject.RootObject> SortedUsers = new List <UserObject.RootObject>();

            SortedUsers = RPClass.Users.Where(x => x.UserData.Role == type).OrderByDescending(x => (x.Xp)).ToList();
            int countNum  = 1;
            var tableData = new List <RankingRow>();

            foreach (UserObject.RootObject user in SortedUsers)
            {
                string userGuild = "";
                if (user.UserData.GuildID == 0)
                {
                    userGuild += "N/A";
                }
                else
                {
                    userGuild += RPClass.Guilds.First(x => x.Id == user.UserData.GuildID && x.UserIDs.Contains(user.UserData.UserID)).Name;
                }

                tableData.Add(new RankingRow(countNum.ToString(), user.UserData.Username, user.UserData.Fame.ToString(), user.UserData.Infamy.ToString(), userGuild, user.GetRank()));

                countNum += 1;
            }
            foreach (var table in CreateRankingTable(tableData))
            {
                await RankingChannel.SendMessageAsync("```" + table + "```");
            }
        }
Exemple #13
0
        // Non-Command Methods
        public static async Task UpdateStats(DiscordChannel c)
        {
            if (!RPClass.Users.Where(x => x.Xp > 0).Any())
            {
                try
                {
                    await c.DeleteMessagesAsync(await c.GetMessagesAsync(100));
                }
                catch {
                    var msgs = await c.GetMessagesAsync(100);

                    foreach (var msg in msgs)
                    {
                        await msg.DeleteAsync();
                    }
                }
                return;
            }
            try
            {
                await c.DeleteMessagesAsync(await c.GetMessagesAsync(100));
            }
            catch {
                var msgs = await c.GetMessagesAsync(100);

                foreach (var msg in msgs)
                {
                    await msg.DeleteAsync();
                }
            }

            int longestName = 1;

            if (RPClass.Users.Any())
            {
                longestName = RPClass.Users.Where(x => x.Xp > 0).Max(x => x.UserData.Username.Length) + 2;
            }
            int    longestXP = 7;
            var    tables    = new List <string>();
            string table     = $"╔{new string('═', longestName)}╤{new string('═', longestXP)}╗\n";

            table += $"║{" Name".PadRight(longestName)}│{" XP".PadRight(longestXP)}║\n";
            table += $"╠{new string('═', longestName)}╪{new string('═', longestXP)}╣\n";

            List <UserObject.RootObject> SortedUsers = new List <UserObject.RootObject>();

            SortedUsers = RPClass.Users.OrderByDescending(x => x.Xp).ToList();

            foreach (UserObject.RootObject user in SortedUsers)
            {
                if (user.Xp > 0)
                {
                    table += $"║ {user.UserData.Username.PadRight(longestName-1)}│ {user.Xp.ToString().PadRight(longestXP-1)}║\n";

                    if (table.Length > 1500)
                    {
                        table += $"╚{new string('═', longestName)}╧{new string('═', longestXP)}╝\n";
                        tables.Add(table);
                        table = "";
                        if (user != SortedUsers.Last())
                        {
                            table += $"╔{new string('═', longestName)}╤{new string('═', longestXP)}╗\n";
                        }
                    }
                }
            }

            if (table != "")
            {
                table += $"╚{new string('═', longestName)}╧{new string('═', longestXP)}╝\n";
                tables.Add(table);
            }
            foreach (var tableString in tables)
            {
                await c.SendMessageAsync("```" + tableString + "```");
            }
        }
Exemple #14
0
        public static async Task UpdateGuildRanking(DiscordGuild e)
        {
            if (!RPClass.Guilds.Any())
            {
                return;
            }
            DiscordChannel RankingChannel = RPClass.GuildChannel;
            int            longestCount   = 5;
            int            longestName    = 10;

            longestName = RPClass.Guilds.Max(x => x.Name.Length) + 1;

            string Count = "Pos".PadRight(longestCount) + "| ";
            string Name  = "Name".PadRight(longestName) + "| ";
            string Rank  = "Rank";
            string value = $"```{Count}{Name}{Rank}\n{new string('-', $"{Count}{Name}{Rank}".Length + 4)}\n";

            List <GuildObject.StatSheetObject> GuildsNew = new List <GuildObject.StatSheetObject>();

            foreach (var guild in RPClass.Guilds)
            {
                int xp = 0;
                foreach (var guildMember in RPClass.Users.Where(x => x.UserData.FactionID == guild.Id))
                {
                    if (guildMember != null)
                    {
                        xp += guildMember.UserData.Xp;
                    }
                }
                if (xp != 0)
                {
                    xp = (xp / RPClass.Users.Where(x => x.UserData.FactionID == guild.Id).Count());
                }
                GuildsNew.Add(new GuildObject.StatSheetObject(guild.Name, xp));
            }

            List <GuildObject.StatSheetObject> SortedGuilds = GuildsNew.OrderByDescending(x => x.Xp).ToList();

            try
            {
                await RankingChannel.DeleteMessagesAsync(await RankingChannel.GetMessagesAsync(100));
            }
            catch { }
            int countNum = 1;

            foreach (GuildObject.StatSheetObject guild in SortedGuilds)
            {
                int    rank      = guild.Xp;
                string GuildRank = "Tier 10";
                if (rank < 20000)
                {
                    GuildRank = "Tier 9";
                }
                if (rank < 17000)
                {
                    GuildRank = "Tier 8";
                }
                if (rank < 14000)
                {
                    GuildRank = "Tier 7";
                }
                if (rank < 11000)
                {
                    GuildRank = "Tier 6";
                }
                if (rank < 8000)
                {
                    GuildRank = "Tier 5";
                }
                if (rank < 6000)
                {
                    GuildRank = "Tier 4";
                }
                if (rank < 4000)
                {
                    GuildRank = "Tier 3";
                }
                if (rank < 2000)
                {
                    GuildRank = "Tier 2";
                }
                if (rank < 1000)
                {
                    GuildRank = "Tier 1";
                }

                if (value.Length > 1500)
                {
                    await RankingChannel.SendMessageAsync(value + "```");

                    value = "```";
                }

                value    += (countNum.ToString().PadRight(longestCount) + "| " + guild.Name.PadRight(longestName) + "| " + GuildRank + "\n");
                countNum += 1;
            }
            await RankingChannel.SendMessageAsync(value + "```");
        }
Exemple #15
0
        public static async Task UpdatePlayerRanking(DiscordGuild e)
        {
            var ocs = RPClass.Users.Where(x => x.UserData.Xp > 0);

            if (!ocs.Any())
            {
                return;
            }
            var members = await e.GetAllMembersAsync();

            DiscordChannel RankingChannel = RPClass.StatsChannel;

            int longestName = ocs.Max(x => members.First(y => y.Id == x.UserData.UserID).DisplayName.Length) + 1;

            if (longestName < 5)
            {
                longestName = 5;
            }
            int longestCount = 4;
            int longestGuild = RPClass.Guilds.Select(x => x.Name.Length).DefaultIfEmpty(7).Max() + 1;

            if (longestGuild < 8)
            {
                longestGuild = 8;
            }

            string Count   = "Pos".PadRight(longestCount) + "| ";
            string Name    = "Name".PadRight(longestName) + "| ";
            string Faction = "Faction".PadRight(longestGuild) + "| ";
            string Rank    = "Rank";
            string value   = "";

            value += $"```{Count}{Name}{Faction}{Rank}\n{new string('-', $"{Count}{Name}{Faction}{Rank}".Length + 4)}\n";
            List <UserObject.RootObject> SortedUsers = new List <UserObject.RootObject>();

            SortedUsers = ocs.OrderByDescending(x => (x.UserData.Xp)).ToList();
            try
            {
                await RankingChannel.DeleteMessagesAsync(await RankingChannel.GetMessagesAsync(100));
            }
            catch { }
            int countNum = 1;

            foreach (UserObject.RootObject user in SortedUsers)
            {
                string UserRank = user.UserData.GetRank();

                string UserFaction = "";
                if (user.UserData.FactionID == 0)
                {
                    UserFaction += "N/A";
                }
                else
                {
                    UserFaction += RPClass.Guilds.First(x => x.Id == user.UserData.FactionID).Name;
                }

                if (value.Length > 1500)
                {
                    await RankingChannel.SendMessageAsync(value + "```");

                    value = "```";
                }
                value    += (countNum.ToString().PadRight(longestCount) + "| " + members.First(y => y.Id == user.UserData.UserID).DisplayName.PadRight(longestName) + "| " + UserFaction.PadRight(longestGuild) + "| " + UserRank + "\n");
                countNum += 1;
            }
            await RankingChannel.SendMessageAsync(value + "```");
        }