ANTICHAT

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

Kecer 26.06.2022 01:47

Как достать айди сообщения из переменной 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

Liquit 26.06.2022 02:14

Можно сделать следующим образом:

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

Kecer 26.06.2022 02:28

Цитата:

Сообщение от 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, будет типа
Код:

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
:
{
}
}


Liquit 26.06.2022 02:29

Цитата:

Сообщение от 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

Kecer 26.06.2022 02:51

Цитата:

Сообщение от 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


Liquit 26.06.2022 04:40

Цитата:

Сообщение от 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

Kecer 26.06.2022 04:47

Цитата:

Сообщение от 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

Liquit 26.06.2022 14:14

я не использую конечно этот 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 - это контекст, т.е. по факту это уже готовый объект, который хранит в себе ид беседы куда, сам зафигачит радном_ид и вся фигня, тебе нужно всего лишь выбрать текст или прикрепить к сообщению что-то

Kecer 26.06.2022 14:42

Цитата:

Сообщение от 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 - это контекст, т.е. по факту это уже готовый объект, который хранит в себе ид беседы куда, сам зафигачит радном_ид и вся фигня, тебе нужно всего лишь выбрать текст или прикрепить к сообщению что-то

Всмысле, не совсем понял как не указывать айди беседы, яж делаю получается так, пишу в лс боту команду а он отправляет сообщение в беседу с определённым айди

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
)


Liquit 26.06.2022 15:37

Цитата:

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

Всмысле, не совсем понял как не указывать айди беседы, яж делаю получается так, пишу в лс боту команду а он отправляет сообщение в беседу с определённым айди

А, тогда надо указывать peer_id, только ошибка у тебя в том, что peer_id - 2*10^9 + номер беседы, а ты просто отправлял в первую, выше вроде правильный код

Kecer 26.06.2022 17:37

Цитата:

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

в
Код:

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/

В беседу не отправляет, отправляет туда куда и написал тобишь в лс

Kecer 26.06.2022 17:45

Цитата:

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

ты менял переменную chatForSend?

нет, подставил айдишник беседы своей и всё

Kecer 26.06.2022 18:03

Цитата:

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

ты должен менять это -
Код:

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
)
;



Вот фулл код

Цитата:

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

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, но всё ровно отправляет в лс

Kecer 26.06.2022 18:19

Цитата:

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

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

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

Цитата:

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

а, ну вот поэтому я не люблю отправлять в другие чаты с помощью контекста

он не для этого предназначен

замени

Код:





Код:

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)
});


Kecer 26.06.2022 18:41

Цитата:

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

а, ну вот поэтому я не люблю отправлять в другие чаты с помощью контекста
он не для этого предназначен
замени

Код:





Код:

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 пошёл, просто иза того что не мог получить айди сообщения😗

Liquit 26.06.2022 20:17

ошибка в 13 строке

Код:

const msg = await vk.api.messages.send({
а, чё-то я поздно, ладно


Время: 05:56