Пример #1
0
        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());
        }
Пример #2
0
        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());
            }
        }