UNPKG

lotusbail

Version:

WhatsApp API x Button by PL

20 lines (19 loc) 8.73 kB
Object.defineProperty(exports,"__esModule",{value:!0});exports.getChatId=exports.shouldIncrementChatUnread=exports.isRealMessage=exports.cleanMessage=void 0;exports.decryptPollVote=decryptPollVote; const WAProto_1=require("../../WAProto"),Types_1=require("../Types"),messages_1=require("../Utils/messages"),WABinary_1=require("../WABinary"),crypto_1=require("./crypto"),generics_1=require("./generics"),history_1=require("./history"),REAL_MSG_STUB_TYPES=new Set([Types_1.WAMessageStubType.CALL_MISSED_GROUP_VIDEO,Types_1.WAMessageStubType.CALL_MISSED_GROUP_VOICE,Types_1.WAMessageStubType.CALL_MISSED_VIDEO,Types_1.WAMessageStubType.CALL_MISSED_VOICE]),REAL_MSG_REQ_ME_STUB_TYPES=new Set([Types_1.WAMessageStubType.GROUP_PARTICIPANT_ADD]), cleanMessage=(a,e)=>{function f(d){a.key.fromMe||(d.fromMe=d.fromMe?!1:(0,WABinary_1.areJidsSameUser)(d.participant||d.remoteJid,e),d.remoteJid=a.key.remoteJid,d.participant=d.participant||a.key.participant)}a.key.remoteJid=(0,WABinary_1.jidNormalizedUser)(a.key.remoteJid);a.key.participant=a.key.participant?(0,WABinary_1.jidNormalizedUser)(a.key.participant):void 0;const b=(0,messages_1.normalizeMessageContent)(a.message);(null===b||void 0===b?0:b.reactionMessage)&&f(b.reactionMessage.key);(null=== b||void 0===b?0:b.pollUpdateMessage)&&f(b.pollUpdateMessage.pollCreationMessageKey)};exports.cleanMessage=cleanMessage; const isRealMessage=(a,e)=>{var f;const b=(0,messages_1.normalizeMessageContent)(a.message),d=!!(0,messages_1.getContentType)(b);return(!!b||REAL_MSG_STUB_TYPES.has(a.messageStubType)||REAL_MSG_REQ_ME_STUB_TYPES.has(a.messageStubType)&&(null===(f=a.messageStubParameters)||void 0===f?void 0:f.some(r=>(0,WABinary_1.areJidsSameUser)(e,r))))&&d&&!(null===b||void 0===b?0:b.protocolMessage)&&!(null===b||void 0===b?0:b.reactionMessage)&&!(null===b||void 0===b?0:b.pollUpdateMessage)}; exports.isRealMessage=isRealMessage;const shouldIncrementChatUnread=a=>!a.key.fromMe&&!a.messageStubType;exports.shouldIncrementChatUnread=shouldIncrementChatUnread;const getChatId=({remoteJid:a,participant:e,fromMe:f})=>!(0,WABinary_1.isJidBroadcast)(a)||(0,WABinary_1.isJidStatusBroadcast)(a)||f?a:e;exports.getChatId=getChatId; function decryptPollVote({encPayload:a,encIv:e},{pollCreatorJid:f,pollMsgId:b,pollEncKey:d,voterJid:r}){f=Buffer.concat([Buffer.from(b),Buffer.from(f),Buffer.from(r),Buffer.from("Poll Vote"),new Uint8Array([1])]);d=(0,crypto_1.hmacSign)(d,new Uint8Array(32),"sha256");d=(0,crypto_1.hmacSign)(f,d,"sha256");b=Buffer.from(`${b}\u0000${r}`);a=(0,crypto_1.aesDecryptGCM)(a,d,e,b);return WAProto_1.proto.Message.PollVoteMessage.decode(a)} const processMessage=async(a,{shouldProcessHistoryMsg:e,placeholderResendCache:f,ev:b,creds:d,keyStore:r,logger:n,options:w})=>{var g,x,y,z,A,B,v,C,D,E,F,G,H;const K=d.me.id,{accountSettings:I}=d,h={id:(0,WABinary_1.jidNormalizedUser)((0,exports.getChatId)(a.key))},L=(0,exports.isRealMessage)(a,K);L&&(h.messages=[{message:a}],h.conversationTimestamp=(0,generics_1.toNumber)(a.messageTimestamp),(0,exports.shouldIncrementChatUnread)(a)&&(h.unreadCount=(h.unreadCount||0)+1));const l=(0,messages_1.normalizeMessageContent)(a.message); (L||(null===(x=null===(g=null===l||void 0===l?void 0:l.reactionMessage)||void 0===g?void 0:g.key)||void 0===x?0:x.fromMe))&&(null===I||void 0===I?0:I.unarchiveChats)&&(h.archived=!1,h.readOnly=!1);if(g=null===l||void 0===l?void 0:l.protocolMessage)switch(g.type){case WAProto_1.proto.Message.ProtocolMessage.Type.HISTORY_SYNC_NOTIFICATION:var c=g.historySyncNotification;var t=!(null===(y=d.processedHistoryMessages)||void 0===y?0:y.length);null===n||void 0===n||n.info({histNotification:c,process:e,id:a.key.id, isLatest:t},"got history notification");if(e){c.syncType!==WAProto_1.proto.HistorySync.HistorySyncType.ON_DEMAND&&b.emit("creds.update",{processedHistoryMessages:[...(d.processedHistoryMessages||[]),{key:a.key,messageTimestamp:a.messageTimestamp}]});var u=await (0,history_1.downloadAndProcessHistorySyncNotification)(c,w);b.emit("messaging-history.set",{...u,isLatest:c.syncType!==WAProto_1.proto.HistorySync.HistorySyncType.ON_DEMAND?t:void 0,peerDataRequestSessionId:c.peerDataRequestSessionId})}break; case WAProto_1.proto.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_SHARE:const p=g.appStateSyncKeyShare.keys;if(null===p||void 0===p?0:p.length){let m="";await r.transaction(async()=>{const q=[];for(const {keyData:M,keyId:N}of p){const J=Buffer.from(N.keyId).toString("base64");q.push(J);await r.set({"app-state-sync-key":{[J]:M}});m=J}null===n||void 0===n||n.info({newAppStateSyncKeyId:m,newKeys:q},"injecting new app state sync keys")});b.emit("creds.update",{myAppStateKeyId:m})}else null===n||void 0=== n||n.info({protocolMsg:g},"recv app state sync with 0 keys");break;case WAProto_1.proto.Message.ProtocolMessage.Type.REVOKE:b.emit("messages.update",[{key:{...a.key,id:g.key.id},update:{message:null,messageStubType:Types_1.WAMessageStubType.REVOKE,key:a.key}}]);break;case WAProto_1.proto.Message.ProtocolMessage.Type.EPHEMERAL_SETTING:Object.assign(h,{ephemeralSettingTimestamp:(0,generics_1.toNumber)(a.messageTimestamp),ephemeralExpiration:g.ephemeralExpiration||null});break;case WAProto_1.proto.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE:const k= g.peerDataOperationRequestResponseMessage;if(k){null===f||void 0===f||f.del(k.stanzaId);({peerDataOperationResult:c}=k);for(const m of c)if({placeholderMessageResendResponse:c}=m,c){const q=WAProto_1.proto.WebMessageInfo.decode(c.webMessageInfoBytes);setTimeout(()=>{b.emit("messages.upsert",{messages:[q],type:"notify",requestId:k.stanzaId})},500)}}case WAProto_1.proto.Message.ProtocolMessage.Type.MESSAGE_EDIT:b.emit("messages.update",[{key:{...a.key,id:null===(z=g.key)||void 0===z?void 0:z.id},update:{message:{editedMessage:{message:g.editedMessage}}, messageTimestamp:g.timestampMs?Math.floor((0,generics_1.toNumber)(g.timestampMs)/1E3):a.messageTimestamp}}])}else if(null===l||void 0===l?0:l.reactionMessage)b.emit("messages.reaction",[{reaction:{...l.reactionMessage,key:a.key},key:null===(A=l.reactionMessage)||void 0===A?void 0:A.key}]);else if(a.messageStubType){const p=null===(B=a.key)||void 0===B?void 0:B.remoteJid;let k;d=m=>b.emit("group-participants.update",{id:p,author:a.participant,participants:k,action:m});e=m=>{var q;b.emit("groups.update", [{id:p,...m,author:null!==(q=a.participant)&&void 0!==q?q:void 0}])};w=()=>k.find(m=>(0,WABinary_1.areJidsSameUser)(K,m));switch(a.messageStubType){case Types_1.WAMessageStubType.GROUP_PARTICIPANT_CHANGE_NUMBER:k=a.messageStubParameters||[];d("modify");break;case Types_1.WAMessageStubType.GROUP_PARTICIPANT_LEAVE:case Types_1.WAMessageStubType.GROUP_PARTICIPANT_REMOVE:k=a.messageStubParameters||[];d("remove");w()&&(h.readOnly=!0);break;case Types_1.WAMessageStubType.GROUP_PARTICIPANT_ADD:case Types_1.WAMessageStubType.GROUP_PARTICIPANT_INVITE:case Types_1.WAMessageStubType.GROUP_PARTICIPANT_ADD_REQUEST_JOIN:k= a.messageStubParameters||[];w()&&(h.readOnly=!1);d("add");break;case Types_1.WAMessageStubType.GROUP_PARTICIPANT_DEMOTE:k=a.messageStubParameters||[];d("demote");break;case Types_1.WAMessageStubType.GROUP_PARTICIPANT_PROMOTE:k=a.messageStubParameters||[];d("promote");break;case Types_1.WAMessageStubType.GROUP_CHANGE_ANNOUNCE:c=null===(u=a.messageStubParameters)||void 0===u?void 0:u[0];e({announce:"true"===c||"on"===c});break;case Types_1.WAMessageStubType.GROUP_CHANGE_RESTRICT:c=null===(v=a.messageStubParameters)|| void 0===v?void 0:v[0];e({restrict:"true"===c||"on"===c});break;case Types_1.WAMessageStubType.GROUP_CHANGE_SUBJECT:c=null===(C=a.messageStubParameters)||void 0===C?void 0:C[0];h.name=c;e({subject:c});break;case Types_1.WAMessageStubType.GROUP_CHANGE_DESCRIPTION:c=null===(D=a.messageStubParameters)||void 0===D?void 0:D[0];h.description=c;e({desc:c});break;case Types_1.WAMessageStubType.GROUP_CHANGE_INVITE_LINK:c=null===(E=a.messageStubParameters)||void 0===E?void 0:E[0];e({inviteCode:c});break;case Types_1.WAMessageStubType.GROUP_MEMBER_ADD_MODE:c= null===(F=a.messageStubParameters)||void 0===F?void 0:F[0];e({memberAddMode:"all_member_add"===c});break;case Types_1.WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE:c=null===(G=a.messageStubParameters)||void 0===G?void 0:G[0];e({joinApprovalMode:"on"===c});break;case Types_1.WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD:u=null===(H=a.messageStubParameters)||void 0===H?void 0:H[0],v=null===(t=a.messageStubParameters)||void 0===t?void 0:t[1],t=null===(c=a.messageStubParameters)|| void 0===c?void 0:c[2],b.emit("group.join-request",{id:p,author:a.participant,participant:u,action:v,method:t})}}1<Object.keys(h).length&&b.emit("chats.update",[h])};exports.default=processMessage;