Discord.js команда проверьте пустое пространство только один раз

#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"]
})