ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   бот вк (https://forum.antichat.xyz/showthread.php?t=1418836)

Kecer 24.01.2022 17:55

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

JavaScript:





Код:

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



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

meowprd 24.01.2022 18:26

с js особо не дружу

пример ввода:

Код:

!test string1 string2
регулярка:

Код:

^!test (\w+) (\w+)$
https://forum.antichat.xyz/attachments/27953838/

chapo 24.01.2022 18:27

Код:

(.+)(%s+)(.+)

Kecer 24.01.2022 18:34

Цитата:

Сообщение от chapo

Код:

(.+)(%s+)(.+)

Го реально работает спасибки, ещё такой вопрос можно ли как-то проверку на эти регулярки сделать то есть допустим как пример

if(!msg.$match[2]) return msg.send('Вы не указали параметр')

Liquit 24.01.2022 18:50

регулярки может и удобно, но я предлагаю реализовать немного по удобнее, например так:

JavaScript:





Код:

if
(
ctx
.
text
.
startsWith
(
prefix
)
)
{
let
msgToParse
=
ctx
.
text
.
slice
(
prefix
.
length
)
// чикчирикаем префикс
let
params
=
msgToParse
.
split
(
" "
)
// парсим строку
let
cmd
=
params
[
0
]
// получаем переменную
// все остальные параметры - params[1], params[2] и так далее, в зависимости от того, что нужно сделать
}



так, я думаю будет удобнее работать с параметрами

вот, к примеру реализация простейшей команды, которая будет приветствовать пользователя(я не претендую на красивый код, давно писал, сам знаю что фигово написано, лучше промисом сделать)

JavaScript:





Код:

if
(
cmd
==
"get"
&&
params
[
1
]
.
length
!=
0
)
{
let
user
await
vk
.
api
.
users
.
get
(
{
user_ids
:
getIdFromString
(
params
[
1
]
)
}
)
.
then
(
res
=>
{
user
=
res
}
)
console
.
log
(
user
[
0
]
.
first_name
)
if
(
user
)
{
ctx
.
send
(
`Hello, [id${user[0].id}|${user[0].first_name}]`
)
}
}


Kecer 24.01.2022 18:58

Цитата:

Сообщение от Liquit

регулярки может и удобно, но я предлагаю реализовать немного по удобнее, например так:

JavaScript:





Код:

if
(
ctx
.
text
.
startsWith
(
prefix
)
)
{
let
msgToParse
=
ctx
.
text
.
slice
(
prefix
.
length
)
// чикчирикаем префикс
let
params
=
msgToParse
.
split
(
" "
)
// парсим строку
let
cmd
=
params
[
0
]
// получаем переменную
// все остальные параметры - params[1], params[2] и так далее, в зависимости от того, что нужно сделать
}



так, я думаю будет удобнее работать с параметрами
вот, к примеру реализация простейшей команды, которая будет приветствовать пользователя(я не претендую на красивый код, давно писал, сам знаю что фигово написано, лучше промисом сделать)

JavaScript:





Код:

if
(
cmd
==
"get"
&&
params
[
1
]
.
length
!=
0
)
{
let
user
await
vk
.
api
.
users
.
get
(
{
user_ids
:
getIdFromString
(
params
[
1
]
)
}
)
.
then
(
res
=>
{
user
=
res
}
)
console
.
log
(
user
[
0
]
.
first_name
)
if
(
user
)
{
ctx
.
send
(
`Hello, [id${user[0].id}|${user[0].first_name}]`
)
}
}



Очень заморочено, код у меня большой, и всё подстроить под это будет очень сложно потому-что регулярки у меня используется почти везде

Liquit 24.01.2022 19:09

Цитата:

Сообщение от Kecer

Очень заморочено, код у меня большой, и всё подстроить под это будет очень сложно потому-что регулярки у меня используется почти везде

ну переделай остальное, так код хотя бы становится более читабельней

Kecer 24.01.2022 19:30

Цитата:

Сообщение от chapo

Код:

(.+)(%s+)(.+)

поспешил я с выводами, оно так же криво работает как и работало ранее, мб чёто не так делаю можно пример?

feelzyourertry 24.01.2022 19:31

мужики подобная ***ня приносит свои плоды в виде бабок?

Kecer 24.01.2022 19:37

Цитата:

Сообщение от feelzyourertry

мужики подобная ***ня приносит свои плоды в виде бабок?

Ты хочешь что бы я тебе заплатил денег за то что ты уделишь мне 3 - 4 минуты?


Время: 08:04