Перейти к основному содержимому

Установка аргументов в команде

Evogram предоставляет удобный инструмент получения нужных данных от пользователя для команды. На данный момент существует 4 встроенных типа принятия аргументов, которые мы изучим. Также рассмотрим, как указывать аргументы команды.

Для того, чтобы установить аргументы команды, необходимо в CommandHandler указать args, который отвечает за аргументы команды. Давайте рассмотрим пример:

@CommandHandler({
name: "example",
args: {
// Метод принятия аргументов. Обязательный параметр
method: "parameterized",
// Список аргументов, которые необходимо получить. Данные передаются с таким же названием, как и было указано. Обязательный параметр
value: ["argument1", "argument2"]
}
})
class ExampleCommand extends Command {
execute(message: MessageContext, data: ICommandExecuteData) {
message.send(`Вы указали следующие параметры:\n- argument1: ${data.args.value1}\n- argument2: ${data.args.value2}`);
}
}

Мы установили в нашу команду запрос двух аргументов (value1, value2), а также указали метод запроса аргументов: parameterized. При выполнении команды с указанием аргументов, в ответ бот нам отправит то, что мы указали.

примечание

Запрашиваемые данные можно получить во втором аргументе метода execute, с помощью ключа args. В объекте все полученные от пользователя аргументы.

execute(message: MessageContext, data: ICommandExecuteData) {
console.log(data.args["argumentName"]);
}
к сведению

Можно указать несколько методов принятия аргументов, для этого необходимо указать массив вместо строки, с перечислением нужных вам методов.

@CommandHandler({
name: "example",
args: {
method: ["parameterized", "stdin"],
value: ["argument1", "argument2"]
}
})

Методы принятия аргументов

Существует 4 метода принятия аргументов, каждый из которых мы сейчас расмотрим.

Parameterized

Данный метод позволяет принимать аргументы в формате --param=value.

Использование команды при данном методе
- Пользователь: /example --argument1=value1 --argument2=value2
- Бот: Вы указали следующие параметры:
- argument1: value1
- argument2: value2

Space

С помощью этого метода Вы можете получать аргументы, которые перечисляются через пробел

Использование команды при данном методе
- Пользователь: /example value1 value2
- Бот: Вы указали следующие параметры:
- argument1: value1
- argument2: value2

FullText

Самый простой метод принятия аргумента. Он позволяет принимать лишь один аргумент, который является всей строкой, что идет после команды.

Использование команды при данном методе
- Пользователь: /example здесь будет текст, который является одним аргументом
- Бот: Вы указали следующие параметры:
- argument1: здесь будет текст, который является одним аргументом

STDIN

Когда пользователь вводит команду, ему не нужно после названия указывать определенные аргументы. Ваш бот сам спросит все нужные аргументы по списку, а после выполнит команды.

Использование команды при данном методе
- Пользователь: /example
- Бот: The "argument1" parameter is required for the command to work. Send the value in the following message
- Пользователь: value1
- Бот: The "argument2" parameter is required for the command to work. Send the value in the following message
- Пользователь: value2
- Бот: Вы указали следующие параметры:
- argument1: value1
- argument2: value2

Установка своего сообщения запроса аргумента

Установить свой текст сообщения можно передав вместо строки с названием массив, состоящий из названия аргумента и его доп. параметров

@CommandHandler({
name: "example",
args: {
method: "stdin",
value: [["argument1", { question: "Какое значение Вы хотите передать?" }]]
}
})

На данный момент указать можно только question, что изменяет текст запроса аргумента.

При указанной настройке вызов команды будет выглядить так:

- Пользователь: /example
- Бот: Какое значение Вы хотите передать?
- Пользователь: value1
- Бот: Вы указали следующие параметры:
- argument1: value1