@@ -78,6 +78,7 @@ import {
7878 SendLinkPreviewDto ,
7979 SendStickerDto ,
8080 SendStatusDto ,
81+ StatusMessage ,
8182} from '../dto/sendMessage.dto' ;
8283import { arrayUnique , isBase64 , isURL } from 'class-validator' ;
8384import {
@@ -1236,7 +1237,7 @@ export class WAStartupService {
12361237 ! message [ 'poll' ] &&
12371238 ! message [ 'linkPreview' ] &&
12381239 ! message [ 'sticker' ] &&
1239- ! message [ 'status' ]
1240+ ! sender . includes ( '@broadcast' )
12401241 ) {
12411242 if ( ! message [ 'audio' ] ) {
12421243 this . logger . verbose ( 'Sending message' ) ;
@@ -1265,17 +1266,16 @@ export class WAStartupService {
12651266 ) ;
12661267 }
12671268
1268- if ( message [ 'status' ] ) {
1269+ if ( sender . includes ( '@broadcast' ) ) {
12691270 this . logger . verbose ( 'Sending message' ) ;
1271+ console . log ( message [ 'status' ] ) ;
12701272 return await this . client . sendMessage (
12711273 sender ,
1274+ message [ 'status' ] . content as unknown as AnyMessageContent ,
12721275 {
1273- text : message [ 'status' ] . text ,
1274- } as unknown as AnyMessageContent ,
1275- {
1276- backgroundColor : message [ 'status' ] . backgroundColor ,
1277- font : message [ 'status' ] . font ,
1278- statusJidList : message [ 'status' ] . statusJidList ,
1276+ backgroundColor : message [ 'status' ] . option . backgroundColor ,
1277+ font : message [ 'status' ] . option . font ,
1278+ statusJidList : message [ 'status' ] . option . statusJidList ,
12791279 } as unknown as MiscMessageGenerationOptions ,
12801280 ) ;
12811281 }
@@ -1357,10 +1357,89 @@ export class WAStartupService {
13571357 ) ;
13581358 }
13591359
1360+ private async formatStatusMessage ( status : StatusMessage ) {
1361+ if ( ! status . type ) {
1362+ throw new BadRequestException ( 'Type is required' ) ;
1363+ }
1364+
1365+ if ( ! status . content ) {
1366+ throw new BadRequestException ( 'Content is required' ) ;
1367+ }
1368+
1369+ if (
1370+ ! status . statusJidList ||
1371+ ! Array . isArray ( status . statusJidList ) ||
1372+ ! status . statusJidList . length
1373+ ) {
1374+ throw new BadRequestException ( 'Status jid list is required' ) ;
1375+ }
1376+
1377+ if ( status . type === 'text' ) {
1378+ if ( ! status . backgroundColor ) {
1379+ throw new BadRequestException ( 'Background color is required' ) ;
1380+ }
1381+
1382+ if ( ! status . font ) {
1383+ throw new BadRequestException ( 'Font is required' ) ;
1384+ }
1385+
1386+ return {
1387+ content : {
1388+ text : status . content ,
1389+ } ,
1390+ option : {
1391+ backgroundColor : status . backgroundColor ,
1392+ font : status . font ,
1393+ statusJidList : status . statusJidList ,
1394+ } ,
1395+ } ;
1396+ }
1397+ if ( status . type === 'image' ) {
1398+ return {
1399+ content : {
1400+ image : {
1401+ url : status . content ,
1402+ } ,
1403+ caption : status . caption ,
1404+ } ,
1405+ option : {
1406+ statusJidList : status . statusJidList ,
1407+ } ,
1408+ } ;
1409+ }
1410+ if ( status . type === 'video' ) {
1411+ return {
1412+ content : {
1413+ video : {
1414+ url : status . content ,
1415+ } ,
1416+ caption : status . caption ,
1417+ } ,
1418+ option : {
1419+ statusJidList : status . statusJidList ,
1420+ } ,
1421+ } ;
1422+ }
1423+ if ( status . type === 'audio' ) {
1424+ return {
1425+ content : {
1426+ audio : {
1427+ url : status . content ,
1428+ } ,
1429+ } ,
1430+ option : {
1431+ statusJidList : status . statusJidList ,
1432+ } ,
1433+ } ;
1434+ }
1435+
1436+ throw new BadRequestException ( 'Type not found' ) ;
1437+ }
1438+
13601439 public async statusMessage ( data : SendStatusDto ) {
13611440 this . logger . verbose ( 'Sending status message' ) ;
13621441 return await this . sendMessageWithTyping ( 'status@broadcast' , {
1363- status : data . statusMessage ,
1442+ status : await this . formatStatusMessage ( data . statusMessage ) ,
13641443 } ) ;
13651444 }
13661445
0 commit comments