UNPKG

@juzi/wechaty-puppet-whatsapp

Version:
142 lines 6.05 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parserMessageRawPayload = void 0; const PUPPET = __importStar(require("@juzi/wechaty-puppet")); const error_type_js_1 = require("../../exception/error-type.js"); const whatsapp_error_js_1 = __importDefault(require("../../exception/whatsapp-error.js")); const miscellaneous_js_1 = require("../miscellaneous.js"); const whatsapp_interface_js_1 = require("../../schema/whatsapp-interface.js"); const whatsapp_type_js_1 = require("../../schema/whatsapp-type.js"); function parserMessageRawPayload(messagePayload) { const talkerId = messagePayload.author || messagePayload.from; let listenerId; let roomId; if (typeof messagePayload.id.remote === 'object') { const { _serialized } = messagePayload.id.remote; roomId = (0, miscellaneous_js_1.isRoomId)(_serialized) ? _serialized : undefined; listenerId = (0, miscellaneous_js_1.isRoomId)(_serialized) ? undefined : messagePayload.to; } else { roomId = (0, miscellaneous_js_1.isRoomId)(messagePayload.id.remote) ? messagePayload.id.remote : undefined; listenerId = (0, miscellaneous_js_1.isRoomId)(messagePayload.id.remote) ? undefined : messagePayload.to; } if (!talkerId) { throw (0, whatsapp_error_js_1.default)(error_type_js_1.WA_ERROR_TYPE.ERR_MSG_NOT_FOUND, 'empty talkerIdId!'); } if (!roomId && !listenerId) { throw (0, whatsapp_error_js_1.default)(error_type_js_1.WA_ERROR_TYPE.ERR_MSG_NOT_FOUND, 'empty roomId and empty listenerId!'); } const readList = roomId ? undefined : [whatsapp_interface_js_1.MessageAck.ACK_READ, whatsapp_interface_js_1.MessageAck.ACK_PLAYED].includes(messagePayload.ack) ? [listenerId] : []; return { /** * @deprecated `fromId` is deprecated, use `talkerId` instead. * `fromId` will be removed in v2.0 */ fromId: talkerId, talkerId, // eslint-disable-next-line sort-keys id: messagePayload.id.id, mentionIdList: messagePayload.mentionedIds, roomId, text: messagePayload.body, timestamp: messagePayload.timestamp, /** * @deprecated `toId` is deprecated, use `listenerId` instead. * `toId` will be removed in v2.0 */ toId: listenerId, // eslint-disable-next-line sort-keys listenerId, quoteId: messagePayload.hasQuotedMsg ? messagePayload._data?.quotedStanzaID : undefined, type: getMessageType(messagePayload), readList, }; } exports.parserMessageRawPayload = parserMessageRawPayload; function getMessageType(messagePayload) { let type = PUPPET.types.Message.Unknown; // @ts-ignore if (messagePayload.type === 'notification') { type = PUPPET.types.Message.Text; } switch (messagePayload.type) { case whatsapp_interface_js_1.MessageTypes.TEXT: if (messagePayload.isStatus) { type = PUPPET.types.Message.Post; } else { type = PUPPET.types.Message.Text; } break; case whatsapp_interface_js_1.MessageTypes.STICKER: type = PUPPET.types.Message.Emoticon; break; case whatsapp_interface_js_1.MessageTypes.VOICE: type = PUPPET.types.Message.Audio; break; case whatsapp_interface_js_1.MessageTypes.IMAGE: if (messagePayload.isStatus) { type = PUPPET.types.Message.Post; } else { type = PUPPET.types.Message.Image; } break; case whatsapp_interface_js_1.MessageTypes.AUDIO: type = PUPPET.types.Message.Audio; break; case whatsapp_interface_js_1.MessageTypes.VIDEO: if (messagePayload.isStatus) { type = PUPPET.types.Message.Post; } else { type = PUPPET.types.Message.Video; } break; case whatsapp_interface_js_1.MessageTypes.CONTACT_CARD: type = PUPPET.types.Message.Contact; break; case whatsapp_interface_js_1.MessageTypes.DOCUMENT: type = PUPPET.types.Message.Attachment; break; case whatsapp_interface_js_1.MessageTypes.LOCATION: type = PUPPET.types.Message.Location; break; case whatsapp_interface_js_1.MessageTypes.REVOKED: type = PUPPET.types.Message.Recalled; break; case whatsapp_interface_js_1.MessageTypes.PRODUCT: type = PUPPET.types.Message.MiniProgram; break; case whatsapp_type_js_1.SpecialSystemType: type = PUPPET.types.Message.System; } return type; } //# sourceMappingURL=message-raw-payload-parser.js.map