wechaty-puppet
Version:
Abstract Puppet for Wechaty
56 lines • 2.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.sayableMixin = void 0;
const config_js_1 = require("../config.js");
const message_js_1 = require("../schemas/message.js");
const sayable_js_1 = require("../schemas/sayable.js");
const sayableMixin = (mixinBase) => {
class SayableMixin extends mixinBase {
constructor(...args) {
super(...args);
config_js_1.log.verbose('PuppetSayableMixin', 'constructor()');
}
async sayablePayload(sayableId) {
config_js_1.log.verbose('PuppetMessageMixin', 'sayablePayload(%s)', sayableId);
const payload = await this.messagePayload(sayableId);
switch (payload.type) {
case message_js_1.MessageType.Text:
return sayable_js_1.sayablePayloads.text(payload.text || '');
case message_js_1.MessageType.Image:
case message_js_1.MessageType.Attachment:
case message_js_1.MessageType.Audio:
case message_js_1.MessageType.Video:
case message_js_1.MessageType.Emoticon: {
const fileBox = await this.messageFile(sayableId);
return sayable_js_1.sayablePayloads.attatchment(fileBox);
}
case message_js_1.MessageType.Contact: {
const contactId = await this.messageContact(sayableId);
return sayable_js_1.sayablePayloads.contact(contactId);
}
case message_js_1.MessageType.Url: {
const urlLinkPayload = await this.messageUrl(sayableId);
return sayable_js_1.sayablePayloads.url(urlLinkPayload);
}
case message_js_1.MessageType.MiniProgram: {
const miniProgramPayload = await this.messageMiniProgram(sayableId);
return sayable_js_1.sayablePayloads.miniProgram(miniProgramPayload);
}
case message_js_1.MessageType.Location: {
const locationPayload = await this.messageLocation(sayableId);
return sayable_js_1.sayablePayloads.location(locationPayload);
}
case message_js_1.MessageType.Post: {
const postPayload = await this.postPayload(sayableId);
return sayable_js_1.sayablePayloads.post(postPayload);
}
default:
config_js_1.log.warn('PuppetSayableMixin', 'sayablePayload() can not convert not re-sayable type: %s(%s) for %s\n%s', message_js_1.MessageType[payload.type], payload.type, sayableId, new Error().stack);
return undefined;
}
}
}
return SayableMixin;
};
exports.sayableMixin = sayableMixin;
//# sourceMappingURL=sayable-mixin.js.map
;