コード例 #1
0
        public async Task RPLock(CommandContext e, [Description("Member to be muted")] DiscordMember user)
        {
            try
            {
                UserObject.RootObject userObject = RPClass.Users.First(x => x.UserData.UserID == user.Id);

                if (userObject.ModData.IsMuted == 2)
                {
                    userObject.ModData.IsMuted = 0;
                    await user.ReplaceRolesAsync(userObject.ModData.Roles);

                    await e.RespondAsync("User un rp-locked.");
                }
                else if (userObject.ModData.IsMuted == 1)
                {
                    await e.RespondAsync("Fail: user is muted.");

                    return;
                }
                else
                {
                    userObject.ModData.IsMuted = 2;
                    userObject.ModData.Roles   = user.Roles.ToList();
                    await user.ReplaceRolesAsync(new List <DiscordRole>() { RPClass.RPLockRole });

                    await e.RespondAsync("User rplocked.");
                }
                RPClass.SaveData(1);
            }
            catch
            {
                await e.RespondAsync("NO");
            }
        }
コード例 #2
0
        public async Task Bulk(CommandContext e)
        {
            await e.RespondAsync("Change stats by typing `<mention> <xp amount>.\nTo end this process and save, type `stop`.");

            var interactivity = e.Client.GetInteractivity();

AnotherMessage:

            var msg = await interactivity.WaitForMessageAsync(x => x.Author == e.Member, TimeSpan.FromSeconds(120));

            if (msg != null)
            {
                if (msg.Message.Content == "stop")
                {
                    await UpdateStats(RPClass.StatsChannel);

                    RPClass.SaveData(1);
                    await UpdatePlayerRanking(e.Guild, 1);
                    await UpdatePlayerRanking(e.Guild, 2);
                    await UpdatePlayerRanking(e.Guild, 3);
                    await UpdatePlayerRanking(e.Guild, 4);

                    await e.RespondAsync("Stats updated.");
                }
                else
                {
                    try
                    {
                        string[]      args   = msg.Message.Content.Split(" ");
                        DiscordMember member = await e.CommandsNext.ConvertArgument(args[0], e, typeof(DiscordMember)) as DiscordMember;

                        UserObject.RootObject userData = RPClass.Users.Find(x => x.UserData.UserID == member.Id);
                        userData.Xp += int.Parse(args[1]);
                        if (userData.Xp < 0)
                        {
                            userData.Xp = 0;
                        }
                        await e.RespondAsync("Stat changed. \nSend another, by typing `-<mention> <xp amount>`.\nTo end this process, type `stop`.");
                    }
                    catch
                    {
                        await e.RespondAsync("No user found, or xp was in invalid format.");
                    }
                    goto AnotherMessage;
                }
            }
            else
            {
                await UpdateStats(RPClass.StatsChannel);

                RPClass.SaveData(1);
                await UpdatePlayerRanking(e.Guild, 1);
                await UpdatePlayerRanking(e.Guild, 2);
                await UpdatePlayerRanking(e.Guild, 3);
                await UpdatePlayerRanking(e.Guild, 4);

                await e.RespondAsync("Stats updated.");
            }
        }
コード例 #3
0
ファイル: MoneyClass.cs プロジェクト: jcryer/RPBot
        public async Task Give(CommandContext e, [Description("Who to award the money to")] DiscordMember user, [Description("Amount of money to award")] int money = -1)
        {
            if (money > 0)
            {
                RPClass.Users.Find(x => x.UserData.UserID == user.Id).UserData.Money += money;
                UserObject.RootObject a = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                await e.RespondAsync("User: "******" now has $" + a.UserData.Money);

                RPClass.SaveData(1);
            }
        }
コード例 #4
0
        public async Task Give(CommandContext e, [Description("Who to award the unicurs to")] DiscordMember user, [Description("Amount of unicurs to award")] int money = -1)
        {
            if (money > 0)
            {
                RPClass.Users.Find(x => x.UserData.UserID == user.Id).UserData.Money += money;
                UserObject.RootObject a = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                await e.RespondAsync($"User: {user.DisplayName} now has {a.UserData.Money} Unicur(s)");

                RPClass.SaveData(1);
            }
        }
