wechaty-puppet-wechat4u
Version:
Wechat4u Puppet for Wechaty
73 lines • 2.7 kB
JavaScript
import { xmlToJson } from '../utils/xml-to-json.js';
import { parsePatMessagePayload } from './sysmsg/message-pat.js';
import { parseSysmsgTemplateMessagePayload } from './sysmsg/message-sysmsgtemplate.js';
import { parseTodoMessagePayload } from './sysmsg/message-todo.js';
import { parseRevokeMsgMessagePayload } from './sysmsg/message-revokemsg.js';
import { WebMessageType } from '../../web-schemas.js';
export async function parseSysmsgMessagePayload(message) {
if (![WebMessageType.SYS, WebMessageType.RECALLED].includes(message.MsgType)) {
return null;
}
const content = message.Content.trim();
const sysmsgIndex = content.indexOf('<sysmsg');
if (sysmsgIndex === -1) {
return {
payload: { content },
type: 'roomtips',
};
}
const sysmsgXml = await xmlToJson(content.substring(sysmsgIndex));
let payload;
switch (sysmsgXml.sysmsg.$.type) {
case 'pat':
payload = await parsePatMessagePayload(sysmsgXml.sysmsg.pat);
break;
case 'sysmsgtemplate':
payload = await parseSysmsgTemplateMessagePayload(sysmsgXml.sysmsg.sysmsgtemplate);
break;
case 'roomtoolstips':
payload = await parseTodoMessagePayload(sysmsgXml.sysmsg.todo);
break;
case 'revokemsg':
payload = await parseRevokeMsgMessagePayload(sysmsgXml.sysmsg.revokemsg);
break;
}
if (payload) {
return {
payload,
type: sysmsgXml.sysmsg.$.type,
};
}
else {
return null;
}
}
export async function parseSysmsgPatMessagePayload(message) {
const sysmsgPayload = await parseSysmsgMessagePayload(message);
if (!sysmsgPayload || sysmsgPayload.type !== 'pat') {
return null;
}
return sysmsgPayload.payload;
}
export async function parseSysmsgSysmsgTemplateMessagePayload(message) {
const sysmsgPayload = await parseSysmsgMessagePayload(message);
if (!sysmsgPayload || sysmsgPayload.type !== 'sysmsgtemplate') {
return null;
}
return sysmsgPayload.payload;
}
export async function parseSysmsgTodoMessagePayload(message) {
const sysmsgPayload = await parseSysmsgMessagePayload(message);
if (!sysmsgPayload || sysmsgPayload.type !== 'roomtoolstips') {
return null;
}
return sysmsgPayload.payload;
}
export async function parseSysmsgRevokeMsgMessagePayload(message) {
const sysmsgPayload = await parseSysmsgMessagePayload(message);
if (!sysmsgPayload || sysmsgPayload.type !== 'revokemsg') {
return null;
}
return sysmsgPayload.payload;
}
//# sourceMappingURL=message-sysmsg.js.map