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,

Может быть у кого то есть идеи? И вообще, возможно ли это?


Ответы (0 шт):