Установка аргументов в команде
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