(
sourceMsg: Api.Message,
targetPeer: any,
replyMsg: Api.Message,
sourceChatId: string,
sourceMessageId: number,
progress: string = ""
)
| 803 | return { |
| 804 | success: true, |
| 805 | forwardedMsg: forwardedMessage, |
| 806 | source: { chatId: sourceChatId, messageId: sourceMessageId } |
| 807 | }; |
| 808 | } else { |
| 809 | await this.safeEditMessage(replyMsg, `${progress}❌ 消息无内容可转发`, true); |
| 810 | return { success: false }; |
| 811 | } |
| 812 | } |
| 813 | |
| 814 | tempFileInfo = await this.downloadMedia(sourceMsg, 0, replyMsg); |
| 815 | if (!tempFileInfo) { |
| 816 | await this.safeEditMessage(replyMsg, `${progress}❌ 下载媒体失败`, true); |
| 817 | return { success: false }; |
| 818 | } |
| 819 | |
| 820 | // 发送媒体消息,获取发送的消息 |
| 821 | forwardedMessage = await this.sendSingleMedia(client, targetPeer, tempFileInfo, replyMsg); |
| 822 | await this.safeEditMessage(replyMsg, `${progress}✅ 内容已重新上传发送`, true); |
| 823 | |
| 824 | // 如果开启了来源显示,发送来源消息 |
| 825 | return { |
| 826 | success: true, |
| 827 | forwardedMsg: forwardedMessage, |
| 828 | source: { chatId: sourceChatId, messageId: sourceMessageId } |
| 829 | }; |
| 830 | } |
| 831 | } catch (error: unknown) { |
| 832 | logger.error(`处理消息失败:`, error); |
| 833 | await this.safeEditMessage(replyMsg, `${progress}❌ 处理失败: ${htmlEscape(getErrorMessage(error) || "未知错误")}`, true); |
| 834 | return { success: false }; |
| 835 | } finally { |
| 836 | if (tempFileInfo?.path) { |
| 837 | await this.cleanupTempFile(tempFileInfo.path); |
| 838 | } |
| 839 | } |
| 840 | } |
| 841 | |
| 842 | private async processMessageToLocal( |
| 843 | sourceMsg: MessageContext, |
| 844 | replyMsg: MessageContext, |
| 845 | sourceChatId: string, |
| 846 | sourceMessageId: number, |
| 847 | progress: string = "", |
| 848 | options?: { groupDirName?: string; quietSuccess?: boolean } |
| 849 | ): Promise<ProcessMessageResult> { |
| 850 | try { |
| 851 | if (!sourceMsg.media) { |
| 852 | await this.safeEditMessage(replyMsg, `${progress}⏭️ 消息不包含媒体文件,已跳过`, true); |
| 853 | return { success: false, skipped: true }; |
| 854 | } |
| 855 | |
| 856 | await this.safeEditMessage(replyMsg, `${progress}💾 正在保存媒体到本地...`, true); |
| 857 | const savedFile = await this.saveMediaToLocal(sourceMsg, sourceChatId, sourceMessageId, replyMsg, 0, options); |
| 858 | |
| 859 | if (!savedFile) { |
| 860 | await this.safeEditMessage(replyMsg, `${progress}❌ 保存到本地失败`, true); |
| 861 | return { success: false }; |
| 862 | } |
no test coverage detected