public Task ProfileAsync(SocketGuildUser User = null) { User = User ?? Context.User as SocketGuildUser; var Servers = Context.Session.Query <GuildModel>().Customize(x => x.WaitForNonStaleResults()).ToList(); var Profiles = Servers.Select(x => x.Profiles.Where(y => y.Key == User.Id)); var Starboard = Servers.Select(x => x.Starboard.StarboardMessages.Where(y => y.AuthorId == User.Id)); var GuildProfile = Context.GuildHelper.GetProfile(Context.Guild.Id, User.Id); var Commands = GuildProfile.Commands.OrderByDescending(x => x.Value); string FavCommand = !GuildProfile.Commands.Any() ? $"None {Emotes.Squint}" : $"{Commands.FirstOrDefault().Key} ({Commands.FirstOrDefault().Value} times)"; var Blacklisted = GuildProfile.IsBlacklisted ? Emotes.ThumbUp : Emotes.ThumbDown; int TotalXp = Profiles.Sum(x => x.Sum(y => y.Value.ChatXP)); var Embed = GetEmbed(Paint.Magenta) .WithAuthor($"👾 {User.Username} Profile", User.GetAvatarUrl()) .WithThumbnailUrl(User.GetAvatarUrl()) .AddField("Server Stats", $"**Level:** {IntHelper.GetLevel(GuildProfile.ChatXP)}\n" + $"**Stars:** {Context.Server.Starboard.StarboardMessages.Where(x => x.AuthorId == User.Id).Sum(x => x.Stars)}\n" + $"**Crystals:** {GuildProfile.Crystals}\n", true) .AddField("Global Stats", $"**XP:** {TotalXp}\n" + $"**Stars:** {Starboard.Sum(x => x.Sum(y => y.Stars))}\n" + $"**Crystals:** {Profiles.Sum(x => x.Sum(y => y.Value.Crystals))}\n", true) .AddField("\u200B", "\u200B", true) .AddField("\u200B", "\u200B", true) .AddField("Blacklisted?", Blacklisted, true) .AddField("Favorite Command", FavCommand, true); return(ReplyAsync(string.Empty, Embed.Build())); }
public Task RankAsync(SocketGuildUser User = null) { User = User ?? Context.User as SocketGuildUser; var Profile = Context.GuildHelper.GetProfile(Context.Guild.Id, User.Id); return(ReplyAsync(string.Empty, GetEmbed(Paint.Yellow) .WithAuthor($"{User.Username}'s Server Rank", User.GetAvatarUrl()) .WithThumbnailUrl(User.GetAvatarUrl()) .AddField("Rank", $" {IntHelper.GetGuildRank(Context, User.Id)} / {Context.Server.Profiles.Count}", true) .AddField("Level", IntHelper.GetLevel(Profile.ChatXP), true) .AddField("Current XP", $"{Profile.ChatXP} XP", true) .AddField("Next Level XP", IntHelper.NextLevelXP(IntHelper.GetLevel(Profile.ChatXP)), true).Build())); }