public static bool TryParse(string s, out ChallengeRank cr) { cr = ChallengeRank.None; if (s.Contains(ProgressResources.Troublesome, System.StringComparison.OrdinalIgnoreCase)) { cr = ChallengeRank.Troublesome; } if (s.Contains(ProgressResources.Dangerous, System.StringComparison.OrdinalIgnoreCase)) { cr = ChallengeRank.Dangerous; } if (s.Contains(ProgressResources.Formidable, System.StringComparison.OrdinalIgnoreCase)) { cr = ChallengeRank.Formidable; } if (s.Contains(ProgressResources.Extreme, System.StringComparison.OrdinalIgnoreCase)) { cr = ChallengeRank.Extreme; } if (s.Contains(ProgressResources.Epic, System.StringComparison.OrdinalIgnoreCase)) { cr = ChallengeRank.Epic; } return(cr != ChallengeRank.None); }
private async Task BuildProgressTrackerPostAsync(ChallengeRank cr, string ThingToTrack, IUserMessage messageToEdit = null) { if (messageToEdit == null) { var tracker = new ProgressTrackerInfo(cr, ThingToTrack); messageToEdit = ReplyAsync(embed: tracker.BuildEmbed() as Embed).Result; } else { var tracker = new ProgressTrackerInfo().PopulateFromMessage(messageToEdit, cr); await messageToEdit.ModifyAsync(msg => { msg.Content = string.Empty; msg.Embed = tracker.BuildEmbed() as Embed; }); } await messageToEdit.RemoveAllReactionsAsync(); _ = Task.Run(async() => { await messageToEdit.AddReactionAsync(DecreaseEmoji); await messageToEdit.AddReactionAsync(IncreaseEmoji); await messageToEdit.AddReactionAsync(FullEmoji); await messageToEdit.AddReactionAsync(RollEmoji); await messageToEdit.AddReactionAsync(new Emoji(GenericReactions.recreatePostEmoji)); }).ConfigureAwait(false); return; }
public ProgressTrackerInfo PopulateFromMessage(IUserMessage message, ChallengeRank challengeRank = ChallengeRank.None) { var embed = message.Embeds.FirstOrDefault(); if (embed == null) { throw new NullReferenceException(); } if (challengeRank == ChallengeRank.None && !Enum.TryParse(embed.Fields.FirstOrDefault(f => f.Name == DifficultyFieldTitle).Value, out challengeRank)) { throw new ArgumentException("Unknown progress tracker post format, unable to parse difficulty"); } Rank = challengeRank; if (embed.Footer.HasValue) { Ticks = (Int32.TryParse(embed.Footer.Value.Text.Replace(ProgressResources.Ticks, "").Replace(":", ""), out int temp)) ? temp : 0; } Description = embed.Description; this.IconUrl = embed.Thumbnail?.Url; return(this); }
public async Task ProgressTrackerCommand([Remainder] string TrackerArgs) { //TODO this all needs to be reworked for globalization string[] splitArgs = TrackerArgs.Split(' '); string NameOfTrack = TrackerArgs; ChallengeRank difficulty = ChallengeRank.None; if (Enum.TryParse(Enum.GetNames(typeof(ChallengeRank)).FirstOrDefault(cr => ProgressTrackerInfo.HasMatchingChallengeRank(cr, splitArgs)), out difficulty)) { NameOfTrack = Regex.Replace(NameOfTrack, difficulty.ToString(), string.Empty, RegexOptions.IgnoreCase); } if (difficulty == ChallengeRank.None) { await CreateTrackerHelper(NameOfTrack); } else { await BuildProgressTrackerPostAsync(difficulty, NameOfTrack); } }
public ProgressTracker(IUserMessage message, ChallengeRank challengeRank = ChallengeRank.None) { var embed = message.Embeds.FirstOrDefault(item => item.Title == ProgressResources.Progress_Tracker); if (embed == null) { return; } if (challengeRank == ChallengeRank.None && !Enum.TryParse(embed.Fields.FirstOrDefault(f => f.Name == ProgressResources.Difficulty).Value, out challengeRank)) { throw new ArgumentException("Unknown progress tracker post format, unable to parse difficulty"); } Rank = challengeRank; if (embed.Footer.HasValue) { Ticks = (Int32.TryParse(embed.Footer.Value.Text.Replace(ProgressResources.Ticks, "").Replace(":", ""), out int temp)) ? temp : 0; } Title = embed.Description; }
public ProgressTracker(ChallengeRank ChallengeRank, string title, int startingTicks = 0) { Rank = ChallengeRank; Title = title; Ticks = startingTicks; }
public ProgressTrackerInfo(ChallengeRank ChallengeRank, string description, int startingTicks = 0) { Rank = ChallengeRank; Description = description; Ticks = startingTicks; }