#javascript #node.js #args #twitch
Вопрос:
Я не могу понять, как заставить моего чат-бота принимать аргументы после команд.
Пример: !веса опроса [50, 60, 75]
Код:
client.on('message', (target, context, msg, self) => {
if (self) { return; }
const msgcon = msg.trim();
if (msgcon.startsWith('!')) {
if (msgcon === '!poll') {
client.say(target, '')
console.log(`* Executed ${msgcon} command at ${target}`);
} else {
console.log(`* Unknown command ${msgcon} attempted at ${target}`);
}
}
});
Как мне заставить его принимать аргументы?
Ответ №1:
поскольку тип аргумента для messsage-это просто строка, вы можете разделить ее с помощью метода .split.
const PREFIX = "!";
let [command, ...args] = message.slice(PREFIX.length).split(/ /g);
if (command == "!test") {
console.log({ command, args })
}
если пользователь, где сказать, напишите в чате !test one two three
, он выведет:
{
command: "!test",
args: ["one", "two", "three"]
}
это означает, что вы можете получить доступ к каждому аргументу, введя args[x]
(помните, что javascript отсчитывается от 0).
Пояснение: по сути, я получаю сообщение типа string и использую метод .slice для удаления префикса (значение команды очистки), а затем разбиваю сообщение на каждый пробел в строке, помещая его в массив. первый элемент в массиве будет задан в качестве команды, в то время как остальные являются аргументами.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice