c# discord. net Как получить ввод при выполнении команды - PullRequest
0 голосов
/ 19 июня 2020

Я делал Discord-бота с помощью Discord. net. Затем, используя команду «поиск», я получаю новый чат и выбираю число от 1 до 5, чтобы работать. Что я должен делать? Это часть исходного кода.

'' '

[Command("search")]
public async Task Search()
{
    await ReplyAsync("Choose number from 1 to 5");

    int number = 0;

    //number = WaitCommand(); <= How can I make this?

    await ReplyAsync($"Your number is {number}.");
}

' ''

Для этой проблемы нет доступных параметров метода. Есть способ?

1 Ответ

0 голосов
/ 21 июля 2020

Если на это еще нет ответа, вы можете добавить params string[] args в качестве параметра функции вашей команды. Все, что пользователь пишет после вашей команды, затем будет проанализировано. Я изменил вашу команду, чтобы работать с этим.

[Command("search")]
    public async Task Search(params string[] args)
    {
        if(args.Length == 0 || !int.TryParse(args[0], out int number))
        {
            await ReplyAsync("You have to enter a number!");
            return;
        }

        await ReplyAsync($"Your number is {number}.");
    }

[prefix]search теперь выдаст «Вы должны ввести число!» [prefix]search 3 выводит «Ваш номер 3».

Или, если вы предпочитаете запрашивать у пользователя номер после того, как он использует команду, вы можете сохранить идентификатор текущего пользователя и дождаться его следующего сообщения, используя Discord.MessageReceived и используйте это в другой функции.

...