コード例 #5
0
ファイル: MoneyClass.cs プロジェクト: jcryer/RPBot
        public async Task Give(CommandContext e, [Description("Who to award the merit points to")] DiscordMember user, [Description("Amount of merit points to award")] int meritPoints = -1)
        {
            if (meritPoints > 0)
            {
                RPClass.Users.Find(x => x.UserData.UserID == user.Id).UserData.MeritPoints += meritPoints;
                UserObject.RootObject a = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                await e.RespondAsync("User: "******" now has " + a.UserData.MeritPoints + " merit points.");

                RPClass.SaveData(1);
            }
        }
コード例 #6
0
        public async Task UltimateMute(CommandContext e, [Description("Member to be muted")] DiscordMember user, bool silent = false)
        {
            try
            {
                UserObject.RootObject userObject = RPClass.Users.First(x => x.UserData.UserID == user.Id);

                if (userObject.ModData.IsMuted == 2)
                {
                    if (!silent)
                    {
                        await e.RespondAsync("Fail: user is RP Locked.");
                    }
                    return;
                }
                else if (userObject.ModData.IsMuted == 1)
                {
                    userObject.ModData.IsMuted = 0;
                    await user.ReplaceRolesAsync(userObject.ModData.Roles);

                    if (!silent)
                    {
                        await e.RespondAsync("User unmuted.");
                    }
                }
                else
                {
                    if (user.Roles.Any(x => x == RPClass.AdminRole) && !e.Member.Roles.Any(x => x == RPClass.AdminRole))
                    {
                        if (!silent)
                        {
                            await e.RespondAsync("Admins are the master race, leave us alone.");
                        }
                        return;
                    }
                    userObject.ModData.IsMuted = 1;
                    userObject.ModData.Roles   = user.Roles.ToList();
                    await user.ReplaceRolesAsync(new List <DiscordRole>() { RPClass.MuteRole });

                    if (!silent)
                    {
                        await e.RespondAsync("User muted.");
                    }
                }
                RPClass.SaveData(1);
            }
            catch
            {
                if (!silent)
                {
                    await e.RespondAsync("NO");
                }
            }
        }
コード例 #7
0
        public async Task Balance(CommandContext e, [Description("Use all keyword to see everyone's balance (Admin only), or @mention someone to view their balance")] string all = "")
        {
            var members = await e.Guild.GetAllMembersAsync();

            DiscordEmbedBuilder embed = new DiscordEmbedBuilder()
            {
                Color     = new DiscordColor("4169E1"),
                Timestamp = DateTime.UtcNow
            }
            .WithFooter("Prometheus RP");

            if (all == "all" && e.Member.Roles.Any(x => x == RPClass.StaffRole))
            {
                foreach (UserObject.RootObject userData in RPClass.Users)
                {
                    if (embed.Fields.Count < 25)
                    {
                        embed.AddField(members.First(x => x.Id == userData.UserData.UserID).DisplayName, "Unicurs: " + userData.UserData.Money);
                    }
                    else
                    {
                        await e.RespondAsync("", embed : embed);

                        await Task.Delay(500);

                        embed.ClearFields();
                    }
                }
            }
            else if (!string.IsNullOrWhiteSpace(all))
            {
                all = all.Replace("<", "").Replace(">", "").Replace("@", "").Replace("!", "");
                if (ulong.TryParse(all, out ulong userNum))
                {
                    embed.AddField(members.First(x => x.Id == userNum).DisplayName, "Unicurs: " + RPClass.Users.First(x => x.UserData.UserID == userNum).UserData.Money);
                }
                else
                {
                    await e.RespondAsync("Mention a user to select them.");
                }
            }
            else
            {
                UserObject.RootObject userData = RPClass.Users.Find(x => x.UserData.UserID == e.Member.Id);

                embed.AddField(members.First(x => x.Id == userData.UserData.UserID).DisplayName, "Unicurs: " + userData.UserData.Money);
            }
            await e.RespondAsync("", embed : embed);
        }
コード例 #8
0
        public async Task Take(CommandContext e, [Description("Who to take the unicurs from")] DiscordMember user, [Description("Amount of unicurs to take")] int money = -1)
        {
            if (money > 0)
            {
                UserObject.RootObject userData = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                userData.UserData.Money -= money;
                if (userData.UserData.Money < 0)
                {
                    userData.UserData.Money = 0;
                }
                await e.RespondAsync($"User: {user.DisplayName} now has {userData.UserData.Money} Unicur(s)");

                RPClass.SaveData(1);
            }
        }
