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 });