From 7a4a255a89e1ce2366197fe001ca0d76faf708db Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Sat, 19 Oct 2024 04:41:32 +0800 Subject: [PATCH] refactor: simplify the PacketClient availability check process & add action `nc_get_packet_status` --- src/onebot/action/extends/GetRkey.ts | 18 +++---------- src/onebot/action/extends/SetSpecialTittle.ts | 7 ++---- src/onebot/action/file/GetGroupFileUrl.ts | 9 +++---- src/onebot/action/group/GroupPoke.ts | 7 ++---- src/onebot/action/index.ts | 2 ++ src/onebot/action/packet/GetPacketStatus.ts | 25 +++++++++++++++++++ src/onebot/action/types.ts | 1 + 7 files changed, 38 insertions(+), 31 deletions(-) create mode 100644 src/onebot/action/packet/GetPacketStatus.ts diff --git a/src/onebot/action/extends/GetRkey.ts b/src/onebot/action/extends/GetRkey.ts index 0f6eb0db..8ec95b22 100644 --- a/src/onebot/action/extends/GetRkey.ts +++ b/src/onebot/action/extends/GetRkey.ts @@ -1,23 +1,11 @@ -import BaseAction from '../BaseAction'; import { ActionName } from '../types'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -// no_cache get时传字符串 -const SchemaData = { - type: 'object', - properties: { - }, -} as const satisfies JSONSchema; +import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; -type Payload = FromSchema; -export class GetRkey extends BaseAction> { +export class GetRkey extends GetPacketStatusDepends> { actionName = ActionName.GetRkey; - payloadSchema = SchemaData; - async _handle(payload: Payload) { - if (!this.core.apis.PacketApi.available) { - throw new Error('PacketClient is not init'); - } + async _handle() { return await this.core.apis.PacketApi.sendRkeyPacket(); } } diff --git a/src/onebot/action/extends/SetSpecialTittle.ts b/src/onebot/action/extends/SetSpecialTittle.ts index ef5d24fa..2c54d501 100644 --- a/src/onebot/action/extends/SetSpecialTittle.ts +++ b/src/onebot/action/extends/SetSpecialTittle.ts @@ -1,6 +1,6 @@ -import BaseAction from '../BaseAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; const SchemaData = { type: 'object', properties: { @@ -13,14 +13,11 @@ const SchemaData = { type Payload = FromSchema; -export class SetSpecialTittle extends BaseAction { +export class SetSpecialTittle extends GetPacketStatusDepends { actionName = ActionName.SetSpecialTittle; payloadSchema = SchemaData; async _handle(payload: Payload) { - if (!this.core.apis.PacketApi.available) { - throw new Error('PacketClient is not init'); - } const uid = await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString()); if(!uid) throw new Error('User not found'); await this.core.apis.PacketApi.sendSetSpecialTittlePacket(payload.group_id.toString(), uid, payload.special_title); diff --git a/src/onebot/action/file/GetGroupFileUrl.ts b/src/onebot/action/file/GetGroupFileUrl.ts index 281f6e06..147df302 100644 --- a/src/onebot/action/file/GetGroupFileUrl.ts +++ b/src/onebot/action/file/GetGroupFileUrl.ts @@ -1,7 +1,7 @@ -import BaseAction from '../BaseAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import {FileNapCatOneBotUUID} from "@/common/helper"; +import { FileNapCatOneBotUUID } from "@/common/helper"; +import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; const SchemaData = { type: 'object', @@ -18,14 +18,11 @@ interface GetGroupFileUrlResponse { url?: string; } -export class GetGroupFileUrl extends BaseAction { +export class GetGroupFileUrl extends GetPacketStatusDepends { actionName = ActionName.GOCQHTTP_GetGroupFileUrl; payloadSchema = SchemaData; async _handle(payload: Payload) { - if (!this.core.apis.PacketApi.available) { - throw new Error('PacketClient is not init'); - } const contextMsgFile = FileNapCatOneBotUUID.decode(payload.file_id) || FileNapCatOneBotUUID.decodeModelId(payload.file_id); if (contextMsgFile?.fileUUID) { return { diff --git a/src/onebot/action/group/GroupPoke.ts b/src/onebot/action/group/GroupPoke.ts index eb2812b0..7c1f0b80 100644 --- a/src/onebot/action/group/GroupPoke.ts +++ b/src/onebot/action/group/GroupPoke.ts @@ -1,6 +1,6 @@ -import BaseAction from '../BaseAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import {GetPacketStatusDepends} from "@/onebot/action/packet/GetPacketStatus"; // no_cache get时传字符串 const SchemaData = { type: 'object', @@ -13,14 +13,11 @@ const SchemaData = { type Payload = FromSchema; -export class GroupPoke extends BaseAction { +export class GroupPoke extends GetPacketStatusDepends { actionName = ActionName.GroupPoke; payloadSchema = SchemaData; async _handle(payload: Payload) { - if (!this.core.apis.PacketApi.available) { - throw new Error('PacketClient is not init'); - } await this.core.apis.PacketApi.sendPokePacket(+payload.group_id, +payload.user_id); } } diff --git a/src/onebot/action/index.ts b/src/onebot/action/index.ts index 08616991..bef28bac 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -91,6 +91,7 @@ import { UploadForwardMsg } from "@/onebot/action/extends/UploadForwardMsg"; import { GetGroupShutList } from './group/GetGroupShutList'; import { GetGroupMemberList } from './group/GetGroupMemberList'; import { GetGroupFileUrl } from "@/onebot/action/file/GetGroupFileUrl"; +import {GetPacketStatus} from "@/onebot/action/packet/GetPacketStatus"; export type ActionMap = Map>; @@ -187,6 +188,7 @@ export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCo new GetGroupFilesByFolder(obContext, core), new GetGroupSystemMsg(obContext, core), new FetchUserProfileLike(obContext, core), + new GetPacketStatus(obContext, core), new GroupPoke(obContext, core), new GetUserStatus(obContext, core), new GetRkey(obContext, core), diff --git a/src/onebot/action/packet/GetPacketStatus.ts b/src/onebot/action/packet/GetPacketStatus.ts new file mode 100644 index 00000000..d5f48c89 --- /dev/null +++ b/src/onebot/action/packet/GetPacketStatus.ts @@ -0,0 +1,25 @@ +import BaseAction from '../BaseAction'; +import {ActionName, BaseCheckResult} from '../types'; + + +export abstract class GetPacketStatusDepends extends BaseAction { + actionName = ActionName.GetPacketStatus; + + protected async check(): Promise{ + if (!this.core.apis.PacketApi.available) { + return { + valid: false, + message: "PacketClient is not available!", + } + } + return { + valid: true, + } + } +} + +export class GetPacketStatus extends GetPacketStatusDepends { + async _handle(payload: any) { + return null + } +} diff --git a/src/onebot/action/types.ts b/src/onebot/action/types.ts index 7e776920..e1649376 100644 --- a/src/onebot/action/types.ts +++ b/src/onebot/action/types.ts @@ -121,6 +121,7 @@ export enum ActionName { GetGroupInfoEx = "get_group_info_ex", GetGroupSystemMsg = 'get_group_system_msg', FetchUserProfileLike = "fetch_user_profile_like", + GetPacketStatus = 'nc_get_packet_status', GetUserStatus = "nc_get_user_status", GetRkey = "nc_get_rkey", SetSpecialTittle = "set_group_special_title",