public async Task LevelAsync([Remainder] string Arg = "") { IGuildUser User = Tools.ParseUser(Arg, false, Context); if (User == null) { if (Arg.Length == 0) { User = Context.User as IGuildUser; } else { await Context.Channel.SendMessageAsync(GetEntry("UserNotFound")); return; } } Leveling.User usr = Global.Level.Users.GetUser(User.Id); bool Edited = false; if (!usr.GuildLevels.ContainsKey(Context.Guild.Id)) { usr.GuildLevels.Add(Context.Guild.Id, 0); Edited = true; } if (!usr.GuildXps.ContainsKey(Context.Guild.Id)) { usr.GuildXps.Add(Context.Guild.Id, 0); Edited = true; } if (Edited) { Global.Level.Users.UpdateUser(usr); } EmbedBuilder Builder = new EmbedBuilder() { Color = Color.DarkPurple, Author = new EmbedAuthorBuilder() { Name = GetEntry("LevelOf", "USERNAME", User.Nickname ?? User.Username), IconUrl = User.GetAvatarUrl() }, Description = GetEntry("LevelDescription", "LEVEL", usr.GuildLevels[Context.Guild.Id].ToString("N0"), "CURRENTXP", usr.GuildXps[Context.Guild.Id].ToString("N0"), "NEXTLEVELXP", Global.Level.Levels[(int)usr.GuildLevels[Context.Guild.Id]].ToString("N0")) }; await Context.Channel.SendMessageAsync("", embed : Builder.Build()); }
public async Task TopAsync(int Top = 10) { if (Top < 1 || Top > 20) { await Context.Channel.SendMessageAsync(GetEntry("OutOfRange")); } else { List <Leveling.User> Users = new List <Leveling.User>(); foreach (KeyValuePair <ulong, Leveling.User> User in Global.Level.Users) { if (User.Value.GuildXps.ContainsKey(Context.Guild.Id)) { Users.Add(User.Value); } } Users = Users.OrderByDescending(t => t.GuildXps[Context.Guild.Id]).ToList(); string Description = ""; int Min = Math.Min(Top, Users.Count); for (int i = 0; i < Min; i++) { Leveling.User User = Users[i]; IGuildUser gUser = await Context.Guild.GetUserAsync(User.UserId); string Name = ""; if (gUser == null) { Name = GetEntry("UnknownUser"); Min++; } else { Name = gUser.Nickname; if (Name != null) { Name += $" ({ gUser.Username })"; } else { Name = gUser.Username; } } Description += $"#{ i + 1 } - { Name }: lvl { User.GuildLevels[Context.Guild.Id] } ({ User.GuildXps[Context.Guild.Id] } xp)\r\n"; } if (Top > Min) { Description += GetEntry("OutOfUsers"); } EmbedBuilder Builder = new EmbedBuilder() { Author = new EmbedAuthorBuilder() { Name = GetEntry("TopOf", "X", Min.ToString(), "SERVERNAME", Context.Guild.Name), IconUrl = Context.Guild.IconUrl }, Description = Description, Color = Color.DarkPurple }; await Context.Channel.SendMessageAsync("", embed : Builder.Build()); } }