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;
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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;
        }