From 465ae35d7fd9ec845132d50faec3a77bb25f569a Mon Sep 17 00:00:00 2001 From: Clansty Date: Thu, 1 Feb 2024 00:38:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Rich=20Header=20=E5=8F=91=E9=80=81?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E6=97=B6=E8=87=AA=E5=8A=A8=E9=87=8D=E8=AF=95?= =?UTF-8?q?=20+=20=E4=BF=AE=E5=A4=8D=E5=8F=91=E9=80=81=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=97=B6=E6=B2=A1=E6=9C=89=E5=8F=91=E9=80=81=E4=BA=BA=E7=9A=84?= =?UTF-8?q?=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/ForwardService.ts | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/services/ForwardService.ts b/src/services/ForwardService.ts index 5f895e8..b800dad 100644 --- a/src/services/ForwardService.ts +++ b/src/services/ForwardService.ts @@ -371,11 +371,11 @@ export default class ForwardService { this.instance.userMe.username}`; } + let richHeaderUsed = false; // 发送消息 const messageToSend: SendMessageParams = { forceDocument: forceDocument as any, // 恼 }; - message && (messageToSend.message = message); if (files.length === 1) { messageToSend.file = files[0]; } @@ -384,7 +384,7 @@ export default class ForwardService { } else if ((pair.flags | this.instance.flags) & flags.RICH_HEADER) { // 没有文件时才能显示链接预览 - messageHeader = ''; + richHeaderUsed = true; const url = new URL('https://q2tg-header.clansty.workers.dev'); url.searchParams.set('name', sender); url.searchParams.set('id', event.sender.user_id.toString()); @@ -397,11 +397,29 @@ export default class ForwardService { messageToSend.linkPreview = { showAboveText: true }; } - message = messageHeader + (message && messageHeader ? '\n' : '') + message; + if (!richHeaderUsed) { + message = messageHeader + (message && messageHeader ? '\n' : '') + message; + } + message && (messageToSend.message = message); + buttons.length && (messageToSend.buttons = _.chunk(buttons, 3)); replyTo && (messageToSend.replyTo = replyTo); - const tgMessage = await pair.tg.sendMessage(messageToSend); + let tgMessage: Api.Message; + try { + tgMessage = await pair.tg.sendMessage(messageToSend); + } + catch (e) { + if (richHeaderUsed) { + this.log.warn('Rich Header 发送错误', messageToSend.file); + delete messageToSend.file; + delete messageToSend.linkPreview; + message = messageHeader + (message && messageHeader ? '\n' : '') + message; + message && (messageToSend.message = message); + tgMessage = await pair.tg.sendMessage(messageToSend); + } + else throw e; + } if (this.instance.workMode === 'personal' && event.message_type === 'group' && event.atall) { await tgMessage.pin({ notify: false });