add viewOnce + buttons

This commit is contained in:
Adhiraj Singh
2021-08-06 11:55:09 +05:30
parent 39a6d804e1
commit 0a746b9f53
2 changed files with 31 additions and 7 deletions

View File

@@ -50,19 +50,26 @@ type Mentionable = {
/** list of jids that are mentioned in the accompanying text */ /** list of jids that are mentioned in the accompanying text */
mentions?: string[] 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 MediaType = 'image' | 'video' | 'sticker' | 'audio' | 'document'
export type AnyMediaMessageContent = ( export type AnyMediaMessageContent = (
({ ({
image: WAMediaUpload image: WAMediaUpload
caption?: string caption?: string
jpegThumbnail?: string jpegThumbnail?: string
} & Mentionable) | } & Mentionable & Buttonable) |
({ ({
video: WAMediaUpload video: WAMediaUpload
caption?: string caption?: string
gifPlayback?: boolean gifPlayback?: boolean
jpegThumbnail?: string jpegThumbnail?: string
} & Mentionable) | { } & Mentionable & Buttonable) | {
audio: WAMediaUpload audio: WAMediaUpload
/** if set to true, will send as a `voice note` */ /** if set to true, will send as a `voice note` */
pttAudio?: boolean pttAudio?: boolean
@@ -70,18 +77,18 @@ export type AnyMediaMessageContent = (
seconds?: number seconds?: number
} | { } | {
sticker: WAMediaUpload sticker: WAMediaUpload
} | { } | ({
document: WAMediaUpload document: WAMediaUpload
mimetype: string mimetype: string
fileName?: string fileName?: string
}) & } & Buttonable)) &
{ mimetype?: string } { mimetype?: string }
export type AnyRegularMessageContent = export type AnyRegularMessageContent = (
({ ({
text: string text: string
} }
& Mentionable) | & Mentionable & Buttonable) |
AnyMediaMessageContent | AnyMediaMessageContent |
{ {
contacts: { contacts: {
@@ -92,6 +99,7 @@ export type AnyRegularMessageContent =
{ {
location: WALocationMessage location: WALocationMessage
} }
) & ViewOnce
export type AnyMessageContent = AnyRegularMessageContent | { export type AnyMessageContent = AnyRegularMessageContent | {
forward: WAMessage forward: WAMessage

View File

@@ -1,6 +1,7 @@
import { Boom } from '@hapi/boom' import { Boom } from '@hapi/boom'
import { createReadStream, promises as fs } from "fs" import { createReadStream, promises as fs } from "fs"
import got from "got" import got from "got"
import { proto } from '../../WAMessage'
import { DEFAULT_ORIGIN, URL_REGEX, WA_DEFAULT_EPHEMERAL } from "../Defaults" import { DEFAULT_ORIGIN, URL_REGEX, WA_DEFAULT_EPHEMERAL } from "../Defaults"
import { import {
AnyMediaMessageContent, AnyMediaMessageContent,
@@ -235,7 +236,7 @@ export const generateWAMessageContent = async(
} }
} }
m.extendedTextMessage = WAMessageProto.ExtendedTextMessage.fromObject(extContent) m.extendedTextMessage = extContent
} else if('contacts' in message) { } else if('contacts' in message) {
const contactLen = message.contacts.contacts.length const contactLen = message.contacts.contacts.length
if(!contactLen) { if(!contactLen) {
@@ -267,6 +268,21 @@ export const generateWAMessageContent = async(
options 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) { if('mentions' in message && message.mentions?.length) {
const [messageType] = Object.keys(m) const [messageType] = Object.keys(m)
m[messageType].contextInfo = m[messageType] || { } m[messageType].contextInfo = m[messageType] || { }