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()); } }
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()); } }
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()); } }
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()); } }