public override Task <AutocompletionResult> GenerateSuggestionsAsync( IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, IServiceProvider services ) { var input = autocompleteInteraction.Data.Current.Value as string; var matches = _cmdHelpService.GetCmdsStartsWithInput(context.User, input) .Select(cmd => { if (cmd is CommandInfo regCmdInfo) { return(regCmdInfo.Name); } else { return((cmd as IApplicationCommandInfo)?.Name); } }) .Distinct() .PartialSort(25); var results = AutocompletionResult.FromSuccess(matches.Select(cmdName => new AutocompleteResult(cmdName, cmdName))); return(Task.FromResult(results)); }
public override async Task <AutocompletionResult> GenerateSuggestionsAsync(IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, IServiceProvider services) { // Create a collection with suggestions for autocomplete IEnumerable <AutocompleteResult> results = new[] { new AutocompleteResult("Name1", "value111"), new AutocompleteResult("Name2", "value2") }; // max - 25 suggestions at a time (API limit) return(AutocompletionResult.FromSuccess(results.Take(25))); }
public override Task <AutocompletionResult> GenerateSuggestionsAsync(IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, IServiceProvider services) { string filter = autocompleteInteraction.Data.Current.Value.ToString(); List <SlashCommandInfo> slashCommands = InteractionService.SlashCommands.Where(x => !x.Name.Equals(HELP_COMMAND, StringComparison.OrdinalIgnoreCase)).OrderBy(x => x.Name).ToList(); if (!string.IsNullOrWhiteSpace(filter)) { slashCommands = slashCommands.Where(x => x.Name.Contains(filter, StringComparison.OrdinalIgnoreCase)).Take(MAX_AUTOCOMPLETE_RESULTS).OrderBy(x => x.Name).ToList(); } else { slashCommands = slashCommands.Take(MAX_AUTOCOMPLETE_RESULTS).ToList(); } IEnumerable <AutocompleteResult> autocompletionCollection = slashCommands.Select(x => new AutocompleteResult(x.Name, x.Name)); return(Task.FromResult(AutocompletionResult.FromSuccess(autocompletionCollection))); }
public override async Task <AutocompletionResult> GenerateSuggestionsAsync( IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, IServiceProvider services ) { var input = autocompleteInteraction.Data.Current.Value as string; if (string.IsNullOrEmpty(input)) { return(AutocompletionResult.FromSuccess()); } var archetypes = await _yugiohDbService.GetArchetypesAutocompleteAsync(input); return(AutocompletionResult.FromSuccess(archetypes.Select(archetype => new AutocompleteResult(archetype, archetype)))); }
public override async Task <AutocompletionResult> GenerateSuggestionsAsync( IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, IServiceProvider services ) { var input = (string)autocompleteInteraction.Data.Current.Value; if (string.IsNullOrEmpty(input)) { return(AutocompletionResult.FromSuccess()); } var results = await _yuGiOhDbService.GetBoosterPacksAutocompleteAsync(input); return(AutocompletionResult.FromSuccess(results.Select(result => new AutocompleteResult(result, result)))); }
public override Task <AutocompletionResult> GenerateSuggestionsAsync(IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, IServiceProvider services) { var settings = services.GetRequiredService <Settings>(); var test = autocompleteInteraction.Data.Current.Value.ToString(); if (string.IsNullOrEmpty(test)) { var results = settings.Sources.Select(x => new AutocompleteResult(x.FriendlyName, x.FriendlyName)); return(Task.FromResult(AutocompletionResult.FromSuccess(results.Take(25)))); } else { // Note: This could be optimised. var results = settings.Sources.Where(x => x.FriendlyName.Contains(test, StringComparison.OrdinalIgnoreCase)) .OrderBy(entry => entry.FriendlyName) .Select(x => new AutocompleteResult(x.FriendlyName, x.FriendlyName)); return(Task.FromResult(AutocompletionResult.FromSuccess(results.Take(25)))); } }
public override async Task <AutocompletionResult> GenerateSuggestionsAsync(IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, IServiceProvider services) { string filter = autocompleteInteraction.Data.Current.Value.ToString(); List <WorldCurrencyCodeResponse> currencyCodes = await FiatCurrencyService.GetWorldCurrenciesList(); if (!string.IsNullOrWhiteSpace(filter)) { currencyCodes = currencyCodes.Where(x => x.Code.Contains(filter, StringComparison.OrdinalIgnoreCase) || x.Name.Contains(filter, StringComparison.OrdinalIgnoreCase)) .Take(MAX_AUTOCOMPLETE_RESULTS) .ToList(); } else { currencyCodes = currencyCodes.Take(MAX_AUTOCOMPLETE_RESULTS).ToList(); } IEnumerable <AutocompleteResult> autocompletionCollection = currencyCodes.Select(x => new AutocompleteResult($"{x.Code} ({x.Name})", x.Code)).OrderBy(x => x.Name).ToList(); return(AutocompletionResult.FromSuccess(autocompletionCollection)); }
public override async Task <AutocompletionResult> GenerateSuggestionsAsync(IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, IServiceProvider services) { string filter = autocompleteInteraction.Data.Current.Value.ToString(); List <CryptoCodeResponse> currencyCodes = await CryptoService.GetCryptoCodeList(); if (!string.IsNullOrWhiteSpace(filter)) { List <CryptoCodeResponse> currencyCodesBySymbol = currencyCodes.Where(x => x.Symbol.Equals(filter, StringComparison.OrdinalIgnoreCase)).ToList(); if (!currencyCodesBySymbol.Any()) { currencyCodesBySymbol = currencyCodes.Where(x => x.Symbol.Contains(filter, StringComparison.OrdinalIgnoreCase)).ToList(); } List <CryptoCodeResponse> currencyCodesByName = currencyCodes.Where(x => x.Name.Contains(filter, StringComparison.OrdinalIgnoreCase)).ToList(); currencyCodes = currencyCodesBySymbol.Union(currencyCodesByName).Take(MAX_AUTOCOMPLETE_RESULTS).ToList(); } else { currencyCodes = currencyCodes.Take(MAX_AUTOCOMPLETE_RESULTS).ToList(); } IEnumerable <AutocompleteResult> autocompletionCollection = currencyCodes.Select(x => new AutocompleteResult($"[{x.Symbol.ToUpper()}] {x.Name}", x.Code)).OrderBy(x => x.Name); return(AutocompletionResult.FromSuccess(autocompletionCollection)); }