mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-12-18 20:30:08 +08:00
* feat: pnpm new * Refactor build and release workflows, update dependencies Switch build scripts and workflows from npm to pnpm, update build and artifact paths, and simplify release workflow by removing version detection and changelog steps. Add new dependencies (silk-wasm, express, ws, node-pty-prebuilt-multiarch), update exports in package.json files, and add vite config for napcat-framework. Also, rename manifest.json for framework package and fix static asset copying in shell build config.
117 lines
2.8 KiB
TypeScript
117 lines
2.8 KiB
TypeScript
import * as crypto from 'node:crypto';
|
|
import { PacketMsg } from '@/napcat-core/packet/message/message';
|
|
|
|
interface ForwardMsgJson {
|
|
app: string
|
|
config: ForwardMsgJsonConfig,
|
|
desc: string,
|
|
extra: ForwardMsgJsonExtra,
|
|
meta: ForwardMsgJsonMeta,
|
|
prompt: string,
|
|
ver: string,
|
|
view: string
|
|
}
|
|
|
|
interface ForwardMsgJsonConfig {
|
|
autosize: number,
|
|
forward: number,
|
|
round: number,
|
|
type: string,
|
|
width: number
|
|
}
|
|
|
|
interface ForwardMsgJsonExtra {
|
|
filename: string,
|
|
tsum: number,
|
|
}
|
|
|
|
interface ForwardMsgJsonMeta {
|
|
detail: ForwardMsgJsonMetaDetail
|
|
}
|
|
|
|
interface ForwardMsgJsonMetaDetail {
|
|
news: {
|
|
text: string
|
|
}[],
|
|
resid: string,
|
|
source: string,
|
|
summary: string,
|
|
uniseq: string
|
|
}
|
|
|
|
interface ForwardAdaptMsg {
|
|
senderName?: string;
|
|
isGroupMsg?: boolean;
|
|
msg?: ForwardAdaptMsgElement[];
|
|
}
|
|
|
|
interface ForwardAdaptMsgElement {
|
|
preview?: string;
|
|
}
|
|
|
|
export class ForwardMsgBuilder {
|
|
private static build (resId: string, msg: ForwardAdaptMsg[], source?: string, news?: ForwardMsgJsonMetaDetail['news'], summary?: string, prompt?: string): ForwardMsgJson {
|
|
const id = crypto.randomUUID();
|
|
const isGroupMsg = msg.some(m => m.isGroupMsg);
|
|
if (!source) {
|
|
source = msg.length === 0 ? '聊天记录' : (isGroupMsg ? '群聊的聊天记录' : msg.map(m => m.senderName).filter((v, i, a) => a.indexOf(v) === i).slice(0, 4).join('和') + '的聊天记录');
|
|
}
|
|
if (!news) {
|
|
news = msg.length === 0
|
|
? [{
|
|
text: 'Nya~ This message is send from NapCat.Packet!',
|
|
}]
|
|
: msg.map(m => ({
|
|
text: `${m.senderName}: ${m.msg?.map(msg => msg.preview).join('')}`,
|
|
}));
|
|
}
|
|
if (!summary) {
|
|
summary = `查看${msg.length}条转发消息`;
|
|
}
|
|
if (!prompt) {
|
|
prompt = '[聊天记录]';
|
|
}
|
|
return {
|
|
app: 'com.tencent.multimsg',
|
|
config: {
|
|
autosize: 1,
|
|
forward: 1,
|
|
round: 1,
|
|
type: 'normal',
|
|
width: 300,
|
|
},
|
|
desc: prompt,
|
|
extra: {
|
|
filename: id,
|
|
tsum: msg.length,
|
|
},
|
|
meta: {
|
|
detail: {
|
|
news,
|
|
resid: resId,
|
|
source,
|
|
summary,
|
|
uniseq: id,
|
|
},
|
|
},
|
|
prompt,
|
|
ver: '0.0.0.5',
|
|
view: 'contact',
|
|
};
|
|
}
|
|
|
|
static fromResId (resId: string): ForwardMsgJson {
|
|
return this.build(resId, []);
|
|
}
|
|
|
|
static fromPacketMsg (resId: string, packetMsg: PacketMsg[], source?: string, news?: ForwardMsgJsonMetaDetail['news'], summary?: string, prompt?: string): ForwardMsgJson {
|
|
return this.build(resId, packetMsg.map(msg => ({
|
|
senderName: msg.senderName,
|
|
isGroupMsg: msg.groupId !== undefined,
|
|
msg: msg.msg.map(m => ({
|
|
preview: m.valid ? m.toPreview() : '[该消息类型暂不支持查看]',
|
|
})),
|
|
})), source, news, summary, prompt);
|
|
}
|
|
}
|