public async Task BuildTrackerCommand([Remainder] string Description = "") { ChannelSettings channelSettings = await ChannelSettings.GetChannelSettingsAsync(Context.Channel.Id); InitiativeTracker tracker = new InitiativeTracker(channelSettings); tracker.Description = Description; var msg = await ReplyAsync(embed : tracker.GetEmbedBuilder().Build()); await msg.AddReactionAsync(AdvantageEmoji); await msg.AddReactionAsync(DisadvantageEmoji); return; }
internal static InitiativeTracker FromMessage(IUserMessage message) { var embed = message.Embeds.First(embed => embed.Title == InitiativeResources.TrackerTitle); var tracker = new InitiativeTracker { Description = embed.Description, Advantage = embed.Fields.First(field => field.Name == InitiativeResources.Advantage || field.Name == InitiativeResources.StarforgedAdvantage).Value.Split('\n').ToList(), Disadvantage = embed.Fields.First(field => field.Name == InitiativeResources.Disadvantage || field.Name == InitiativeResources.StarforgedDisadvantage).Value.Split('\n').ToList() }; tracker.Advantage.RemoveAll(s => s == InitiativeResources.None); tracker.Disadvantage.RemoveAll(s => s == InitiativeResources.None); return(tracker); }
private async Task InitiativeReactionsHandler(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user) { ChannelSettings channelSettings = await ChannelSettings.GetChannelSettingsAsync(channel.Id); if (!InitiativeTracker.IsInitiativeTrackerMessage(message)) { return; } InitiativeTracker tracker = InitiativeTracker.FromMessage(message).WithChannelSettings(channelSettings); if (reaction.Emote.Name == DisadvantageEmoji) { if (!tracker.Disadvantage.Contains(user.ToString())) { await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); tracker.Disadvantage.Add(user.ToString()); tracker.Advantage.RemoveAll(s => s == user.ToString()); await message.ModifyAsync(msg => msg.Embed = tracker.GetEmbedBuilder().Build()); return; } } if (reaction.Emote.Name == AdvantageEmoji) { if (!tracker.Advantage.Contains(user.ToString())) { await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); tracker.Advantage.Add(user.ToString()); tracker.Disadvantage.RemoveAll(s => s == user.ToString()); await message.ModifyAsync(msg => msg.Embed = tracker.GetEmbedBuilder().Build()); return; } } return; }