Как реализовать мгновенное автозаполнение, код ниже загружает элементы при использовании команды, я хочу загружать элементы при запуске бота, а затем команда 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
Автозаполнение для DSharpPlus в C# ⇐ C#
Место общения программистов C#
1734995215
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?)
Подробнее здесь: [url]https://stackoverflow.com/questions/79304208/autocomplete-for-dsharpplus-in-c-sharp[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия