private async Task HandleAutoGimiAsync(int times) { Context.Account.CanAutoGimi = false; times = times > 100 ? 100 : times <= 0 ? 1 : times; long result = 0; TimeSpan duration = TimeSpan.FromSeconds(times - 1); Discord.IUserMessage reference = await Context.Channel.SendMessageAsync($"> Gathering results in {Format.Counter(duration.TotalSeconds)}..."); var gimi = new Gimi(true); for (int i = 0; i < times; i++) { GimiResult innerResult = gimi.Next(); // this should be easier on the mem innerResult.Apply(Context.Account); result += innerResult.IsSuccess ? innerResult.Reward : -innerResult.Reward; if (times > 1) { await Task.Delay(1000); } } await reference.ModifyAsync($"> 〽️ **The results are in!**\n> **Net Outcome**: **{result:##,0}**").ConfigureAwait(false); Context.Account.CanAutoGimi = true; }
public async Task GimiAsync() { var gimi = new Gimi(); GimiResult result = gimi.Next(); Message message = result.ApplyAndDisplay(Context.Account); await Context.Channel.SendMessageAsync(Context.Account, message).ConfigureAwait(false); }
// TODO: implement criterion and priorities for replies public static string GetReply(GimiResultFlag flag, ArcadeUser user = null, GimiResult result = null) { IEnumerable <CasinoReply> replies = GetReplies(flag); if (user != null && result != null) { replies = replies.Where(x => MeetsCriteria(x, user, result)); } if (Check.NotNullOrEmpty(replies)) { return(Randomizer.Choose(replies).ToString(user, result)); } return(GetGeneric(flag)); }