Esempio n. 1
0
        private async Task WikiSearch(string search, ISocketMessageChannel channel, int maxSearch = 10)
        {
            EmbedBuilder embed = new EmbedBuilder();

            StringBuilder sb = new StringBuilder();

            embed.WithTitle($"Wikipedia Search '{search}'");
            embed.WithColor(FunCmdsConfig.wikipediaSearchColor);
            embed.WithFooter($"Search by {Context.User}", Context.User.GetAvatarUrl());
            embed.WithCurrentTimestamp();
            embed.WithDescription("Searching Wikipedia...");

            RestUserMessage message = await channel.SendMessageAsync("", false, embed.Build());

            WikiSearchResponse response = WikiSearcher.Search(search, new WikiSearchSettings
            {
                ResultLimit = maxSearch
            });

            foreach (WikiSearchResult result in response.Query.SearchResults)
            {
                string link =
                    $"**[{result.Title}]({result.ConstantUrl})** (Words: {result.WordCount})\n{result.Preview}\n\n";

                //There is a character limit of 2048, so lets make sure we don't hit that
                if (sb.Length >= 2048)
                {
                    continue;
                }

                if (sb.Length + link.Length >= 2048)
                {
                    continue;
                }

                sb.Append(link);
            }

            embed.WithDescription(sb.ToString());
            embed.WithCurrentTimestamp();

            await MessageUtils.ModifyMessage(message, embed);
        }
Esempio n. 2
0
 /// <summary>
 ///
 /// </summary>
 /// <remarks>
 /// Honestly this is wrong: we shouldn't be coupling directly to Azurite.Wiki here,
 /// but resolving an <see cref="Azurite.IShipDataProvider"/> provider from DI.
 /// </remarks>
 /// <param name="searcher">A <see cref="Azurite.Wiki.WikiSearcher"/> instance.</param>
 /// <returns>An <see cref="IndexBuilder"/> builder instance.</returns>
 public IndexBuilder(WikiSearcher searcher) : this(searcher, null)
 {
 }
Esempio n. 3
0
 /// <summary>
 /// Builds an <see cref="IndexBuilder"/> with the provided searcher and DB client.
 /// </summary>
 /// <param name="searcher">The wiki searcher to use when fetching details.</param>
 /// <param name="client">The DB client to write to.</param>
 public IndexBuilder(WikiSearcher searcher, ShipDbClient client)
 {
     _searcher = searcher;
     _client   = client ?? new ShipDbClient();
 }
Esempio n. 4
0
 static async Task GetShip() {
     var searcher = new WikiSearcher();
     // var result = (await searcher.GetShipDetails("Pensacola")).ToList();
     // var results = (await searcher.GetShipDetails("Salt Lake City")).ToList();
     var results = (await searcher.GetShipDetails("London")).ToList();
 }