JS бот вк

Kecer

Участник
Автор темы
241
11
Добрый день, пишу бота вк и хотел бы найти замену на регулярные вырежния

JavaScript:
bot.hear(/^(?:!test) (.*)$/i, msg => {
    msg.send(`${msg.$match[1]}`)
})

В общем проблема в том что когда я делаю 2 и более регулярных выражения, то-есть (.*) (.*) То в таком случае оно принимает одно слово, это и логично, но как сделать так что бы одно из регулярных выражений принимало несколько слов? без ограничений
 
Решение

В приоритете у меня сделать команду кик с причиной, команда у меня уже есть, но когда я ввожу причину у меня вводится туда последнее слово, а первое слово вводится в msg.$match[1] то-есть туда где нужно указывать айди пользователя
Можно так:
JavaScript:
bot.hear(/^(?:!test) (\w+) (.*)$/i, msg => {
    msg.send(`ID: ${msg.$match[1]}\n Reason: ${msg.$match[2]}`)
})

Или так:

JavaScript:
bot.hear(/^(?:!test) (.*)$/i, msg => {
    const params = msg.$match[1].split(" ")
    const id = params.shift()
    const reason = params.join(" ")
    msg.send(`ID: ${id}\nReason: ${reason}`)
})

Kecer

Участник
Автор темы
241
11
Так спрашиваю, какой формат вывода тебе надо??
как обычный текст
1643042386652.png

В приоритете у меня сделать команду кик с причиной, команда у меня уже есть, но когда я ввожу причину у меня вводится туда последнее слово, а первое слово вводится в msg.$match[1] то-есть туда где нужно указывать айди пользователя
 

molimawka

Известный
Друг
443
648

В приоритете у меня сделать команду кик с причиной, команда у меня уже есть, но когда я ввожу причину у меня вводится туда последнее слово, а первое слово вводится в msg.$match[1] то-есть туда где нужно указывать айди пользователя
Можно так:
JavaScript:
bot.hear(/^(?:!test) (\w+) (.*)$/i, msg => {
    msg.send(`ID: ${msg.$match[1]}\n Reason: ${msg.$match[2]}`)
})

Или так:

JavaScript:
bot.hear(/^(?:!test) (.*)$/i, msg => {
    const params = msg.$match[1].split(" ")
    const id = params.shift()
    const reason = params.join(" ")
    msg.send(`ID: ${id}\nReason: ${reason}`)
})
 

Kecer

Участник
Автор темы
241
11
Можно так:
JavaScript:
bot.hear(/^(?:!test) (\w+) (.*)$/i, msg => {
    msg.send(`ID: ${msg.$match[1]}\n Reason: ${msg.$match[2]}`)
})

Или так:

JavaScript:
bot.hear(/^(?:!test) (.*)$/i, msg => {
    const params = msg.$match[1].split(" ")
    const id = params.shift()
    const reason = params.join(" ")
    msg.send(`ID: ${id}\nReason: ${reason}`)
})
слушай, первый способ я так и делал примерно, он не очень хорошо работал, а вот второй это просто бомба, ты мне спас несколько лет моих мучений ОГРОМНОЕ ТЕБЕ СПАСИБО, если не сложно объясни что значит эти три константы в 2 способе, на будущее будет полезно, заранее тебе спасибки
 

neverlane

t.me/neverlane00
Друг
997
1,132
слушай, первый способ я так и делал примерно, он не очень хорошо работал, а вот второй это просто бомба, ты мне спас несколько лет моих мучений ОГРОМНОЕ ТЕБЕ СПАСИБО, если не сложно объясни что значит эти три константы в 2 способе, на будущее будет полезно, заранее тебе спасибки
params - аргументы в виде массива, разделенные пробелом
id - первый элемент из массива(он так же удалятся из массива)
reason - все остальные элементы массива соединенные пробелом с помощью join