Автозаполнение для DSharpPlus в C#C#

Место общения программистов C#
Ответить
Anonymous
 Автозаполнение для DSharpPlus в C#

Сообщение Anonymous »

Как реализовать мгновенное автозаполнение, код ниже загружает элементы при использовании команды, я хочу загружать элементы при запуске бота, а затем команда day мгновенно получает аргументы при использовании / дней [день: ], см. пример кода, который я использую, но этот код загружает элементы при каждом вызове команды, и я хочу, чтобы элементы уже были загружены и чтобы не было задержки
См. пример кода ниже:
Команда:
public class DaysCommand : ApplicationCommandModule
{
[SlashCommand("day", "Show the days of the week")]
public async Task Day(InteractionContext ctx, [Option("day", "Day"), Autocomplete(typeof(CommandAutocompleteProvider))] string day)
{
Console.WriteLine(day);
}
}

и автозаполнение:
using System.Collections.Generic;
using System.Threading.Tasks;
using DSharpPlus;
using DSharpPlus.Entities;
using DSharpPlus.SlashCommands;

namespace Bot.Utils
{
public class CommandAutocompleteProvider : IAutocompleteProvider
{
public Task Provider(AutocompleteContext ctx)
{
var choices = new List
{
new DiscordAutoCompleteChoice("Monday", "1"),
new DiscordAutoCompleteChoice("Sunday", "2"),
new DiscordAutoCompleteChoice("Tuesday", "3"),
new DiscordAutoCompleteChoice("Wednesday", "4"),
new DiscordAutoCompleteChoice("Thursday", "5"),
new DiscordAutoCompleteChoice("Friday", "6"),
new DiscordAutoCompleteChoice("Saturday", "7"),
};

return Task.FromResult((IEnumerable)choices);
}
}
}

Я попробовал использовать приведенный ниже код, который есть на официальном сайте библиотеки DSharpPlus, они сказали, что код будет делать то, что я ищу (загружать элементы по адресу запуск бота, если у меня уже есть предопределенные элементы)
namespace Bot.Utils
{
public class DaysOfTheWeekProvider : IChoiceProvider
{
private static readonly IReadOnlyList daysOfTheWeek =
[
new DiscordApplicationCommandOptionChoice("Sunday", 0),
new DiscordApplicationCommandOptionChoice("Monday", 1),
new DiscordApplicationCommandOptionChoice("Tuesday", 2),
new DiscordApplicationCommandOptionChoice("Wednesday", 3),
new DiscordApplicationCommandOptionChoice("Thursday", 4),
new DiscordApplicationCommandOptionChoice("Friday", 5),
new DiscordApplicationCommandOptionChoice("Saturday", 6),
];

public Task Provider()
{
return daysOfTheWeek;
}
}
}

Но я не смог реализовать это с помощью косой черты
public class DaysCommand : ApplicationCommandModule
{
[SlashCommand("test", "testing...")]
public async Task Day(InteractionContext ctx,
[Option("day", "Day"), SlashChoiceProvider] string day)
{
Console.WriteLine(day);
}
}

Вот какую ошибку я получаю:
Test.cs(113,27): error CS0246: The type or namespace name 'SlashChoiceProviderAttribute' could not be found (are you missing a using directive or an assembly reference?)
Test.cs(113,27): error CS0246: The type or namespace name 'SlashChoiceProvider' could not be found (are you missing a using directive or an assembly reference?)


Подробнее здесь: https://stackoverflow.com/questions/793 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»