public static Message ApplyAndDisplay(ArcadeUser user, DailyResultFlag flag) { long reward = Reward; string header = $"{Reward:##,0}"; ImmutableColor color = ImmutableColor.GammaGreen; var icon = "+ 💸"; switch (flag) { case DailyResultFlag.Cooldown: TimeSpan sinceLast = StatHelper.SinceLast(user, CooldownVars.Daily); TimeSpan rem = Cooldown - sinceLast; DateTime time = DateTime.UtcNow.Add(rem); color = GammaPalette.Amber[Gamma.Max]; header = Format.Countdown(rem); icon = Icons.GetClock(time.Hour); break; case DailyResultFlag.Reset: color = GammaPalette.NeonRed[Gamma.Max]; user.SetVar(Stats.DailyStreak, 0); break; case DailyResultFlag.Bonus: color = GammaPalette.Glass[Gamma.Max]; header += $" + {Bonus:##,0}"; reward += Bonus; break; } if (flag != DailyResultFlag.Cooldown) { user.SetVar(CooldownVars.Daily, DateTime.UtcNow.Ticks); user.AddToVar(Stats.DailyStreak); user.AddToVar(Stats.TimesDaily); Var.SetIfGreater(user, Stats.LongestDailyStreak, Stats.DailyStreak); user.Give(reward); } var message = new MessageBuilder(); var embedder = Embedder.Default; embedder.Color = color; embedder.Header = $"**{icon} {header}**"; message.Content = $"*\"{Replies.GetReply(flag)}\"*"; message.Embedder = embedder; return(message.Build()); }
public async Task GetDailyAsync() { DailyResultFlag result = DailyService.Next(Context.Account); await Context.Channel.SendMessageAsync(DailyService.ApplyAndDisplay(Context.Account, result)); }
public static string GetReply(DailyResultFlag flag) { string[] replies = GetReplies(flag); return(Check.NotNullOrEmpty(replies) ? Randomizer.Choose(replies) : GetGeneric(flag)); }