public async Task Dictionary(CommandContext ctx, [RemainingText] string query) { if (string.IsNullOrWhiteSpace(query)) { await BotServices.SendErrorEmbedAsync(ctx, ":warning: A word or phrase is required!"); } else { var data = await DefinitionService.GetDefinitionForTermAsync(query); if (data.Results.Count == 0) { await BotServices.SendErrorEmbedAsync(ctx, ":mag: No results found!"); } else { for (var index = 0; index < data.Results.Count; index++) { foreach (var value in data.Results[index].Senses) { if (value.Definition != null) { await ctx.TriggerTypingAsync(); var definition = value.Definition.ToString(); if (!(value.Definition is string)) { definition = ((JArray)JToken.Parse(value.Definition.ToString())).First.ToString(); } var output = new DiscordEmbedBuilder() .WithTitle($"Dictionary definition for **{query}**") .WithDescription(definition.Length < 500 ? definition : definition.Take(500) + "...") .WithFooter("Type go for the next definition") .WithColor(DiscordColor.Blurple); if (value.Examples != null) { output.AddField("Example", value.Examples.First().text); } await ctx.RespondAsync(embed : output.Build()); var interactivity = await ctx.Client.GetInteractivity() .WaitForMessageAsync(m => m.Channel.Id == ctx.Channel.Id && m.Content.ToLower() == "go", TimeSpan.FromSeconds(10)); if (interactivity != null) { continue; } index = data.Results.Count; break; } } } } } }