From 0a746b9f5388513baa75c46032b3371e78cf384a Mon Sep 17 00:00:00 2001 From: Adhiraj Singh Date: Fri, 6 Aug 2021 11:55:09 +0530 Subject: [PATCH] add viewOnce + buttons --- src/Types/Message.ts | 20 ++++++++++++++------ src/Utils/messages.ts | 18 +++++++++++++++++- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/Types/Message.ts b/src/Types/Message.ts index 20ed675..29cbe44 100644 --- a/src/Types/Message.ts +++ b/src/Types/Message.ts @@ -50,19 +50,26 @@ type Mentionable = { /** list of jids that are mentioned in the accompanying text */ mentions?: string[] } +type ViewOnce = { + viewOnce?: boolean +} +type Buttonable = { + /** add buttons to the message */ + buttons?: proto.IButton[] +} export type MediaType = 'image' | 'video' | 'sticker' | 'audio' | 'document' export type AnyMediaMessageContent = ( ({ image: WAMediaUpload caption?: string jpegThumbnail?: string - } & Mentionable) | + } & Mentionable & Buttonable) | ({ video: WAMediaUpload caption?: string gifPlayback?: boolean jpegThumbnail?: string - } & Mentionable) | { + } & Mentionable & Buttonable) | { audio: WAMediaUpload /** if set to true, will send as a `voice note` */ pttAudio?: boolean @@ -70,18 +77,18 @@ export type AnyMediaMessageContent = ( seconds?: number } | { sticker: WAMediaUpload - } | { + } | ({ document: WAMediaUpload mimetype: string fileName?: string - }) & + } & Buttonable)) & { mimetype?: string } -export type AnyRegularMessageContent = +export type AnyRegularMessageContent = ( ({ text: string } - & Mentionable) | + & Mentionable & Buttonable) | AnyMediaMessageContent | { contacts: { @@ -92,6 +99,7 @@ export type AnyRegularMessageContent = { location: WALocationMessage } +) & ViewOnce export type AnyMessageContent = AnyRegularMessageContent | { forward: WAMessage diff --git a/src/Utils/messages.ts b/src/Utils/messages.ts index dd3a455..95e6231 100644 --- a/src/Utils/messages.ts +++ b/src/Utils/messages.ts @@ -1,6 +1,7 @@ import { Boom } from '@hapi/boom' import { createReadStream, promises as fs } from "fs" import got from "got" +import { proto } from '../../WAMessage' import { DEFAULT_ORIGIN, URL_REGEX, WA_DEFAULT_EPHEMERAL } from "../Defaults" import { AnyMediaMessageContent, @@ -235,7 +236,7 @@ export const generateWAMessageContent = async( } } - m.extendedTextMessage = WAMessageProto.ExtendedTextMessage.fromObject(extContent) + m.extendedTextMessage = extContent } else if('contacts' in message) { const contactLen = message.contacts.contacts.length if(!contactLen) { @@ -267,6 +268,21 @@ export const generateWAMessageContent = async( options ) } + if('buttons' in message && !!message.buttons) { + const buttonsMessage: proto.IButtonsMessage = { + buttons: message.buttons!, + text: '' + } + if('text' in message) { + buttonsMessage.contentText = message.text + } else { + Object.assign(buttonsMessage, m) + } + m = { buttonsMessage } + } + if('viewOnce' in message && !!message.viewOnce) { + m = { viewOnceMessage: { message: m } } + } if('mentions' in message && message.mentions?.length) { const [messageType] = Object.keys(m) m[messageType].contextInfo = m[messageType] || { }