 |
|

26.06.2022, 01:47
|
|
Участник форума
Регистрация: 05.12.2020
Сообщений: 241
С нами:
2862489
Репутация:
18
|
|
Как достать айди сообщения из переменной message, что бы в дальнейшем отредактировать это сообщение, вроде всё сделал правильно но когда пытаюсь запустить функцию мне выдаёт ошибку
JavaScript :
Код:
Code №
100
-
One
of
the parameters specified was missing or invalid
:
message_id not integer
Вот код
JavaScript :
Код:
bot
.
hear
(
/^(?:\/test)$/i
,
async
msg
=>
{
const
message
=
await
msg
.
send
(
{
message
:
'command'
,
chat_id
:
1
,
random_id
:
getRandomId
(
)
}
)
message
.
editMessage
(
{
message
:
'test5'
,
peer_id
:
2000000001
,
message_id
:
message
}
)
}
)
Пояснение:
Я хочу реализовать следующую вещь, я пишу боту в лс /test, бот отправляет в чат под номером 1 сообщение "command", и после его редактирует на "test5", проблема заключается в том, что всё работает, после написания команды /test бот отправляет сообщение "command" в чат, но после выдаёт выше сказанную ошибку, то-есть он не может найти айди сообщения
Вот полная ошибка:
JavaScript :
Код:
APIError
:
Code №
100
-
One
of
the parameters specified was missing or invalid
:
message_id not integer
at SequentialWorker
.
execute
(
C
:
\Users\usr\Desktop\payload test\node_modules\vk
-
io\lib\index
.
js
:
1670
:
39
)
at
processTicksAndRejections
(
node:internal/process/task_queues:96:5
)
{
code
:
100
,
params
:
[
{
key
:
'method'
,
value
:
'messages.edit'
}
,
{
key
:
'oauth'
,
value
:
'1'
}
,
{
key
:
'v'
,
value
:
'5.131'
}
,
{
key
:
'attachment'
,
value
:
''
}
,
{
key
:
'message'
,
value
:
'test5'
}
,
{
key
:
'keep_forward_messages'
,
value
:
'1'
}
,
{
key
:
'keep_snippets'
,
value
:
'1'
}
,
{
key
:
'peer_id'
,
value
:
'393032625'
}
,
{
key
:
'message_id'
,
value
:
'[object MessageContext]'
}
,
{
key
:
'conversation_message_id'
,
value
:
'0'
}
]
,
[
cause
]
:
undefined
}
Пользуюсь библиотеками:
• vk-io v4.6.0
• @vk-io/hear
• node js v 16.15.1
|
|
|

26.06.2022, 02:14
|
|
Участник форума
Регистрация: 23.04.2020
Сообщений: 278
С нами:
3188613
Репутация:
98
|
|
Можно сделать следующим образом:
JavaScript :
Код:
bot
.
hear
(
/^(?:\/test)$/i
,
async
msg
=>
{
await
msg
.
send
(
{
message
:
'command'
,
chat_id
:
1
,
random_id
:
getRandomId
(
)
}
)
.
then
(
message
=>
{
//console.log(message) - посмотреть как называется(наверное будет что-то .id)
message
.
editMessage
(
{
message
:
'test5'
,
peer_id
:
2000000001
,
message_id
:
message
.
id
/*не факт, что будет именно .id, посмотреть надо, а мне лень*/
}
)
}
)
}
)
и да, peer_id тоже будет хранится в переменной message, будет типа
скорее всего
пэ эс. console.log(message) выведет тебе объект в консоль, нужно тупо глянуть как называется переменная в объекте и вписать вместо peer_id и message_id
|
|
|

26.06.2022, 02:28
|
|
Участник форума
Регистрация: 05.12.2020
Сообщений: 241
С нами:
2862489
Репутация:
18
|
|
Сообщение от Liquit
Можно сделать следующим образом:
JavaScript :
Код:
bot
.
hear
(
/^(?:\/test)$/i
,
async
msg
=>
{
await
msg
.
send
(
{
message
:
'command'
,
chat_id
:
1
,
random_id
:
getRandomId
(
)
}
)
.
then
(
message
=>
{
//console.log(message) - посмотреть как называется(наверное будет что-то .id)
message
.
editMessage
(
{
message
:
'test5'
,
peer_id
:
2000000001
,
message_id
:
message
.
id
/*не факт, что будет именно .id, посмотреть надо, а мне лень*/
}
)
}
)
}
)
и да, peer_id тоже будет хранится в переменной message, будет типа
скорее всего
пэ эс. console.log(message) выведет тебе объект в консоль, нужно тупо глянуть как называется переменная в объекте и вписать вместо peer_id и message_id
JavaScript :
Код:
MessageContext
{
id
:
0
,
conversationMessageId
:
0
,
peerId
:
393032625
,
peerType
:
'user'
,
senderId
:
393032625
,
senderType
:
'user'
,
createdAt
:
1656196078
,
updatedAt
:
undefined
,
pinnedAt
:
undefined
,
text
:
undefined
,
forwards
:
MessageForwardsCollection
(
0
)
[
]
,
attachments
:
[
]
,
isOutbox
:
true
,
type
:
'message'
,
subTypes
:
[
'message_new'
]
,
state
:
{
}
}
|
|
|

