From 27ecf7837237130d7e429c4228ba4a86f5f54044 Mon Sep 17 00:00:00 2001 From: linyuchen Date: Thu, 25 Apr 2024 15:12:53 +0800 Subject: [PATCH] refactor: mark msg as read --- src/onebot11/action/msg/MarkMsgAsRead.ts | 52 +++++++++++++++--------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/src/onebot11/action/msg/MarkMsgAsRead.ts b/src/onebot11/action/msg/MarkMsgAsRead.ts index 88de0b92..7eb82458 100644 --- a/src/onebot11/action/msg/MarkMsgAsRead.ts +++ b/src/onebot11/action/msg/MarkMsgAsRead.ts @@ -1,41 +1,55 @@ -import { ChatType, Peer, RawMessage, SendMessageElement } from '@/core/qqnt/entities'; +import { ChatType, Peer } from '@/core/qqnt/entities'; import BaseAction from '../BaseAction'; import { ActionName } from '../types'; import { NTQQMsgApi } from '@/core/qqnt/apis'; import { getFriend, getUidByUin } from '@/common/data'; interface Payload { - uin: string, + user_id: number; + group_id?: number; } class MarkMsgAsRead extends BaseAction { - ReqChatType = 0; - protected async _handle(payload: Payload): Promise { - let uid: string | undefined = payload.uin; - if (this.ReqChatType != ChatType.group) { - uid = getUidByUin(payload.uin.toString()); - if (!uid) { - throw `记录${payload.uin}不存在`; + + async getPeer(payload: Payload): Promise { + if (payload.user_id) { + const peerUid = getUidByUin(payload.user_id.toString()); + if (!peerUid) { + throw `私聊${payload.user_id}不存在`; } - const friend = await getFriend(uid); - this.ReqChatType = friend ? ChatType.friend : ChatType.temp;//重写 + const friend = await getFriend(peerUid); + return { chatType: friend ? ChatType.friend: ChatType.temp, peerUid }; } - // 获取UID 组装Peer - // GuildId: string 留空 - const ReqPeer: Peer = { chatType: this.ReqChatType, peerUid: uid, guildId: '' }; + if (!payload.group_id) { + throw '缺少参数 group_id 或 user_id'; + } + return { chatType: ChatType.group, peerUid: payload.group_id.toString() }; + } + protected async _handle(payload: Payload): Promise { // 调用API - const ret = await NTQQMsgApi.setMsgRead(ReqPeer); + const ret = await NTQQMsgApi.setMsgRead(await this.getPeer(payload)); if (ret.result != 0) { - throw ('设置已读失败'); + throw ('设置已读失败,' + ret.errMsg); } return null; } } export class MarkPrivateMsgAsRead extends MarkMsgAsRead { actionName = ActionName.MarkPrivateMsgAsRead; - ReqChatType = ChatType.friend; } export class MarkGroupMsgAsRead extends MarkMsgAsRead { actionName = ActionName.MarkGroupMsgAsRead; - ReqChatType = ChatType.group; -} \ No newline at end of file +} + + +interface Payload{ + message_id: number +} + +export class GoCQHTTPMarkMsgAsRead extends BaseAction{ + actionName = ActionName.GoCQHTTP_MarkMsgAsRead; + + protected async _handle(payload: Payload): Promise { + return null; + } +}