UNPKG

@juzi/wechaty

Version:

Wechaty is a RPA SDK for Chatbot Makers.

117 lines 4.56 kB
import * as PUPPET from '@juzi/wechaty-puppet'; import { log } from '../config.js'; import { validationMixin } from '../user-mixins/validation.js'; import { wechatifyMixinBase, } from '../user-mixins/wechatify.js'; import { FileBox } from 'file-box'; class ChatHistoryMixin extends wechatifyMixinBase() { payload; static async create() { log.verbose('ChatHistory', 'create()'); const payload = [ { type: PUPPET.types.Message.Text, avatar: FileBox.fromUrl(''), senderName: 'senderName', corpName: 'corpName', time: 1699889645, title: '群聊的聊天记录', message: 'text', }, ]; return new this(payload); } /* * @hideconstructor */ constructor(payload) { super(); this.payload = payload; log.verbose('ChatHistory', 'constructor()'); } // avatar (): FileBoxInterface { // return this.payload.avatar // } // name (): undefined | string { // const senderName = this.payload.senderName // const corpName = this.payload.corpName // if (corpName) { // return `${senderName}@${corpName}` // } // return senderName // } // date (): Date { // const time = this.payload.time // return timestampToDate(Number(time)) // FIXME: change the type from string to number // } // async message (): Promise<ChatHistoryMessageType> { // const type = this.type() // const message = this.payload.message // switch (type) { // case PUPPET.types.Message.Text: // case PUPPET.types.Message.Contact: // return message as string // case PUPPET.types.Message.Attachment: // case PUPPET.types.Message.Audio: // case PUPPET.types.Message.Emoticon: // case PUPPET.types.Message.Image: // case PUPPET.types.Message.Video: // return message as FileBoxInterface // case PUPPET.types.Message.Url: // return new this.wechaty.UrlLink(message) // case PUPPET.types.Message.Location: // return new this.wechaty.Location(message) // case PUPPET.types.Message.MiniProgram: // return new this.wechaty.MiniProgram(message) // case PUPPET.types.Message.Channel: // return new this.wechaty.Channel(message) // case PUPPET.types.Message.ChatHistory: // return new this.wechaty.ChatHistory(message) // default: // throw new Error(`Unsupported message type of chat history: ${PUPPET.types.Message[type]}`) // } // } // type (): PUPPET.types.Message { // return this.payload.type // } messageList() { const payloadList = this.payload; const responseList = []; for (const payload of payloadList) { const type = payload.type; switch (type) { case PUPPET.types.Message.Text: case PUPPET.types.Message.Contact: case PUPPET.types.Message.Audio: case PUPPET.types.Message.GroupNote: case PUPPET.types.Message.Emoticon: case PUPPET.types.Message.Channel: responseList.push(payload.message); break; case PUPPET.types.Message.Attachment: case PUPPET.types.Message.Image: case PUPPET.types.Message.Video: responseList.push(payload.message); break; case PUPPET.types.Message.Url: responseList.push(new this.wechaty.UrlLink(payload)); break; case PUPPET.types.Message.Location: responseList.push(new this.wechaty.Location(payload)); break; case PUPPET.types.Message.MiniProgram: responseList.push(new this.wechaty.MiniProgram(payload)); break; case PUPPET.types.Message.ChatHistory: responseList.push(new this.wechaty.ChatHistory(payload)); break; default: throw new Error(`Unsupported message type of chat history: ${PUPPET.types.Message[type]}`); } } return responseList; } } class ChatHistoryImpl extends validationMixin(ChatHistoryMixin)() { } export { ChatHistoryImpl, }; //# sourceMappingURL=chat-history.js.map