26.06.2022, 02:29
|
|
Участник форума
Регистрация: 23.04.2020
Сообщений: 278
С нами:
3188613
Репутация:
98
|
|
Сообщение от Kecer
JavaScript :
Код:
MessageContext
{
id
:
0
,
conversationMessageId
:
0
,
peerId
:
393032625
,
peerType
:
'user'
,
senderId
:
393032625
,
senderType
:
'user'
,
createdAt
:
1656196078
,
updatedAt
:
undefined
,
pinnedAt
:
undefined
,
text
:
undefined
,
forwards
:
MessageForwardsCollection
(
0
)
[
]
,
attachments
:
[
]
,
isOutbox
:
true
,
type
:
'message'
,
subTypes
:
[
'message_new'
]
,
state
:
{
}
}
conversationMessageId и peerId
|
|
|

26.06.2022, 02:51
|
|
Участник форума
Регистрация: 05.12.2020
Сообщений: 241
С нами:
2862489
Репутация:
18
|
|
Сообщение от Liquit
conversationMessageId и peerId
Тока оно почему-то в conversationMessageId 0 ставит постоянно, теперь вот такая ошибка
JavaScript :
Код:
Code №
100
-
One
of
the parameters specified was missing or invalid
:
message_id and conversation_message_id is
undefined
|
|
|

26.06.2022, 04:40
|
|
Участник форума
Регистрация: 23.04.2020
Сообщений: 278
С нами:
3188613
Репутация:
98
|
|
Сообщение от Kecer
Тока оно почему-то в conversationMessageId 0 ставит постоянно, теперь вот такая ошибка
JavaScript :
Код:
Code №
100
-
One
of
the parameters specified was missing or invalid
:
message_id and conversation_message_id is
undefined
а почему у тебя сообщение отправляется в chat_id 1? это должен быть по идее msg.reply
|
|
|

26.06.2022, 04:47
|
|
Участник форума
Регистрация: 05.12.2020
Сообщений: 241
С нами:
2862489
Репутация:
18
|
|
Сообщение от Liquit
а почему у тебя сообщение отправляется в chat_id 1? это должен быть по идее msg.reply
не понял, что за msg.reply
Прикол в том что я с этой ошибкой уже мучаюсь 2 дня,
JavaScript :
Код:
bot
.
hear
(
/^(?:\/test)$/i
,
async
msg
=>
{
await
msg
.
send
(
{
message
:
'command'
,
chat_id
:
1
,
random_id
:
getRandomId
(
)
}
)
.
then
(
message
=>
{
console
.
log
(
msg
)
}
)
}
)
Вот когда я в консоль лог вывожу msg, то у меня выводится всё, и айди сообщения и текст его и кто отправил
JavaScript :
Код:
MessageContext
{
id
:
0
,
conversationMessageId
:
204
,
peerId
:
2000000001
,
peerType
:
'chat'
,
senderId
:
393032625
,
senderType
:
'user'
,
createdAt
:
1656204564
,
updatedAt
:
undefined
,
pinnedAt
:
undefined
,
text
:
'/test'
,
forwards
:
MessageForwardsCollection
(
0
)
[
]
,
attachments
:
[
]
,
isOutbox
:
false
,
'$match'
:
[
'/test'
,
index
:
0
,
input
:
'/test'
,
groups
:
undefined
]
,
type
:
'message'
,
subTypes
:
[
'message_new'
]
,
state
:
{
}
}
А сообщение которое я отправил в беседу
JavaScript :
Код:
bot
.
hear
(
/^(?:\/test)$/i
,
async
msg
=>
{
await
msg
.
send
(
{
message
:
'command'
,
chat_id
:
1
,
random_id
:
getRandomId
(
)
}
)
.
then
(
message
=>
{
console
.
log
(
message
)
}
)
}
)
оно его попросту не видит
JavaScript :
Код:
MessageContext
{
id
:
0
,
conversationMessageId
:
0
,
peerId
:
2000000001
,
peerType
:
'chat'
,
senderId
:
393032625
,
senderType
:
'user'
,
createdAt
:
1656204696
,
updatedAt
:
undefined
,
pinnedAt
:
undefined
,
text
:
undefined
,
forwards
:
MessageForwardsCollection
(
0
)
[
]
,
attachments
:
[
]
,
isOutbox
:
true
,
type
:
'message'
,
subTypes
:
[
'message_new'
]
,
state
:
{
}
}
У него постоянно conversationMessageId: 0
Текст сообщения undefined
|
|
|

