@juzi/wechaty
Version:
Wechaty is a RPA SDK for Chatbot Makers.
102 lines • 3.85 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;
if (typeof sayable === 'number') {
sayable = String(sayable);
}
if (typeof sayable === 'string') {
return puppet.messageSendText(conversationId, sayable, {
mentionIdList: options?.mentionList?.map(c => c === '@all' ? '@all' : c.id),
quoteId: options?.quoteMessage?.id,
});
}
/**
* 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);
}
else if (mod_js_1.MessageImpl.validInstance(sayable)) {
/**
* 2. Message
*/
msgId = await puppet.messageForward(conversationId, sayable.id);
}
else if (mod_js_1.ContactImpl.validInstance(sayable)) {
/**
* 3. Contact
*/
msgId = await puppet.messageSendContact(conversationId, sayable.id);
}
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);
}
else if (mod_js_1.LocationImpl.validInstance(sayable)) {
/**
* 6. Location
*/
msgId = await puppet.messageSendLocation(conversationId, sayable.payload);
}
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);
}
else if (mod_js_1.ChannelImpl.validInstance(sayable)) {
msgId = await puppet.messageSendChannel(conversationId, sayable.payload);
}
else if (mod_js_1.ChannelCardImpl.validInstance(sayable)) {
msgId = await puppet.messageSendChannelCard(conversationId, sayable.payload);
}
else if (mod_js_1.ConsultCardImpl.validInstance(sayable)) {
msgId = await puppet.messageSendConsultCard(conversationId, sayable.payload);
}
else if (mod_js_1.PremiumOnlineAppointmentCardImpl.validInstance(sayable)) {
msgId = await puppet.messageSendPremiumOnlineAppointmentCard(conversationId, {
cardType: sayable.payload.cardType,
componentId: sayable.componentId(),
});
}
else if (mod_js_1.DouyinOneClickPhoneCollectionImpl.validInstance(sayable)) {
msgId = await puppet.messageSendDouyinOneClickPhoneCollection(conversationId, {});
}
else if (mod_js_1.WxxdProductImpl.validInstance(sayable)) {
msgId = await puppet.messageSendWxxdProduct(conversationId, sayable.id);
}
else if (mod_js_1.WxxdOrderImpl.validInstance(sayable)) {
msgId = await puppet.messageSendWxxdOrder(conversationId, sayable.id);
}
else {
throw new Error('unsupported arg: ' + sayable);
}
return msgId;
};
exports.deliverSayableConversationPuppet = deliverSayableConversationPuppet;
//# sourceMappingURL=deliver-sayable.js.map