diff --git a/src/milky/api/message.ts b/src/milky/api/message.ts index 19e24176..2c156d34 100644 --- a/src/milky/api/message.ts +++ b/src/milky/api/message.ts @@ -44,13 +44,27 @@ const SendPrivateMessage = defineApi( let result: RawMessage if (payload.message[0].type === 'forward') { + const forwardData = payload.message[0].data as { + messages: OutgoingForwardedMessage[] + title?: string + preview?: { text: string }[] + summary?: string + prompt?: string + } const raw = await transformOutgoingForwardMessages( ctx, - payload.message[0].data.messages as OutgoingForwardedMessage[], - peer + forwardData.messages, + peer, + { + title: forwardData.title, + preview: forwardData.preview, + summary: forwardData.summary, + prompt: forwardData.prompt + } ) const resid = await ctx.app.pmhq.uploadForward(peer, raw.multiMsgItems) const uuid = randomUUID() + const prompt = raw.prompt result = await ctx.app.sendMessage(ctx, peer, [{ elementType: 10, elementId: '', @@ -64,7 +78,7 @@ const SendPrivateMessage = defineApi( type: 'normal', width: 300, }, - desc: '[聊天记录]', + desc: prompt, extra: JSON.stringify({ filename: uuid, tsum: raw.tsum, @@ -78,7 +92,7 @@ const SendPrivateMessage = defineApi( uniseq: uuid, }, }, - prompt: '[聊天记录]', + prompt, ver: '0.0.0.5', view: 'contact', }), @@ -117,13 +131,27 @@ const SendGroupMessage = defineApi( let result: RawMessage if (payload.message[0].type === 'forward') { + const forwardData = payload.message[0].data as { + messages: OutgoingForwardedMessage[] + title?: string + preview?: { text: string }[] + summary?: string + prompt?: string + } const raw = await transformOutgoingForwardMessages( ctx, - payload.message[0].data.messages as OutgoingForwardedMessage[], - peer + forwardData.messages, + peer, + { + title: forwardData.title, + preview: forwardData.preview, + summary: forwardData.summary, + prompt: forwardData.prompt + } ) const resid = await ctx.app.pmhq.uploadForward(peer, raw.multiMsgItems) const uuid = randomUUID() + const prompt = raw.prompt result = await ctx.app.sendMessage(ctx, peer, [{ elementType: 10, elementId: '', @@ -137,7 +165,7 @@ const SendGroupMessage = defineApi( type: 'normal', width: 300, }, - desc: '[聊天记录]', + desc: prompt, extra: JSON.stringify({ filename: uuid, tsum: raw.tsum, @@ -151,7 +179,7 @@ const SendGroupMessage = defineApi( uniseq: uuid, }, }, - prompt: '[聊天记录]', + prompt, ver: '0.0.0.5', view: 'contact', }), diff --git a/src/milky/transform/message/outgoing.ts b/src/milky/transform/message/outgoing.ts index d7939ee8..b1780664 100644 --- a/src/milky/transform/message/outgoing.ts +++ b/src/milky/transform/message/outgoing.ts @@ -90,10 +90,16 @@ export async function transformOutgoingMessage( export async function transformOutgoingForwardMessages( ctx: Context, messages: OutgoingForwardedMessage[], - peer: Peer + peer: Peer, + options?: { + title?: string + preview?: { text: string }[] + summary?: string + prompt?: string + } ) { const encoder = new ForwardMessageEncoder(ctx, peer) - return await encoder.generate(messages) + return await encoder.generate(messages, options) } class ForwardMessageEncoder { @@ -304,7 +310,12 @@ class ForwardMessageEncoder { } } - async generate(content: OutgoingForwardedMessage[]) { + async generate(content: OutgoingForwardedMessage[], options?: { + title?: string + preview?: { text: string }[] + summary?: string + prompt?: string + }) { await this.render(content) return { multiMsgItems: [{ @@ -314,9 +325,10 @@ class ForwardMessageEncoder { } }], tsum: this.tsum, - source: this.isGroup ? '群聊的聊天记录' : '聊天记录', - summary: `查看${this.tsum}条转发消息`, - news: this.news + source: options?.title ?? (this.isGroup ? '群聊的聊天记录' : '聊天记录'), + summary: options?.summary ?? `查看${this.tsum}条转发消息`, + news: options?.preview ?? this.news, + prompt: options?.prompt ?? '[聊天记录]' } } }