Пример #1
0
        public async Task GiveHourlyScAsync()
        {
            using (var db = new Database.UserContext(Config))
            {
                var botuser = await db.GetUserOrCreateAsync(Context.User.Id);

                var hourly = botuser.TimeStatuses.FirstOrDefault(x => x.Type == Database.Models.StatusType.Hourly);
                if (hourly == null)
                {
                    hourly = new Database.Models.TimeStatus
                    {
                        Type   = Database.Models.StatusType.Hourly,
                        EndsAt = DateTime.MinValue
                    };
                    botuser.TimeStatuses.Add(hourly);
                }

                if (hourly.IsActive())
                {
                    var timeTo = (int)hourly.RemainingSeconds();
                    await ReplyAsync("", embed : $"{Context.User.Mention} następne zaskórniaki możesz otrzymać dopiero za {timeTo / 60}m {timeTo % 60}s!".ToEmbedMessage(EMType.Error).Build());

                    return;
                }

                hourly.EndsAt  = DateTime.Now.AddHours(1);
                botuser.ScCnt += 5;

                await db.SaveChangesAsync();

                QueryCacheManager.ExpireTag(new string[] { $"user-{botuser.Id}", "users" });

                await ReplyAsync("", embed : $"{Context.User.Mention} łap piątaka!".ToEmbedMessage(EMType.Success).Build());
            }
        }
Пример #2
0
        public async Task AddGlobalEmotesAsync()
        {
            var user = Context.User as SocketGuildUser;

            if (user == null)
            {
                return;
            }

            using (var db = new Database.UserContext(Config))
            {
                var botuser = await db.GetUserOrCreateAsync(user.Id);

                if (botuser.TcCnt < 4000)
                {
                    await ReplyAsync("", embed : $"{user.Mention} nie posiadasz wystarczającej liczby TC!".ToEmbedMessage(EMType.Error).Build());

                    return;
                }

                using (var cdb = new Database.GuildConfigContext(Config))
                {
                    var gConfig = await cdb.GetCachedGuildFullConfigAsync(Context.Guild.Id);

                    var gRole = Context.Guild.GetRole(gConfig.GlobalEmotesRole);
                    if (gRole == null)
                    {
                        await ReplyAsync("", embed : "Serwer nie ma ustawionej roli globalnych emotek.".ToEmbedMessage(EMType.Bot).Build());

                        return;
                    }

                    var global = botuser.TimeStatuses.FirstOrDefault(x => x.Type == Database.Models.StatusType.Globals && x.Guild == Context.Guild.Id);
                    if (global == null)
                    {
                        global = new Database.Models.TimeStatus
                        {
                            Type   = StatusType.Globals,
                            Guild  = Context.Guild.Id,
                            EndsAt = DateTime.Now,
                        };
                        botuser.TimeStatuses.Add(global);
                    }

                    if (!user.Roles.Contains(gRole))
                    {
                        await user.AddRoleAsync(gRole);
                    }

                    global.EndsAt  = global.EndsAt.AddMonths(1);
                    botuser.TcCnt -= 4000;
                }

                await db.SaveChangesAsync();

                QueryCacheManager.ExpireTag(new string[] { $"user-{botuser.Id}", "users" });

                await ReplyAsync("", embed : $"{user.Mention} wykupił miesiąc globalnych emotek!".ToEmbedMessage(EMType.Success).Build());
            }
        }
Пример #3
0
        public async Task GiveDailyScAsync()
        {
            using (var db = new Database.UserContext(Config))
            {
                var botuser = await db.GetUserOrCreateAsync(Context.User.Id);

                var daily = botuser.TimeStatuses.FirstOrDefault(x => x.Type == Database.Models.StatusType.Daily);
                if (daily == null)
                {
                    daily = new Database.Models.TimeStatus
                    {
                        Type   = Database.Models.StatusType.Daily,
                        EndsAt = DateTime.MinValue
                    };
                    botuser.TimeStatuses.Add(daily);
                }

                if (daily.IsActive())
                {
                    var timeTo = (int)daily.RemainingMinutes();
                    await ReplyAsync("", embed : $"{Context.User.Mention} następne drobne możesz otrzymać dopiero za {timeTo / 60}h {timeTo % 60}m!".ToEmbedMessage(EMType.Error).Build());

                    return;
                }

                daily.EndsAt   = DateTime.Now.AddHours(20);
                botuser.ScCnt += 100;

                await db.SaveChangesAsync();

                QueryCacheManager.ExpireTag(new string[] { $"user-{botuser.Id}" });

                await ReplyAsync("", embed : $"{Context.User.Mention} łap drobne na waciki!".ToEmbedMessage(EMType.Success).Build());
            }
        }
Пример #4
0
        public async Task ToggleColorRoleAsync([Summary("kolor z listy(brak - lista)")] FColor color = FColor.None, [Summary("waluta(SC/TC)")] SCurrency currency = SCurrency.Tc)
        {
            var user = Context.User as SocketGuildUser;

            if (user == null)
            {
                return;
            }

            if (color == FColor.None)
            {
                using (var img = _profile.GetColorList(currency))
                {
                    await Context.Channel.SendFileAsync(img, "list.png");

                    return;
                }
            }

            using (var db = new Database.UserContext(Config))
            {
                var botuser = await db.GetUserOrCreateAsync(user.Id);

                var points = currency == SCurrency.Tc ? botuser.TcCnt : botuser.ScCnt;
                if (points < color.Price(currency))
                {
                    await ReplyAsync("", embed : $"{user.Mention} nie posiadasz wystarczającej liczby {currency.ToString().ToUpper()}!".ToEmbedMessage(EMType.Error).Build());

                    return;
                }

                var colort = botuser.TimeStatuses.FirstOrDefault(x => x.Type == Database.Models.StatusType.Color && x.Guild == Context.Guild.Id);
                if (colort == null)
                {
                    colort = new Database.Models.TimeStatus
                    {
                        Type   = Database.Models.StatusType.Color,
                        Guild  = Context.Guild.Id,
                        EndsAt = DateTime.Now,
                    };
                    botuser.TimeStatuses.Add(colort);
                }

                await _profile.RomoveUserColorAsync(user);

                if (color == FColor.CleanColor)
                {
                    colort.EndsAt = DateTime.Now;
                }
                else
                {
                    using (var cdb = new Database.GuildConfigContext(Config))
                    {
                        var gConfig = await cdb.GetCachedGuildFullConfigAsync(Context.Guild.Id);

                        if (!await _profile.SetUserColorAsync(user, gConfig.AdminRole, color))
                        {
                            await ReplyAsync("", embed : $"Coś poszło nie tak!".ToEmbedMessage(EMType.Error).Build());

                            return;
                        }

                        colort.EndsAt = colort.EndsAt.AddMonths(1);

                        if (currency == SCurrency.Tc)
                        {
                            botuser.TcCnt -= color.Price(currency);
                        }
                        else
                        {
                            botuser.ScCnt -= color.Price(currency);
                        }
                    }
                }

                await db.SaveChangesAsync();

                QueryCacheManager.ExpireTag(new string[] { $"user-{botuser.Id}", "users" });

                await ReplyAsync("", embed : $"{user.Mention} wykupił kolor!".ToEmbedMessage(EMType.Success).Build());
            }
        }