コード例 #9
0
ファイル: MoneyClass.cs プロジェクト: jcryer/RPBot
        public async Task Take(CommandContext e, [Description("Who to take the money from")] DiscordMember user, [Description("Amount of money to take")] int money = -1)
        {
            if (money > 0)
            {
                UserObject.RootObject userData = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                userData.UserData.Money -= money;
                if (userData.UserData.Money < 0)
                {
                    userData.UserData.Money = 0;
                }
                await e.RespondAsync("User: "******" now has $" + userData.UserData.Money);

                RPClass.SaveData(1);
            }
        }
コード例 #10
0
ファイル: MoneyClass.cs プロジェクト: jcryer/RPBot
        public async Task Take(CommandContext e, [Description("Who to take the merit points from")] DiscordMember user, [Description("Amount of merit points to take")] int meritPoints = -1)
        {
            if (meritPoints > 0)
            {
                UserObject.RootObject userData = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                userData.UserData.MeritPoints -= meritPoints;
                if (userData.UserData.MeritPoints < 0)
                {
                    userData.UserData.MeritPoints = 0;
                }
                await e.RespondAsync("User: "******" now has " + userData.UserData.MeritPoints + " merit points.");

                RPClass.SaveData(1);
            }
        }
コード例 #11
0
        public async Task ExecuteGroupAsync(CommandContext e, [Description("User to change stats of")] DiscordMember user, [Description("How much you wish to change it by")] int xpNum)
        {
            if (xpNum != 0)
            {
                UserObject.RootObject userData = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                userData.Xp += xpNum;
                if (userData.Xp < 0)
                {
                    userData.Xp = 0;
                }

                await UpdateStats(RPClass.StatsChannel);

                RPClass.SaveData(1);
                UserObject.RootObject newUserData = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                switch (newUserData.UserData.Role)
                {
                case 1:
                    await UpdatePlayerRanking(e.Guild, 1);

                    break;

                case 2:
                    await UpdatePlayerRanking(e.Guild, 2);

                    break;

                case 3:
                    await UpdatePlayerRanking(e.Guild, 3);

                    break;

                case 4:
                    await UpdatePlayerRanking(e.Guild, 4);

                    break;

                case 0:
                    await UpdatePlayerRanking(e.Guild, 1);
                    await UpdatePlayerRanking(e.Guild, 2);
                    await UpdatePlayerRanking(e.Guild, 3);
                    await UpdatePlayerRanking(e.Guild, 4);

                    break;
                }
                await e.RespondAsync("Stat changed.");
            }
        }
コード例 #12
0
ファイル: FameClass.cs プロジェクト: jcryer/RPBot
        public async Task ExecuteGroupAsync(CommandContext e, [Description("User to change fame of")] DiscordMember user, [Description("How much you wish to change it by")] int infamyNum)
        {
            if (infamyNum != 0)
            {
                UserObject.RootObject userData = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                userData.UserData.Infamy += infamyNum;
                if (userData.UserData.Infamy < 0)
                {
                    userData.UserData.Infamy = 0;
                }
                await Extensions.UpdateFameAndInfamyRoles(userData.UserData.Fame, userData.UserData.Infamy, user, userData.UserData.Role == 1?true : false);

                await Extensions.UpdateFameAndInfamy(0);

                RPClass.SaveData(1);

                await e.RespondAsync("Stat changed.");
            }
        }
コード例 #13
0
ファイル: CommandsClass.cs プロジェクト: jcryer/RPBot
        public async Task RemoveUser(CommandContext e, [RemainingText] string whotodelete = "")
        {
            if (RPClass.Users.Any(x => x.UserData.Username == whotodelete))
            {
                UserObject.RootObject user = RPClass.Users.First(x => x.UserData.Username == whotodelete);

                if (RPClass.Guilds.Any(x => x.Id == user.UserData.GuildID))
                {
                    RPClass.Guilds.First(x => x.Id == user.UserData.GuildID).UserIDs.Remove(user.UserData.UserID);
                }
                RPClass.Users.Remove(user);
                RPClass.SaveData(-1);
                await e.RespondAsync("User removed.");
            }
            else
            {
                await e.RespondAsync("No user with that name found.");
            }
        }
