From 3f3d9cc6f1b06cf9039ae5655ec3ed993de006e9 Mon Sep 17 00:00:00 2001 From: Seijo Cecilia Date: Mon, 26 Aug 2024 14:21:31 +0800 Subject: [PATCH] refactor: move calls & clean code --- src/onebot/action/go-cqhttp/QuickAction.ts | 5 +- src/onebot/api/index.ts | 17 +++- src/onebot/api/quick-action.ts | 16 ++-- src/onebot/helper/index.ts | 1 - src/onebot/helper/quick.ts | 90 ---------------------- src/onebot/index.ts | 17 ++-- src/onebot/network/active-http.ts | 5 +- src/onebot/types/adapter.ts | 8 -- src/onebot/types/index.ts | 1 - 9 files changed, 42 insertions(+), 118 deletions(-) delete mode 100644 src/onebot/helper/quick.ts delete mode 100644 src/onebot/types/adapter.ts diff --git a/src/onebot/action/go-cqhttp/QuickAction.ts b/src/onebot/action/go-cqhttp/QuickAction.ts index 3846f9e3..fe209878 100644 --- a/src/onebot/action/go-cqhttp/QuickAction.ts +++ b/src/onebot/action/go-cqhttp/QuickAction.ts @@ -1,4 +1,3 @@ -import { handleQuickOperation } from '@/onebot/helper/quick'; import BaseAction from '../BaseAction'; import { ActionName } from '../types'; import { QuickAction, QuickActionEvent } from '@/onebot/types'; @@ -12,7 +11,9 @@ export class GoCQHTTPHandleQuickAction extends BaseAction { actionName = ActionName.GoCQHTTP_HandleQuickAction; async _handle(payload: Payload): Promise { - handleQuickOperation(this.core, this.obContext, payload.context, payload.operation).then().catch(this.core.context.logger.logError); + this.obContext.apis.QuickActionApi + .handleQuickOperation(payload.context, payload.operation) + .catch(this.core.context.logger.logError); return null; } } diff --git a/src/onebot/api/index.ts b/src/onebot/api/index.ts index 953379c8..a7021d18 100644 --- a/src/onebot/api/index.ts +++ b/src/onebot/api/index.ts @@ -1,4 +1,19 @@ +import { OneBotFriendApi } from '@/onebot/api/friend'; +import { OneBotUserApi } from '@/onebot/api/user'; +import { OneBotGroupApi } from '@/onebot/api/group'; +import { OneBotMsgApi } from '@/onebot/api/msg'; +import { OneBotQuickActionApi } from '@/onebot/api/quick-action'; + export * from './friend'; export * from './group'; export * from './user'; -export * from './msg'; \ No newline at end of file +export * from './msg'; +export * from './quick-action'; + +export interface StableOneBotApiWrapper { + FriendApi: OneBotFriendApi; + UserApi: OneBotUserApi; + GroupApi: OneBotGroupApi; + MsgApi: OneBotMsgApi; + QuickActionApi: OneBotQuickActionApi, +} diff --git a/src/onebot/api/quick-action.ts b/src/onebot/api/quick-action.ts index c5f68266..bda2033c 100644 --- a/src/onebot/api/quick-action.ts +++ b/src/onebot/api/quick-action.ts @@ -18,19 +18,19 @@ export class OneBotQuickActionApi { public core: NapCatCore ) {} - handleQuickOperation(context: QuickActionEvent, quickAction: QuickAction) { - if (context.post_type === 'message') { - this.handleMsg(context as OB11Message, quickAction) + async handleQuickOperation(eventContext: QuickActionEvent, quickAction: QuickAction) { + if (eventContext.post_type === 'message') { + await this.handleMsg(eventContext as OB11Message, quickAction) .catch(this.core.context.logger.logError); } - if (context.post_type === 'request') { - const friendRequest = context as OB11FriendRequestEvent; - const groupRequest = context as OB11GroupRequestEvent; + if (eventContext.post_type === 'request') { + const friendRequest = eventContext as OB11FriendRequestEvent; + const groupRequest = eventContext as OB11GroupRequestEvent; if ((friendRequest).request_type === 'friend') { - this.handleFriendRequest(friendRequest, quickAction) + await this.handleFriendRequest(friendRequest, quickAction) .catch(this.core.context.logger.logError); } else if (groupRequest.request_type === 'group') { - this.handleGroupRequest(groupRequest, quickAction) + await this.handleGroupRequest(groupRequest, quickAction) .catch(this.core.context.logger.logError); } } diff --git a/src/onebot/helper/index.ts b/src/onebot/helper/index.ts index 3a8f5bb9..bd9ff396 100644 --- a/src/onebot/helper/index.ts +++ b/src/onebot/helper/index.ts @@ -1,4 +1,3 @@ export * from './config'; export * from './converter'; -export * from './quick'; export * from './event'; diff --git a/src/onebot/helper/quick.ts b/src/onebot/helper/quick.ts deleted file mode 100644 index 29966648..00000000 --- a/src/onebot/helper/quick.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { ChatType, GroupRequestOperateTypes, NapCatCore, Peer } from '@/core'; -import { OB11FriendRequestEvent } from '../event/request/OB11FriendRequest'; -import { OB11GroupRequestEvent } from '../event/request/OB11GroupRequest'; -import { - OB11Message, - OB11MessageAt, - OB11MessageData, - OB11MessageReply, - QuickAction, - QuickActionEvent, - QuickActionFriendRequest, - QuickActionGroupMessage, - QuickActionGroupRequest, -} from '../types'; -import { isNull } from '@/common/utils/helper'; -import { normalize } from '../action/msg/SendMsg'; -import { NapCatOneBot11Adapter } from '..'; - -async function handleMsg(core: NapCatCore, obContext: NapCatOneBot11Adapter, msg: OB11Message, quickAction: QuickAction) { - msg = msg as OB11Message; - const reply = quickAction.reply; - const peer: Peer = { - chatType: ChatType.KCHATTYPEC2C, - peerUid: await core.apis.UserApi.getUidByUinV2(msg.user_id.toString()) as string, - }; - if (msg.message_type == 'private') { - if (msg.sub_type === 'group') { - peer.chatType = ChatType.KCHATTYPETEMPC2CFROMGROUP; - } - } else { - peer.chatType = ChatType.KCHATTYPETEMPC2CFROMGROUP; - peer.peerUid = msg.group_id!.toString(); - } - if (reply) { - // let group: Group | undefined; - let replyMessage: OB11MessageData[] = []; - - if (msg.message_type == 'group') { - // group = await core.apis.GroupApi.getGroup(msg.group_id!.toString()); - replyMessage.push({ - type: 'reply', - data: { - id: msg.message_id.toString(), - }, - } as OB11MessageReply); - if ((quickAction as QuickActionGroupMessage).at_sender) { - replyMessage.push({ - type: 'at', - data: { - qq: msg.user_id.toString(), - }, - } as OB11MessageAt); - } - } - replyMessage = replyMessage.concat(normalize(reply, quickAction.auto_escape)); - const { sendElements, deleteAfterSentFiles } = await obContext.apis.MsgApi.createSendElements(replyMessage, peer); - obContext.apis.MsgApi.sendMsgWithOb11UniqueId(peer, sendElements, deleteAfterSentFiles, false).then().catch(core.context.logger.logError); - } -} - -async function handleGroupRequest(core: NapCatCore, request: OB11GroupRequestEvent, quickAction: QuickActionGroupRequest) { - if (!isNull(quickAction.approve)) { - core.apis.GroupApi.handleGroupRequest( - request.flag, - quickAction.approve ? GroupRequestOperateTypes.approve : GroupRequestOperateTypes.reject, - quickAction.reason, - ).then().catch(core.context.logger.logError); - } -} - -async function handleFriendRequest(core: NapCatCore, request: OB11FriendRequestEvent, quickAction: QuickActionFriendRequest) { - if (!isNull(quickAction.approve)) { - core.apis.FriendApi.handleFriendRequest(request.flag, !!quickAction.approve).then().catch(core.context.logger.logError); - } -} - -export async function handleQuickOperation(core: NapCatCore, obContext: NapCatOneBot11Adapter, context: QuickActionEvent, quickAction: QuickAction) { - if (context.post_type === 'message') { - handleMsg(core, obContext, context as OB11Message, quickAction).then().catch(core.context.logger.logError); - } - if (context.post_type === 'request') { - const friendRequest = context as OB11FriendRequestEvent; - const groupRequest = context as OB11GroupRequestEvent; - if ((friendRequest).request_type === 'friend') { - handleFriendRequest(core, friendRequest, quickAction).then().catch(core.context.logger.logError); - } else if (groupRequest.request_type === 'group') { - handleGroupRequest(core, groupRequest, quickAction).then().catch(core.context.logger.logError); - } - } -} diff --git a/src/onebot/index.ts b/src/onebot/index.ts index e9251500..a53e9178 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -14,7 +14,6 @@ import { NodeIKernelGroupListener, } from '@/core'; import { OB11Config, OB11ConfigLoader } from '@/onebot/helper/config'; -import { StableOneBotApiWrapper } from '@/onebot/types'; import { OB11ActiveHttpAdapter, OB11ActiveWebSocketAdapter, @@ -23,7 +22,14 @@ import { OB11PassiveWebSocketAdapter, } from '@/onebot/network'; import { NapCatPathWrapper } from '@/common/framework/napcat'; -import { OneBotFriendApi, OneBotGroupApi, OneBotMsgApi, OneBotUserApi } from '@/onebot/api'; +import { + OneBotFriendApi, + OneBotGroupApi, + OneBotMsgApi, + OneBotQuickActionApi, + OneBotUserApi, + StableOneBotApiWrapper, +} from '@/onebot/api'; import { ActionMap, createActionMap } from '@/onebot/action'; import { WebUiDataRuntime } from '@/webui/src/helper/Data'; import { OB11InputStatusEvent } from '@/onebot/event/notice/OB11InputStatusEvent'; @@ -60,6 +66,7 @@ export class NapCatOneBot11Adapter { UserApi: new OneBotUserApi(this, core), FriendApi: new OneBotFriendApi(this, core), MsgApi: new OneBotMsgApi(this, core), + QuickActionApi: new OneBotQuickActionApi(this, core), }; this.actions = createActionMap(this, core); this.networkManager = new OB11NetworkManager(); @@ -129,7 +136,7 @@ export class NapCatOneBot11Adapter { } initRecentContactListener() { const recentContactListener = new NodeIKernelRecentContactListener(); - recentContactListener.onRecentContactNotification = function (msgList: any[], arg0: { msgListUnreadCnt: string }, arg1: number) { + recentContactListener.onRecentContactNotification = function (msgList: any[], /* arg0: { msgListUnreadCnt: string }, arg1: number */) { msgList.forEach((msg) => { if (msg.chatType == ChatType.KCHATTYPEGROUP) { // log("recent contact", msgList, arg0, arg1); @@ -231,9 +238,9 @@ export class NapCatOneBot11Adapter { private initMsgListener() { const msgListener = new NodeIKernelMsgListener(); - msgListener.onRecvSysMsg = msg => { + /* msgListener.onRecvSysMsg = msg => { //console.log('onRecvSysMsg', Buffer.from(msg).toString('hex')); - }; + }; */ msgListener.onInputStatusPush = async data => { const uin = await this.core.apis.UserApi.getUinByUidV2(data.fromUin); this.context.logger.log(`[Notice] [输入状态] ${uin} ${data.statusText}`); diff --git a/src/onebot/network/active-http.ts b/src/onebot/network/active-http.ts index 7f631790..bbcdbc1b 100644 --- a/src/onebot/network/active-http.ts +++ b/src/onebot/network/active-http.ts @@ -3,7 +3,6 @@ import { createHmac } from 'crypto'; import { LogWrapper } from '@/common/utils/log'; import { QuickAction, QuickActionEvent } from '../types'; import { NapCatCore } from '@/core'; -import { handleQuickOperation } from '../helper/quick'; import { NapCatOneBot11Adapter } from '..'; export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter { @@ -48,7 +47,9 @@ export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter { return; } try { - handleQuickOperation(this.core, this.obContext, event as QuickActionEvent, resJson).then().catch(this.logger.logError); + this.obContext.apis.QuickActionApi + .handleQuickOperation(event as QuickActionEvent, resJson) + .catch(this.logger.logError); } catch (e: any) { this.logger.logError('[OneBot] [Http Client] 新消息事件HTTP上报返回快速操作失败', e); } diff --git a/src/onebot/types/adapter.ts b/src/onebot/types/adapter.ts deleted file mode 100644 index 0b5918ce..00000000 --- a/src/onebot/types/adapter.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { OneBotFriendApi, OneBotGroupApi, OneBotMsgApi, OneBotUserApi } from '../api'; - -export interface StableOneBotApiWrapper { - FriendApi: OneBotFriendApi; - UserApi: OneBotUserApi; - GroupApi: OneBotGroupApi; - MsgApi: OneBotMsgApi; -} diff --git a/src/onebot/types/index.ts b/src/onebot/types/index.ts index c93a6526..03436546 100644 --- a/src/onebot/types/index.ts +++ b/src/onebot/types/index.ts @@ -1,4 +1,3 @@ export * from './entity'; export * from './message'; export * from './quick'; -export * from './adapter'; \ No newline at end of file