Просмотр полной версии : node js как достать айди из сообщения
Как достать айди сообщения из переменной 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
Можно сделать следующим образом:
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, будет типа
message.peer_id
скорее всего
пэ эс. console.log(message) выведет тебе объект в консоль, нужно тупо глянуть как называется переменная в объекте и вписать вместо peer_id и message_id
Можно сделать следующим образом:
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, будет типа
message.peer_id
скорее всего
пэ эс. 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
:
{
}
}
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
conversationMessageId и peerId
Тока оно почему-то в conversationMessageId 0 ставит постоянно, теперь вот такая ошибка
JavaScript:
Code №
100
-
One
of
the parameters specified was missing or invalid
:
message_id and conversation_message_id is
undefined
Тока оно почему-то в 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
а почему у тебя сообщение отправляется в 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
я не использую конечно этот 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 - это контекст, т.е. по факту это уже готовый объект, который хранит в себе ид беседы куда, сам зафигачит радном_ид и вся фигня, тебе нужно всего лишь выбрать текст или прикрепить к сообщению что-то
я не использую конечно этот 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 - это контекст, т.е. по факту это уже готовый объект, который хранит в себе ид беседы куда, сам зафигачит радном_ид и вся фигня, тебе нужно всего лишь выбрать текст или прикрепить к сообщению что-то
Всмысле, не совсем понял как не указывать айди беседы, яж делаю получается так, пишу в лс боту команду а он отправляет сообщение в беседу с определённым айди
neverlane
26.06.2022, 15:00
в
chatForSend
находиться 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
)
Всмысле, не совсем понял как не указывать айди беседы, яж делаю получается так, пишу в лс боту команду а он отправляет сообщение в беседу с определённым айди
А, тогда надо указывать peer_id, только ошибка у тебя в том, что peer_id - 2*10^9 + номер беседы, а ты просто отправлял в первую, выше вроде правильный код
в
chatForSend
находиться 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
)
https://forum.antichat.xyz/attachments/28070789/
В беседу не отправляет, отправляет туда куда и написал тобишь в лс
ты менял переменную chatForSend?
нет, подставил айдишник беседы своей и всё
ты должен менять это -
const chatForSend = 1
вместо 1 ставь свой чат ид беседы
если все так же - скинь код и что ты там изменил
JavaScript:
const
{
VK
,
getRandomId
,
Keyboard
,
CollectError
}
=
require
(
'vk-io'
)
const
vk
=
new
VK
(
{
token
:
"token"
}
)
const
{
HearManager
}
=
require
(
'@vk-io/hear'
)
const
fs
=
require
(
'fs'
)
;
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
)
}
)
console
.
log
(
"ok"
)
;
vk
.
updates
.
start
(
)
.
catch
(
console
.
error
)
;
Вот фулл код
JavaScript:
const
{
VK
,
getRandomId
,
Keyboard
,
CollectError
}
=
require
(
'vk-io'
)
const
vk
=
new
VK
(
{
token
:
"token"
}
)
const
{
HearManager
}
=
require
(
'@vk-io/hear'
)
const
fs
=
require
(
'fs'
)
;
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
)
}
)
console
.
log
(
"ok"
)
;
vk
.
updates
.
start
(
)
.
catch
(
console
.
error
)
;
Вот фулл код
айди беседы у меня один, соответсвенно в chatForSend стоит 1, но всё ровно отправляет в лс
значит неправильный чат ид, потому что код рабочий
проверяй этой командой
JavaScript:
bot
.
hear
(
"/getchat"
,
async
message
=>
{
message
.
reply
(
`peerId =${message.peerId}chatId =${message.chatId}`
)
}
)
;
https://forum.antichat.xyz/attachments/28070840/
neverlane
26.06.2022, 18:33
а, ну вот поэтому я не люблю отправлять в другие чаты с помощью контекста
он не для этого предназначен
замени
Код:
bot.hear("/sendToAnotherChat", async message => {
message.reply(`send to chat ${chatForSend}`)
const msg = await vk.api.messages.send({
message: "отправлено из shiruwatch",
peer_ids: [2e9 + chatForSend],
random_id: getRandomId()
})
setTimeout(() => {
vk.api.messages.edit({
conversation_message_id: msg.shift().conversation_message_id,
peer_id: 2e9 + chatForSend,
message: "edited."
})
}, 1500)
});
а, ну вот поэтому я не люблю отправлять в другие чаты с помощью контекста
он не для этого предназначен
замени
Код:
bot.hear("/sendToAnotherChat", async message => {
message.reply(`send to chat ${chatForSend}`)
const msg = await vk.api.messages.send({
message: "отправлено из shiruwatch",
peer_ids: [2e9 + chatForSend],
random_id: getRandomId()
})
setTimeout(() => {
vk.api.messages.edit({
conversation_message_id: msg.shift().conversation_message_id,
peer_id: 2e9 + chatForSend,
message: "edited."
})
}, 1500)
});
О ДА, Я НЕ ЗНАЮ КАК ТЕБЯ БЛАГОДАРИТЬ СПАСИБО ТЕБЕ!
С этим приколом мучался 2 дня, сейчас 3 пошёл, просто иза того что не мог получить айди сообщения😗
ошибка в 13 строке
const msg = await vk.api.messages.send({
а, чё-то я поздно, ладно
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot