コード例 #1
0
        public static async Task <KuvuUser> GetKuvuUser(this DiscordUser user, KuvuGuild guild, BotContext botContext = null)
        {
            if (user.IsBot)
            {
                throw new BotKuvuUserException();
            }
            botContext ??= new BotContext();

            var kuvuUser =
                await botContext.Users.FirstOrDefaultAsync(g => g.DiscordUser == user.Id && g.Guild == guild);

            if (kuvuUser == null)
            {
                kuvuUser = new KuvuUser
                {
                    DiscordUser = user.Id,
                    Exp         = 0,
                    Guild       = guild
                };
                await botContext.Users.AddAsync(kuvuUser);

                await botContext.SaveChangesAsync();
            }

            return(kuvuUser);
        }
コード例 #2
0
ファイル: LeaderboardCommand.cs プロジェクト: kuvuBot/kuvuBot
        public async Task Leaderboard(CommandContext ctx)
        {
            var emojis = new Dictionary <int, string>
            {
                [1]  = ":first_place:",
                [2]  = ":second_place:",
                [3]  = ":third_place:",
                [4]  = ":four:",
                [5]  = ":five:",
                [6]  = ":six:",
                [7]  = ":seven:",
                [8]  = ":eight:",
                [9]  = ":nine:",
                [10] = ":keycap_ten:"
            };

            var botContext = new BotContext();

            var i     = 1;
            var users = botContext.Users.Where(u => u.Guild.GuildId == ctx.Guild.Id).OrderByDescending(u => u.Exp).Take(10).ToList();

            await new ModernEmbedBuilder
            {
                Title       = ":trophy: " + await ctx.Lang("leaderboard.title"),
                Description = (await users.SelectAsync(async u => $"**{emojis[i++]} {(await ctx.Guild.GetMemberAsync(u.DiscordUser)).Name(true)}** - level: {u.GetLevel()} ({u.Exp}/{KuvuUser.ConvertLevelToExp(u.GetLevel() + 1)} exp)")).Join("\n"),
                Url         = $"https://kuvubot.xyz/leaderboard/{ctx.Guild.Id}"
            }.AddGeneratedForFooter(ctx).Send(ctx.Message.Channel);
        }