예제 #1
0
        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()));
        }
예제 #2
0
        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()));
        }