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 async Task ProgressInteractiveReactions(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user) { if (!ProgressTrackerInfo.IsProgressTrackerMessage(message)) { return; } if (reaction.Emote.IsSameAs(DecreaseEmoji)) { DecreaseProgress(message); await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); } if (reaction.Emote.IsSameAs(IncreaseEmoji)) { IncreaseProgress(message); await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); } if (reaction.Emote.IsSameAs(oldFullEmoji) || reaction.Emote.IsSameAs(FullEmoji)) { IncreaseProgressFullCheck(message); await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); } if (reaction.Emote.IsSameAs(RollEmoji)) { var tracker = new ProgressTrackerInfo().PopulateFromMessage(message); var roll = new ActionRoll(0, tracker.ActionDie, $"{ProgressResources.ProgressRollFor}{tracker.Description}"); await channel.SendMessageAsync(roll.ToString()).ConfigureAwait(false); await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); } return; }
private void IncreaseProgressFullCheck(IUserMessage message) { ProgressTrackerInfo tracker = new ProgressTrackerInfo().PopulateFromMessage(message); tracker.Ticks += 4; message.ModifyAsync(msg => msg.Embed = tracker.BuildEmbed() as Embed).ConfigureAwait(false); }
private void DecreaseProgress(IUserMessage message) { ProgressTrackerInfo tracker = new ProgressTrackerInfo().PopulateFromMessage(message); tracker.RemoveProgress(); message.ModifyAsync(msg => msg.Embed = tracker.BuildEmbed() as Embed).ConfigureAwait(false); }
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); } }