From 961d05a01902447d6ac05d64463bd067ffc77f7c Mon Sep 17 00:00:00 2001 From: Clansty Date: Wed, 17 Jul 2024 23:32:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20at=20=E5=8F=98=E8=A1=A8=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/src/client/NapCatClient/convert.ts | 33 ++++++------------------- main/src/services/ForwardService.ts | 14 ++++++++--- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/main/src/client/NapCatClient/convert.ts b/main/src/client/NapCatClient/convert.ts index 41b7386..bbe7591 100644 --- a/main/src/client/NapCatClient/convert.ts +++ b/main/src/client/NapCatClient/convert.ts @@ -77,15 +77,15 @@ export const messageElemToNapCatSendable = async (elem: SendableElem): Promise<{ export const napCatReceiveToMessageElem = (data: Receive[keyof Receive]): MessageElem | Receive['forward'] => { switch (data.type) { case 'text': - return { - ...data.data, - type: data.type, - }; case 'face': + case 'image': + case 'record': + case 'json': + case 'markdown': return { ...data.data, type: data.type, - }; + } as any; case 'mface': return { type: 'image', @@ -93,19 +93,10 @@ export const napCatReceiveToMessageElem = (data: Receive[keyof Receive]): Messag file: data.data.url, }; case 'at': + const qqNum = Number(data.data.qq); return { - ...data.data, - type: data.type, - }; - case 'image': - return { - ...data.data, - type: data.type, - }; - case 'record': - return { - ...data.data, type: data.type, + qq: isNaN(qqNum) ? data.data.qq : qqNum, }; case 'file': return { @@ -124,22 +115,12 @@ export const napCatReceiveToMessageElem = (data: Receive[keyof Receive]): Messag fid: data.data.url, file: data.data.url, }; - case 'json': - return { - ...data.data, - type: data.type, - }; case 'dice': case 'rps': return { id: data.data.result, type: data.type, }; - case 'markdown': - return { - ...data.data, - type: data.type, - }; case 'forward': return data; case 'reply': diff --git a/main/src/services/ForwardService.ts b/main/src/services/ForwardService.ts index dc2e5de..bf84da9 100644 --- a/main/src/services/ForwardService.ts +++ b/main/src/services/ForwardService.ts @@ -10,8 +10,6 @@ import { import { fetchFile, getBigFaceUrl, getImageUrlByMd5, isContainsUrl } from '../utils/urls'; import { ButtonLike, FileLike } from 'telegram/define'; import { getLogger, Logger } from 'log4js'; -import path from 'path'; -import exts from '../constants/exts'; import helper from '../helpers/forwardHelper'; import db from '../models/db'; import { Button } from 'telegram/tl/custom/button'; @@ -38,7 +36,7 @@ import { CustomFile } from 'telegram/client/uploads'; import flags from '../constants/flags'; import BigInteger from 'big-integer'; import pastebin from '../utils/pastebin'; -import { MessageEvent, QQClient, Sendable, SendableElem } from '../client/QQClient'; +import { Group, MessageEvent, QQClient, Sendable, SendableElem } from '../client/QQClient'; import posthog from '../models/posthog'; import { NapCatClient } from '../client/NapCatClient'; import fsP from 'fs/promises'; @@ -205,6 +203,16 @@ export default class ForwardService { message += `[${helper.htmlEscape(elem.text)}]`; break; } + if (!elem.text) { + if (isNaN(elem.qq as number)) { + elem.text = `@${elem.qq === 'all' ? '全体成员' : elem.qq}`; + } + else { + const member = (pair.qq as Group).pickMember(elem.qq as number); + const info = await member.renew(); + elem.text = `@${info.card || info.nickname}`; + } + } } case 'face': // 判断 tgs 表情