mirror of
https://github.com/FranP-code/Baileys.git
synced 2025-10-13 00:32:22 +00:00
fix(master): generate new message id
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import { proto } from '../../WAProto'
|
import { proto } from '../../WAProto'
|
||||||
import { GroupMetadata, GroupParticipant, ParticipantAction, SocketConfig, WAMessageKey, WAMessageStubType } from '../Types'
|
import { GroupMetadata, GroupParticipant, ParticipantAction, SocketConfig, WAMessageKey, WAMessageStubType } from '../Types'
|
||||||
import { generateMessageID, unixTimestampSeconds } from '../Utils'
|
import { generateMessageID, generateMessageIDV2, unixTimestampSeconds } from '../Utils'
|
||||||
import { BinaryNode, getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString, jidEncode, jidNormalizedUser } from '../WABinary'
|
import { BinaryNode, getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString, jidEncode, jidNormalizedUser } from '../WABinary'
|
||||||
import { makeChatsSocket } from './chats'
|
import { makeChatsSocket } from './chats'
|
||||||
|
|
||||||
@@ -272,7 +272,7 @@ export const makeGroupsSocket = (config: SocketConfig) => {
|
|||||||
{
|
{
|
||||||
key: {
|
key: {
|
||||||
remoteJid: inviteMessage.groupJid,
|
remoteJid: inviteMessage.groupJid,
|
||||||
id: generateMessageID(),
|
id: generateMessageIDV2(sock.user?.id),
|
||||||
fromMe: false,
|
fromMe: false,
|
||||||
participant: key.remoteJid,
|
participant: key.remoteJid,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import NodeCache from 'node-cache'
|
|||||||
import { proto } from '../../WAProto'
|
import { proto } from '../../WAProto'
|
||||||
import { DEFAULT_CACHE_TTLS, WA_DEFAULT_EPHEMERAL } from '../Defaults'
|
import { DEFAULT_CACHE_TTLS, WA_DEFAULT_EPHEMERAL } from '../Defaults'
|
||||||
import { AnyMessageContent, MediaConnInfo, MessageReceiptType, MessageRelayOptions, MiscMessageGenerationOptions, SocketConfig, WAMessageKey } from '../Types'
|
import { AnyMessageContent, MediaConnInfo, MessageReceiptType, MessageRelayOptions, MiscMessageGenerationOptions, SocketConfig, WAMessageKey } from '../Types'
|
||||||
import { aggregateMessageKeysNotFromMe, assertMediaContent, bindWaitForEvent, decryptMediaRetryData, encodeSignedDeviceIdentity, encodeWAMessage, encryptMediaRetryRequest, extractDeviceJids, generateMessageID, generateWAMessage, getStatusCodeForMediaRetry, getUrlFromDirectPath, getWAUploadToServer, parseAndInjectE2ESessions, unixTimestampSeconds } from '../Utils'
|
import { aggregateMessageKeysNotFromMe, assertMediaContent, bindWaitForEvent, decryptMediaRetryData, encodeSignedDeviceIdentity, encodeWAMessage, encryptMediaRetryRequest, extractDeviceJids, generateMessageID, generateMessageIDV2, generateWAMessage, getStatusCodeForMediaRetry, getUrlFromDirectPath, getWAUploadToServer, parseAndInjectE2ESessions, unixTimestampSeconds } from '../Utils'
|
||||||
import { getUrlInfo } from '../Utils/link-preview'
|
import { getUrlInfo } from '../Utils/link-preview'
|
||||||
import { areJidsSameUser, BinaryNode, BinaryNodeAttributes, getBinaryNodeChild, getBinaryNodeChildren, isJidGroup, isJidUser, jidDecode, jidEncode, jidNormalizedUser, JidWithDevice, S_WHATSAPP_NET } from '../WABinary'
|
import { areJidsSameUser, BinaryNode, BinaryNodeAttributes, getBinaryNodeChild, getBinaryNodeChildren, isJidGroup, isJidUser, jidDecode, jidEncode, jidNormalizedUser, JidWithDevice, S_WHATSAPP_NET } from '../WABinary'
|
||||||
import { makeGroupsSocket } from './groups'
|
import { makeGroupsSocket } from './groups'
|
||||||
@@ -314,7 +314,7 @@ export const makeMessagesSocket = (config: SocketConfig) => {
|
|||||||
const isStatus = jid === statusJid
|
const isStatus = jid === statusJid
|
||||||
const isLid = server === 'lid'
|
const isLid = server === 'lid'
|
||||||
|
|
||||||
msgId = msgId || generateMessageID()
|
msgId = msgId || generateMessageIDV2(sock.user?.id)
|
||||||
useUserDevicesCache = useUserDevicesCache !== false
|
useUserDevicesCache = useUserDevicesCache !== false
|
||||||
|
|
||||||
const participants: BinaryNode[] = []
|
const participants: BinaryNode[] = []
|
||||||
@@ -740,6 +740,7 @@ export const makeMessagesSocket = (config: SocketConfig) => {
|
|||||||
upload: waUploadToServer,
|
upload: waUploadToServer,
|
||||||
mediaCache: config.mediaCache,
|
mediaCache: config.mediaCache,
|
||||||
options: config.options,
|
options: config.options,
|
||||||
|
messageId: generateMessageIDV2(sock.user?.id),
|
||||||
...options,
|
...options,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { Boom } from '@hapi/boom'
|
import { Boom } from '@hapi/boom'
|
||||||
import axios, { AxiosRequestConfig } from 'axios'
|
import axios, { AxiosRequestConfig } from 'axios'
|
||||||
import { randomBytes } from 'crypto'
|
import { createHash, randomBytes } from 'crypto'
|
||||||
import { platform, release } from 'os'
|
import { platform, release } from 'os'
|
||||||
import { Logger } from 'pino'
|
import { Logger } from 'pino'
|
||||||
import { proto } from '../../WAProto'
|
import { proto } from '../../WAProto'
|
||||||
import { version as baileysVersion } from '../Defaults/baileys-version.json'
|
import { version as baileysVersion } from '../Defaults/baileys-version.json'
|
||||||
import { BaileysEventEmitter, BaileysEventMap, DisconnectReason, WACallUpdateType, WAVersion } from '../Types'
|
import { BaileysEventEmitter, BaileysEventMap, DisconnectReason, WACallUpdateType, WAVersion } from '../Types'
|
||||||
import { BinaryNode, getAllBinaryNodeChildren } from '../WABinary'
|
import { BinaryNode, getAllBinaryNodeChildren, jidDecode } from '../WABinary'
|
||||||
|
|
||||||
const PLATFORM_MAP = {
|
const PLATFORM_MAP = {
|
||||||
'aix': 'AIX',
|
'aix': 'AIX',
|
||||||
@@ -170,6 +170,27 @@ export async function promiseTimeout<T>(ms: number | undefined, promise: (resolv
|
|||||||
return p as Promise<T>
|
return p as Promise<T>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// inspired from whatsmeow code
|
||||||
|
// https://github.com/tulir/whatsmeow/blob/64bc969fbe78d31ae0dd443b8d4c80a5d026d07a/send.go#L42
|
||||||
|
export const generateMessageIDV2 = (userId?: string): string => {
|
||||||
|
const data = Buffer.alloc(8 + 20 + 16)
|
||||||
|
data.writeBigUInt64BE(BigInt(Math.floor(Date.now() / 1000)))
|
||||||
|
|
||||||
|
if (userId) {
|
||||||
|
const id = jidDecode(userId)
|
||||||
|
if (id?.user) {
|
||||||
|
data.write(id.user, 8)
|
||||||
|
data.write('@c.us', 8 + id.user.length)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const random = randomBytes(16)
|
||||||
|
random.copy(data, 28)
|
||||||
|
|
||||||
|
const hash = createHash('sha256').update(data).digest()
|
||||||
|
return '3EB0' + hash.toString('hex').toUpperCase().substring(0, 18)
|
||||||
|
}
|
||||||
|
|
||||||
// generate a random ID to attach to a message
|
// generate a random ID to attach to a message
|
||||||
export const generateMessageID = () => '3EB0' + randomBytes(18).toString('hex').toUpperCase()
|
export const generateMessageID = () => '3EB0' + randomBytes(18).toString('hex').toUpperCase()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user