public async Task <bool> GiftWaifuAsync(ulong from, IUser giftedWaifu, WaifuItem itemObj) { if (!await _cs.RemoveAsync(from, "Bought waifu item", itemObj.Price, gamble: true)) { return(false); } using (var uow = _db.UnitOfWork) { var w = uow.Waifus.ByWaifuUserId(giftedWaifu.Id, set => set.Include(x => x.Items)); if (w == null) { uow.Waifus.Add(w = new WaifuInfo() { Affinity = null, Claimer = null, Price = 1, Waifu = uow.DiscordUsers.GetOrCreate(giftedWaifu), }); } w.Items.Add(itemObj); if (w.Claimer?.UserId == from) { w.Price += (int)(itemObj.Price * 0.95); } else { w.Price += itemObj.Price / 2; } await uow.CompleteAsync(); } return(true); }
public async Task WaifuGift() { var embed = new EmbedBuilder() .WithTitle(GetText("waifu_gift_shop")) .WithOkColor(); Enum.GetValues(typeof(WaifuItem.ItemName)) .Cast <WaifuItem.ItemName>() .Select(x => WaifuItem.GetItem(x)) .ForEach(x => embed.AddField(f => f.WithName(x.ItemEmoji + " " + x.Item).WithValue(x.Price).WithIsInline(true))); await Context.Channel.EmbedAsync(embed).ConfigureAwait(false); }
public async Task WaifuGift(WaifuItem.ItemName item, [Remainder] IUser waifu) { if (waifu.Id == Context.User.Id) { return; } var itemObj = WaifuItem.GetItem(item, _bc.BotConfig.WaifuGiftMultiplier); using (var uow = _db.UnitOfWork) { var w = uow.Waifus.ByWaifuUserId(waifu.Id); //try to buy the item first if (!await _cs.RemoveAsync(Context.User.Id, "Bought waifu item", itemObj.Price, gamble: true)) { await ReplyErrorLocalized("not_enough", _bc.BotConfig.CurrencySign).ConfigureAwait(false); return; } if (w == null) { uow.Waifus.Add(w = new WaifuInfo() { Affinity = null, Claimer = null, Price = 1, Waifu = uow.DiscordUsers.GetOrCreate(waifu), }); w.Waifu.Username = waifu.Username; w.Waifu.Discriminator = waifu.Discriminator; } w.Items.Add(itemObj); if (w.Claimer?.UserId == Context.User.Id) { w.Price += itemObj.Price; } else { w.Price += itemObj.Price / 2; } await uow.CompleteAsync().ConfigureAwait(false); } await ReplyConfirmLocalized("waifu_gift", Format.Bold(item.ToString() + " " + itemObj.ItemEmoji), Format.Bold(waifu.ToString())).ConfigureAwait(false); }
public async Task WaifuGift(WaifuItem.ItemName item, [Remainder] IUser waifu) { if (waifu.Id == Context.User.Id) { return; } var itemObj = WaifuItem.GetItemObject(item, Bc.BotConfig.WaifuGiftMultiplier); int sucess = await _service.GiftWaifuAsync(Context.User.Id, waifu, itemObj); if (sucess != 0) { await ReplyConfirmLocalized("waifu_gift", Format.Bold(GetText(item.ToString()) + " " + itemObj.ItemEmoji), waifu.Mention, Format.Bold(String.Format("{0:#,0}", sucess) + Bc.BotConfig.CurrencySign)); } else { await ReplyErrorLocalized("not_enough", Bc.BotConfig.CurrencySign); } }
public async Task WaifuGift(WaifuItem.ItemName item, [Leftover] IUser waifu) { if (waifu.Id == ctx.User.Id) { return; } var itemObj = WaifuItem.GetItemObject(item, Bc.BotConfig.WaifuGiftMultiplier); bool sucess = await _service.GiftWaifuAsync(ctx.User.Id, waifu, itemObj); if (sucess) { await ReplyConfirmLocalizedAsync("waifu_gift", Format.Bold(item.ToString() + " " + itemObj.ItemEmoji), Format.Bold(waifu.ToString())); } else { await ReplyErrorLocalizedAsync("not_enough", Bc.BotConfig.CurrencySign); } }
public async Task WaifuGift(int page = 1) { if (--page < 0 || page > 3) { return; } await ctx.SendPaginatedConfirmAsync(page, (cur) => { var embed = new EmbedBuilder() .WithTitle(GetText("waifu_gift_shop")) .WithOkColor(); Enum.GetValues(typeof(WaifuItem.ItemName)) .Cast <WaifuItem.ItemName>() .Select(x => WaifuItem.GetItemObject(x, Bc.BotConfig.WaifuGiftMultiplier)) .OrderBy(x => x.Price) .Skip(9 * cur) .Take(9) .ForEach(x => embed.AddField(f => f.WithName(x.ItemEmoji + " " + x.Item).WithValue(x.Price).WithIsInline(true))); return(embed); }, Enum.GetValues(typeof(WaifuItem.ItemName)).Length, 9); }