wechaty-puppet-wechat4u
Version:
Wechat4u Puppet for Wechaty
36 lines (27 loc) • 1.13 kB
text/typescript
import type * as PUPPET from 'wechaty-puppet'
import type { AppMessagePayload } from '../../messages/message-appmsg.js'
import type { WebMessageRawPayload } from '../../../web-schemas.js'
/**
* Add customized message parser context info here
*/
export type MessageParserContext = {
puppet: PUPPET.Puppet,
isRoomMessage: boolean,
appMessagePayload?: AppMessagePayload,
};
export type MessageParser = (webMessageRawPayload: WebMessageRawPayload, ret: PUPPET.payloads.Message, context: MessageParserContext) => Promise<PUPPET.payloads.Message>;
const messageParserList: Array<MessageParser> = []
export function addMessageParser (parser: MessageParser) {
messageParserList.push(parser)
}
export async function executeMessageParsers (puppet: PUPPET.Puppet, webMessageRawPayload: WebMessageRawPayload, ret: PUPPET.payloads.Message): Promise<PUPPET.payloads.Message> {
const context: MessageParserContext = {
isRoomMessage: false,
puppet,
}
for (const parser of messageParserList) {
ret = await parser(webMessageRawPayload, ret, context)
}
return ret
}
export const LOGPRE = 'message-parser'