コード例 #1
0
ファイル: Economy.cs プロジェクト: superjacobl/Valour-Bot
            public async Task SetAsync(CommandContext ctx, double rate, [Remainder] string rolename)
            {
                if (await ctx.Member.IsOwner() != true)
                {
                    await ctx.ReplyAsync($"Only the owner of this server can use this command!");

                    return;
                }

                RoleIncomes roleincome = await Client.DBContext.RoleIncomes.FirstOrDefaultAsync(x => x.RoleName == rolename && x.PlanetId == ctx.Message.Planet_Id);

                if (roleincome == null)
                {
                    PlanetRole role = await(await Cache.GetPlanet(ctx.Planet.Id)).GetRole(rolename);

                    if (role == null)
                    {
                        await ctx.ReplyAsync($"Could not find role {rolename}!");

                        return;
                    }

                    roleincome = new RoleIncomes();

                    roleincome.Income      = rate;
                    roleincome.RoleId      = role.Id;
                    roleincome.PlanetId    = ctx.Message.Planet_Id;
                    roleincome.RoleName    = role.Name;
                    roleincome.LastPaidOut = DateTime.UtcNow;

                    Client.DBContext.RoleIncomes.Add(roleincome);

                    Client.DBContext.SaveChanges();

                    await ctx.ReplyAsync($"Set {rolename}'s hourly income/cost to {roleincome.Income} coins!");
                }

                else
                {
                    roleincome.Income = rate;
                    await Client.DBContext.SaveChangesAsync();

                    await ctx.ReplyAsync($"Set {rolename}'s hourly income/cost to {roleincome.Income} coins!");
                }
            }
コード例 #2
0
        public async Task UpdateRoleIncomes(List <Planet> planets, bool force, PopeAIDB Context)
        {
            RoleIncomes first = await Context.RoleIncomes.FirstOrDefaultAsync();

            if (first == null)
            {
                first             = new RoleIncomes();
                first.LastPaidOut = DateTime.UtcNow;
                first.RoleId      = 0;
            }
            if (DateTime.UtcNow > first.LastPaidOut.AddHours(1) || first.RoleId == 0 || force)
            {
                List <PlanetMemberInfo>         memberinfo        = new List <PlanetMemberInfo>();
                Dictionary <ulong, RoleIncomes> RoleIncomeRoleIds = new Dictionary <ulong, RoleIncomes>();
                List <ulong> PlanetIds = new List <ulong>();
                foreach (RoleIncomes roleincome in Context.RoleIncomes)
                {
                    RoleIncomeRoleIds.Add(roleincome.RoleId, roleincome);
                    roleincome.LastPaidOut = DateTime.UtcNow;
                    if (PlanetIds.Contains(roleincome.PlanetId) == false)
                    {
                        PlanetIds.Add(roleincome.PlanetId);
                    }
                }
                foreach (ulong planetid in PlanetIds)
                {
                    CurrentStat current = await Context.CurrentStats.FirstOrDefaultAsync(x => x.PlanetId == planetid);

                    foreach (PlanetMember member in await(await Cache.GetPlanet(planetid)).GetMembers())
                    {
                        foreach (ulong roleid in member.RoleIds)
                        {
                            if (RoleIncomeRoleIds.ContainsKey(roleid))
                            {
                                RoleIncomes roleincome = RoleIncomeRoleIds[roleid];
                                (await Context.Users.FirstOrDefaultAsync(x => x.UserId == member.User_Id && x.PlanetId == member.Planet_Id)).Coins += roleincome.Income;
                                current.NewCoins += roleincome.Income;
                            }
                        }
                    }
                }
            }
            await Context.SaveChangesAsync();
        }
コード例 #3
0
ファイル: Economy.cs プロジェクト: superjacobl/Valour-Bot
            public async Task ViewAsync(CommandContext ctx, [Remainder] string rolename)
            {
                PlanetRole role = await(await Cache.GetPlanet(ctx.Planet.Id)).GetRole(rolename);

                if (role == null)
                {
                    await ctx.ReplyAsync($"Could not find role {rolename}");

                    return;
                }

                RoleIncomes roleincome = await Client.DBContext.RoleIncomes.FirstOrDefaultAsync(x => x.RoleName == rolename && x.PlanetId == ctx.Message.Planet_Id);

                if (roleincome == null)
                {
                    await ctx.ReplyAsync($"Hourly Income/Cost has not been set for role {rolename}");

                    return;
                }

                await ctx.ReplyAsync($"Hourly Income/Cost for {rolename} is {roleincome.Income} coins");
            }