@juzi/wechaty-puppet-whatsapp
Version:
Wechaty Puppet for WhatsApp
142 lines • 6.05 kB
JavaScript
;
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