コード例 #14
0
        public async Task ExecuteGroupAsync(CommandContext e, [Description("User to change stats of")] DiscordMember user, [Description("How much you wish to change it by")] int xpNum)
        {
            if (xpNum != 0)
            {
                UserObject.RootObject userData = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                userData.UserData.Xp += xpNum;
                if (userData.UserData.Xp < 0)
                {
                    userData.UserData.Xp = 0;
                }

                RPClass.SaveData(1);
                UserObject.RootObject newUserData = RPClass.Users.Find(x => x.UserData.UserID == user.Id);

                await UpdateStats();
                await UpdatePlayerRanking(e.Guild);
                await UpdateGuildRanking(e.Guild);

                await e.RespondAsync("Stat changed.");
            }
        }
コード例 #15
0
        public async Task Transfer(CommandContext e, [Description("Who to send the unicurs to")] DiscordMember user, [Description("Amount of unicurs to award")] int money = -1)
        {
            if (money > 0)
            {
                if (RPClass.Users.Find(x => x.UserData.UserID == e.Message.Author.Id).UserData.Money >= money)
                {
                    RPClass.Users.Find(x => x.UserData.UserID == user.Id).UserData.Money             += money;
                    RPClass.Users.Find(x => x.UserData.UserID == e.Message.Author.Id).UserData.Money -= money;
                    UserObject.RootObject a = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                    UserObject.RootObject b = RPClass.Users.Find(x => x.UserData.UserID == e.Message.Author.Id);

                    await e.RespondAsync($"User: {user.DisplayName} now has {a.UserData.Money} Unicur(s)\n\nUser: {e.Member.DisplayName} now has {b.UserData.Money} Unicur(s)");

                    RPClass.SaveData(1);
                }
                else
                {
                    await e.RespondAsync("You don't have enough Unicurs to do that.");
                }
            }
        }
コード例 #16
0
ファイル: MoneyClass.cs プロジェクト: jcryer/RPBot
        public async Task Transfer(CommandContext e, [Description("Who to send the money to")] DiscordMember user, [Description("Amount of money to award")] int money = -1)
        {
            if (money > 0)
            {
                if (RPClass.Users.Find(x => x.UserData.UserID == e.Message.Author.Id).UserData.Money >= money)
                {
                    RPClass.Users.Find(x => x.UserData.UserID == user.Id).UserData.Money             += money;
                    RPClass.Users.Find(x => x.UserData.UserID == e.Message.Author.Id).UserData.Money -= money;
                    UserObject.RootObject a = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                    UserObject.RootObject b = RPClass.Users.Find(x => x.UserData.UserID == e.Message.Author.Id);

                    await e.RespondAsync("User: "******" now has $" + a.UserData.Money);

                    await e.RespondAsync("User: "******" now has $" + b.UserData.Money);

                    RPClass.SaveData(1);
                }
                else
                {
                    await e.RespondAsync("You don't have enough money to do that.");
                }
            }
        }
コード例 #17
0
ファイル: MoneyClass.cs プロジェクト: jcryer/RPBot
        public async Task Transfer(CommandContext e, [Description("Who to send the merit points to")] DiscordMember user, [Description("Amount of merit points to award")] int meritPoints = -1)
        {
            if (meritPoints > 0)
            {
                if (RPClass.Users.Find(x => x.UserData.UserID == e.Message.Author.Id).UserData.MeritPoints >= meritPoints)
                {
                    RPClass.Users.Find(x => x.UserData.UserID == user.Id).UserData.MeritPoints             += meritPoints;
                    RPClass.Users.Find(x => x.UserData.UserID == e.Message.Author.Id).UserData.MeritPoints -= meritPoints;
                    UserObject.RootObject a = RPClass.Users.Find(x => x.UserData.UserID == user.Id);
                    UserObject.RootObject b = RPClass.Users.Find(x => x.UserData.UserID == e.Message.Author.Id);

                    await e.RespondAsync("User: "******"now has " + a.UserData.MeritPoints + " merit points.");

                    await e.RespondAsync("User: "******" now has " + b.UserData.MeritPoints + " merit points.");

                    RPClass.SaveData(1);
                }
                else
                {
                    await e.RespondAsync("You don't have enough points to do that.");
                }
            }
        }