private async Task EnableAssetTwo(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user)
        {
            var ship = new PlayerShip(Services).PopulateFromEmbed(message.Embeds.FirstOrDefault());

            if (ship == null)
            {
                return;
            }
            await channel.SendMessageAsync("This feature isn't ready, but the reaction is in place so that you don't have to recreate the card in the future.");
        }
        private async Task IncreaseIntegrity(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user)
        {
            var ship = new PlayerShip(Services).PopulateFromEmbed(message.Embeds.FirstOrDefault());

            if (ship == null)
            {
                return;
            }
            await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false);

            ship.Integrity++;
            await message.ModifyAsync(msg => msg.Embed = ship.GetEmbed()).ConfigureAwait(false);
        }
        public async Task CreatePlayerShip([Remainder] string ShipNameInput = "")
        {
            string[] randomWords = PlayerShipResources.RandomWords.Split(',');
            for (int i = 0; i < randomWords.Length; i++)
            {
                randomWords[i] = randomWords[i].Trim();
            }

            string[] skipWords = PlayerShipResources.SkipWords.Split(',');
            for (int i = 0; i < skipWords.Length; i++)
            {
                skipWords[i] = skipWords[i].Trim();
            }

            string[] yesWords = PlayerShipResources.YesWords.Split(',');
            for (int i = 0; i < yesWords.Length; i++)
            {
                yesWords[i] = yesWords[i].Trim();
            }

            var helperEmbed = new EmbedBuilder()
                              .WithTitle(PlayerShipResources.HelperTitle)
                              .WithDescription(PlayerShipResources.HelperSetShipName)
                              .WithFooter(PlayerShipResources.HelperFooter);

            IUserMessage post = null;

            if (ShipNameInput.Length == 0)
            {
                post = await ReplyAsync(embed : helperEmbed.Build()).ConfigureAwait(false);

                var shipNameMsg = await NextMessageAsync(timeout : TimeSpan.FromMinutes(2));

                if (shipNameMsg == null)
                {
                    await ShipCreationFailed(post); return;
                }
                ShipNameInput = shipNameMsg.Content;
                await shipNameMsg.DeleteAsync();
            }

            var valuesSoFarField = new EmbedFieldBuilder().WithName(PlayerShipResources.SelectedItems).WithValue(ShipNameInput);

            helperEmbed.WithDescription(PlayerShipResources.HelperSetHistory)
            .AddField(valuesSoFarField);

            if (post != null)
            {
                await post.ModifyAsync(msg => msg.Embed = helperEmbed.Build()).ConfigureAwait(false);
            }
            else
            {
                post = await ReplyAsync(embed : helperEmbed.Build()).ConfigureAwait(false);
            }

            var shipHistoryMessage = await NextMessageAsync(timeout : TimeSpan.FromMinutes(2));

            if (shipHistoryMessage == null)
            {
                await ShipCreationFailed(post); return;
            }
            string shipHistory = shipHistoryMessage.Content;

            if (skipWords.Any(skipWord => shipHistory.Equals(skipWord, StringComparison.OrdinalIgnoreCase)))
            {
                shipHistory = string.Empty;
            }
            if (randomWords.Any(randWord => shipHistory.Equals(randWord, StringComparison.OrdinalIgnoreCase)))
            {
                shipHistory = OracleService.RandomOracleResult("Starship History", Services, GameCore.GameName.Starforged);
            }
            await shipHistoryMessage.DeleteAsync().ConfigureAwait(false);

            valuesSoFarField.WithValue($"{valuesSoFarField.Value}\n{shipHistory}".Trim('\n'));
            await post.ModifyAsync(msg => msg.Embed = helperEmbed
                                   .WithDescription(PlayerShipResources.HelperSetLooks).Build()).ConfigureAwait(false);

            var shipLooksMessage = await NextMessageAsync(timeout : TimeSpan.FromMinutes(2));

            if (shipLooksMessage == null)
            {
                await ShipCreationFailed(post); return;
            }
            string shipLooks = shipLooksMessage.Content;

            if (skipWords.Any(skipWord => shipLooks.Equals(skipWord, StringComparison.OrdinalIgnoreCase)))
            {
                shipLooks = string.Empty;
            }
            if (randomWords.Any(randWord => shipLooks.Equals(randWord, StringComparison.OrdinalIgnoreCase)))
            {
                shipLooks = OracleService.RandomOracleResult("Starship Quirks", Services, GameCore.GameName.Starforged);
            }
            await shipLooksMessage.DeleteAsync().ConfigureAwait(false);

            valuesSoFarField.WithValue($"{valuesSoFarField.Value}\n{shipLooks}".Trim('\n'));
            await post.ModifyAsync(msg => msg.Embed = helperEmbed.WithDescription(PlayerShipResources.HelperIncludeSupply).Build()).ConfigureAwait(false);

            var useSupplyMsg = await NextMessageAsync(timeout : TimeSpan.FromMinutes(2));

            if (useSupplyMsg == null)
            {
                await ShipCreationFailed(post); return;
            }
            await useSupplyMsg.DeleteAsync().ConfigureAwait(false);

            var ship = new PlayerShip(Services);

            ship.Name      = ShipNameInput;
            ship.UseSupply = yesWords.Any(yesWord => useSupplyMsg.Content.Contains(yesWord, StringComparison.OrdinalIgnoreCase));

            ship.Description = shipHistory.Length > 0 ? string.Format(PlayerShipResources.ShipHistory, shipHistory) : string.Empty;
            if (ship.Description.Length > 0 && shipLooks.Length > 0)
            {
                ship.Description += "\n";
            }
            ship.Description += shipLooks.Length > 0 ? string.Format(PlayerShipResources.ShipLooks, shipLooks) : string.Empty;

            await post.ModifyAsync(msg => msg.Embed = ship.GetEmbed()).ConfigureAwait(false);

            await Task.Run(async() =>
            {
                await post.RemoveAllReactionsAsync();
                await post.AddReactionAsync(DecreaseIntegrityEmoji);
                await post.AddReactionAsync(IncreaseIntegrityEmoji);
                if (ship.UseSupply)
                {
                    await post.AddReactionAsync(SupplyDownEmoji);
                }
                if (ship.UseSupply)
                {
                    await post.AddReactionAsync(SupplyUpEmoji);
                }
                await post.AddReactionAsync(GenericReactions.twoEmoji);
                await post.AddReactionAsync(GenericReactions.threeEmoji);
            }).ConfigureAwait(false);
        }