26.06.2022, 14:14
|
|
Участник форума
Регистрация: 23.04.2020
Сообщений: 278
С нами:
3188613
Репутация:
98
|
|
я не использую конечно этот hear, но у меня всё отлично работает и в лс и в беседе
JavaScript :
Код:
vk
.
updates
.
on
(
"message_new"
,
async
(
ctx
)
=>
{
if
(
ctx
.
senderId
==
242231003
)
{
ctx
.
send
(
"hello"
)
.
then
(
message
=>
{
console
.
log
(
message
)
setTimeout
(
(
)
=>
{
vk
.
api
.
messages
.
edit
(
{
message
:
"hello again"
,
conversation_message_id
:
message
.
conversationMessageId
,
peer_id
:
message
.
peerId
}
)
}
,
1000
)
}
)
}
}
)
тебе вовсе не надо указывать дополнительные параметры в msg.send. msg - это контекст, т.е. по факту это уже готовый объект, который хранит в себе ид беседы куда, сам зафигачит радном_ид и вся фигня, тебе нужно всего лишь выбрать текст или прикрепить к сообщению что-то
|
|
|

26.06.2022, 14:42
|
|
Участник форума
Регистрация: 05.12.2020
Сообщений: 241
С нами:
2862489
Репутация:
18
|
|
Сообщение от Liquit
я не использую конечно этот hear, но у меня всё отлично работает и в лс и в беседе
JavaScript :
Код:
vk
.
updates
.
on
(
"message_new"
,
async
(
ctx
)
=>
{
if
(
ctx
.
senderId
==
242231003
)
{
ctx
.
send
(
"hello"
)
.
then
(
message
=>
{
console
.
log
(
message
)
setTimeout
(
(
)
=>
{
vk
.
api
.
messages
.
edit
(
{
message
:
"hello again"
,
conversation_message_id
:
message
.
conversationMessageId
,
peer_id
:
message
.
peerId
}
)
}
,
1000
)
}
)
}
}
)
тебе вовсе не надо указывать дополнительные параметры в msg.send. msg - это контекст, т.е. по факту это уже готовый объект, который хранит в себе ид беседы куда, сам зафигачит радном_ид и вся фигня, тебе нужно всего лишь выбрать текст или прикрепить к сообщению что-то
Всмысле, не совсем понял как не указывать айди беседы, яж делаю получается так, пишу в лс боту команду а он отправляет сообщение в беседу с определённым айди
|
|
|

26.06.2022, 15:00
|
|
Познавший АНТИЧАТ
Регистрация: 01.11.2018
Сообщений: 1,010
С нами:
3964085
Репутация:
183
|
|
в
находиться id чата
JavaScript :
Код:
import
{
VK
}
from
"vk-io"
import
{
HearManager
}
from
"@vk-io/hear"
const
vk
=
new
VK
(
{
token
:
"token"
}
)
const
bot
=
new
HearManager
(
)
const
chatForSend
=
1
vk
.
updates
.
on
(
"message_new"
,
bot
.
middleware
)
bot
.
hear
(
"/sendToAnotherChat"
,
async
message
=>
{
message
.
reply
(
`send to chat${chatForSend}`
)
const
msg
=
await
message
.
send
(
{
message
:
"отправлено из shiruwatch"
,
peer_ids
:
2e9
+
chatForSend
}
)
setTimeout
(
(
)
=>
{
msg
.
editMessage
(
{
message
:
"root???????????"
}
)
}
,
1500
)
}
)
vk
.
updates
.
start
(
)
.
then
(
(
)
=>
console
.
log
(
"updates started"
)
)
.
catch
(
console
.
error
)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|