diff --git a/src/Types/Message.ts b/src/Types/Message.ts index 3d9e17a0..ff73c7d6 100644 --- a/src/Types/Message.ts +++ b/src/Types/Message.ts @@ -39,6 +39,39 @@ export type WAMediaUpload = Buffer | WAMediaPayloadStream | WAMediaPayloadURL /** Set of message types that are supported by the library */ export type MessageType = keyof proto.Message +export type MessageWithContextInfo = + | 'imageMessage' + | 'contactMessage' + | 'locationMessage' + | 'extendedTextMessage' + | 'documentMessage' + | 'audioMessage' + | 'videoMessage' + | 'call' + | 'contactsArrayMessage' + | 'liveLocationMessage' + | 'templateMessage' + | 'stickerMessage' + | 'groupInviteMessage' + | 'templateButtonReplyMessage' + | 'productMessage' + | 'listMessage' + | 'orderMessage' + | 'listResponseMessage' + | 'buttonsMessage' + | 'buttonsResponseMessage' + | 'interactiveMessage' + | 'interactiveResponseMessage' + | 'pollCreationMessage' + | 'requestPhoneNumberMessage' + | 'messageHistoryBundle' + | 'eventMessage' + | 'newsletterAdminInviteMessage' + | 'albumMessage' + | 'stickerPackMessage' + | 'pollResultSnapshotMessage' + | 'messageHistoryNotice' + export type DownloadableMessage = { mediaKey?: Uint8Array | null; directPath?: string | null; url?: string | null } export type MessageReceiptType = diff --git a/src/Utils/messages.ts b/src/Utils/messages.ts index 24a018c7..e55c3c11 100644 --- a/src/Utils/messages.ts +++ b/src/Utils/messages.ts @@ -14,6 +14,7 @@ import type { MessageGenerationOptions, MessageGenerationOptionsFromContent, MessageUserReceipt, + MessageWithContextInfo, WAMediaUpload, WAMessage, WAMessageContent, @@ -541,11 +542,14 @@ export const generateWAMessageContent = async ( } if ('mentions' in message && message.mentions?.length) { - const messageType = Object.keys(m)[0]! as Exclude + const messageType = Object.keys(m)[0]! as Extract const key = m[messageType] - if ('contextInfo' in key!) { - key.contextInfo = key.contextInfo || {} + if ('contextInfo' in key! && !!key.contextInfo) { key.contextInfo.mentionedJid = message.mentions + } else if (key!) { + key.contextInfo = { + mentionedJid: message.mentions + } } } @@ -561,10 +565,12 @@ export const generateWAMessageContent = async ( } if ('contextInfo' in message && !!message.contextInfo) { - const messageType = Object.keys(m)[0]! as Exclude + const messageType = Object.keys(m)[0]! as Extract const key = m[messageType] - if ('contextInfo' in key!) { + if ('contextInfo' in key! && !!key.contextInfo) { key.contextInfo = { ...key.contextInfo, ...message.contextInfo } + } else if (key!) { + key.contextInfo = message.contextInfo } }