UNPKG

aijinkela-wechaty

Version:

Wechaty is a RPA SDK for Chatbot Makers.

83 lines 3.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deliverSayableConversationPuppet = void 0; const file_box_1 = require("file-box"); const mod_js_1 = require("../user-modules/mod.js"); /** * TODO: add unit test to ensure the interface validation code works */ const deliverSayableConversationPuppet = (puppet) => (conversationId) => async (sayable, options) => { let msgId; const messageSendOptions = {}; if (options?.replyTo) { const replyTo = Array.isArray(options.replyTo) ? options.replyTo : [options.replyTo]; messageSendOptions.mentionIdList = replyTo.map(c => c.id); } if (options?.quoteMessage) { messageSendOptions.quoteId = options.quoteMessage.id; } if (typeof sayable === 'number') { sayable = String(sayable); } if (typeof sayable === 'string') { return puppet.messageSendText(conversationId, sayable, messageSendOptions); } /** * Huan(202110): Checking `looseInstanceOf` is enough for the following types: * so we do not check `interfaceOfClass` anymore because it will consume more resources. */ if (file_box_1.FileBox.valid(sayable)) { /** * 1. File */ msgId = await puppet.messageSendFile(conversationId, sayable, messageSendOptions); } else if (mod_js_1.MessageImpl.validInstance(sayable)) { /** * 2. Message */ msgId = await puppet.messageForward(conversationId, sayable.id, messageSendOptions); } else if (mod_js_1.ContactImpl.validInstance(sayable)) { /** * 3. Contact */ msgId = await puppet.messageSendContact(conversationId, sayable.id, messageSendOptions); } else if (mod_js_1.UrlLinkImpl.validInstance(sayable)) { /** * 4. Link Message */ msgId = await puppet.messageSendUrl(conversationId, sayable.payload); } else if (mod_js_1.MiniProgramImpl.validInstance(sayable)) { /** * 5. Mini Program */ msgId = await puppet.messageSendMiniProgram(conversationId, sayable.payload, messageSendOptions); } else if (mod_js_1.LocationImpl.validInstance(sayable)) { /** * 6. Location */ msgId = await puppet.messageSendLocation(conversationId, sayable.payload, messageSendOptions); } else if (mod_js_1.DelayImpl.validInstance(sayable)) { /** * 7. Delay for a while */ await sayable.wait(); } else if (mod_js_1.PostImpl.validInstance(sayable)) { /** * 8. Post */ msgId = await puppet.messageSendPost(conversationId, sayable.payload, messageSendOptions); } else { throw new Error('unsupported arg: ' + sayable); } return msgId; }; exports.deliverSayableConversationPuppet = deliverSayableConversationPuppet; //# sourceMappingURL=deliver-sayable.js.map