#javascript #node.js #discord #discord.js
Вопрос:
когда кто-то вводит команду !add James Bond;Michael B Jordan
, аргумент принимает ее как арг «Джеймс»[0], арг «Бонд;Михал»[1], арг «Б»[2], арг «Джордан» [3]. Любым способом я могу сделать так, чтобы он учитывал только пустое пространство после «!добавить», а затем разделялся с помощью «;» ?. Окончательным ответом будут аргументы «Джеймс Бонд»[0], «Майкл Би Джордан»[1].
client.on('message',async(message)=>{
if(!message.content.startsWith(prefix2)||message.author.bot)return;
const args2=message.content.slice(prefix.length).trim().split(/ /);
const command= args2.shift().toLowerCase();
Это то, что я пробовал, но, похоже, это не работает
if(!message.content.startsWith(prefix2)||message.author.bot)return;
const args2=message.content.slice(prefix.length).trim().split(/ {1}[;] /);
const command= args2.shift().toLowerCase();
Спасибо
Ответ №1:
Поскольку мы знаем !add
, что в строке всегда будет 5 символов, мы можем обрезать эти 5 с помощью String.prototype.slice(). Затем это будет возвращено 'James Bond;Michael B Jordan'
, которое мы, конечно, можем разделить, ;
чтобы вернуть каждое имя в его собственном элементе массива.
client.on('message', async(message) => {
// message.content = '!add James Bond;Michael B Jordan'
const rawContent = message.content.slice(5);
const celebrityArguments = rawContent.split(';');
console.log(celebrityArguments);
// ["James Bond", "Michael B Jordan"]
})