From 1f45d5006719f37ba8dcc145c05898a8ab6ab37d Mon Sep 17 00:00:00 2001 From: Clansty Date: Wed, 16 Mar 2022 21:49:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=92=A4=E5=9B=9E=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=EF=BC=8C=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E6=AF=8F=E6=9D=A1=E6=B6=88=E6=81=AF=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E9=97=B4=E9=9A=94=E4=B8=80=E7=A7=92=E9=92=9F=EF=BC=88=E5=90=A6?= =?UTF-8?q?=E5=88=99=E5=8F=AF=E8=83=BD=E5=A4=B1=E8=B4=A5=E4=BD=86=E6=98=AF?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=88=90=E5=8A=9F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/DeleteMessageService.ts | 33 ++++++++++++++++++---------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/services/DeleteMessageService.ts b/src/services/DeleteMessageService.ts index fb55aef..69e17f6 100644 --- a/src/services/DeleteMessageService.ts +++ b/src/services/DeleteMessageService.ts @@ -16,9 +16,24 @@ export default class DeleteMessageService { } // 500ms 内只撤回一条消息,防止频繁导致一部分消息没有成功撤回。不过这样的话,会得不到返回的结果 - private recallQqMessage = consumer(async (qq: Friend | Group, seq: number, rand: number, timeOrPktnum: number) => { - await qq.recallMsg(seq, rand, timeOrPktnum); - }, 500); + private recallQqMessage = consumer(async (qq: Friend | Group, seq: number, rand: number, timeOrPktnum: number, pair: Pair, isOthersMsg: boolean) => { + try { + const result = await qq.recallMsg(seq, rand, timeOrPktnum); + this.log.info(seq, result); + if (!result) throw new Error('撤回失败'); + } + catch (e) { + this.log.error('撤回失败', e); + const tipMsg = await pair.tg.sendMessage({ + message: '撤回 QQ 中对应的消息失败' + + (this.instance.workMode === 'group' ? ',QQ Bot 需要是管理员' : '') + + (isOthersMsg ? ',而且无法撤回其他管理员的消息' : '') + + (e.message ? '\n' + e.message : ''), + silent: true, + }); + this.instance.workMode === 'group' && setTimeout(async () => await tipMsg.delete({ revoke: true }), 5000); + } + }, 1000); /** * 删除 QQ 对应的消息 @@ -39,20 +54,14 @@ export default class DeleteMessageService { if (messageInfo) { try { this.recallQqMessage(pair.qq, messageInfo.seq, messageInfo.rand, - pair.qq instanceof Friend ? messageInfo.time : messageInfo.pktnum); + pair.qq instanceof Friend ? messageInfo.time : messageInfo.pktnum, + pair, isOthersMsg); await db.message.delete({ where: { id: messageInfo.id }, }); } catch (e) { - const tipMsg = await pair.tg.sendMessage({ - message: '撤回 QQ 中对应的消息失败' + - (this.instance.workMode === 'group' ? ',QQ Bot 需要是管理员' : '') + - (isOthersMsg ? ',而且无法撤回其他管理员的消息' : '') + - (e.message ? '\n' + e.message : ''), - silent: true, - }); - this.instance.workMode === 'group' && setTimeout(async () => await tipMsg.delete({ revoke: true }), 5000); + this.log.error(e); } } }