aijinkela-wechaty
Version:
Wechaty is a RPA SDK for Chatbot Makers.
83 lines • 3.04 kB
JavaScript
;
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