DSharpPlus: динамический Choice
Пишу бота просто так, для саморазвития. Мне нужно получать из БД данные и записывать их в Choice слэш команды. Я хочу, чтобы это все происходило без перезапуска бота, то-есть (допустим) каждую минуту он проверял БД.
Я попробовал этот код, который мне написал GPT (+ я его немного доработал), и он работает, но только один раз, то-есть он не обновляется после добавления в БД новой информации, и мне приходится перезапускать бота для того чтобы он это инициализировал как Choice.
public class TankChoiceProvider : IChoiceProvider
{
public async Task<IEnumerable<DiscordApplicationCommandOptionChoice>> Provider()
{
List<DiscordApplicationCommandOptionChoice> choices = new List<DiscordApplicationCommandOptionChoice>();
using (SqlConnection sql = new SqlConnection(connectionString))
{
await sql.OpenAsync();
string TanksGet = "SELECT TankIdentity FROM Tanks";
using (SqlCommand Command = new SqlCommand(TanksGet, sql))
{
using (SqlDataReader reader = await Command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
string name = reader.GetString(0);
object choiceValue = reader.GetValue(0);
choices.Add(new DiscordApplicationCommandOptionChoice(name, choiceValue.ToString()));
}
}
}
}
return choices;
}
}
[SlashCommand("fight", "Сразитесь с другим танком")]
public async Task Fight(InteractionContext ctx,
[ChoiceProvider(typeof(TankChoiceProvider))]
[Option("танк", "Введите название вашего танка")] string tank,
Может быть у кого то есть идеи? И вообще, возможно ли это?