Skip to content

Commit

Permalink
Showing 88 changed files with 206 additions and 221 deletions.
32 changes: 0 additions & 32 deletions src/onebot/action/OB11Response.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,15 +1,38 @@
import { ActionName, BaseCheckResult } from './types';
import { OB11Response } from './OB11Response';
import { OB11Return } from '@/onebot/types';
import Ajv, { ErrorObject, ValidateFunction } from 'ajv';
import { NapCatCore } from '@/core';
import { isNull } from '@/common/helper';
import { NapCatOneBot11Adapter, OB11Return } from '@/onebot';

import { NapCatOneBot11Adapter } from '@/onebot';
export class OB11Response {
private static createResponse<T>(data: T, status: string, retcode: number, message: string = '', echo: any = null): OB11Return<T> {
return {
status,
retcode,
data,
message,
wording: message,
echo,
};
}

static res<T>(data: T, status: string, retcode: number, message: string = ''): OB11Return<T> {
return this.createResponse(data, status, retcode, message);
}

static ok<T>(data: T, echo: any = null): OB11Return<T> {
return this.createResponse(data, 'ok', 0, '', echo);
}

abstract class BaseAction<PayloadType, ReturnDataType> {
static error(err: string, retcode: number, echo: any = null): OB11Return<null> {
return this.createResponse(null, 'failed', retcode, err, echo);
}
}

export abstract class OneBotAction<PayloadType, ReturnDataType> {
actionName: ActionName = ActionName.Unknown;
core: NapCatCore;
private validate: undefined | ValidateFunction<any> = undefined;
private validate: ValidateFunction<any> | undefined = undefined;
payloadSchema: any = undefined;
obContext: NapCatOneBot11Adapter;

@@ -24,17 +47,13 @@ abstract class BaseAction<PayloadType, ReturnDataType> {
}
if (this.validate && !this.validate(payload)) {
const errors = this.validate.errors as ErrorObject[];
const errorMessages: string[] = errors.map((e) => {
return `Key: ${e.instancePath.split('/').slice(1).join('.')}, Message: ${e.message}`;
});
const errorMessages = errors.map(e => `Key: ${e.instancePath.split('/').slice(1).join('.')}, Message: ${e.message}`);
return {
valid: false,
message: errorMessages.join('\n') ?? '未知错误',
};
}
return {
valid: true,
};
return { valid: true };
}

public async handle(payload: PayloadType, adaptername: string): Promise<OB11Return<ReturnDataType | null>> {
@@ -46,8 +65,8 @@ abstract class BaseAction<PayloadType, ReturnDataType> {
const resData = await this._handle(payload, adaptername);
return OB11Response.ok(resData);
} catch (e: any) {
this.core.context.logger.logError.bind(this.core.context.logger)('发生错误', e);
return OB11Response.error(e?.stack?.toString() || e?.toString() || '未知错误,可能操作超时', 200);
this.core.context.logger.logError('发生错误', e);
return OB11Response.error(e?.toString() || e?.stack?.toString() || '未知错误,可能操作超时', 200);
}
}

@@ -60,12 +79,10 @@ abstract class BaseAction<PayloadType, ReturnDataType> {
const resData = await this._handle(payload, adaptername);
return OB11Response.ok(resData, echo);
} catch (e: any) {
this.core.context.logger.logError.bind(this.core.context.logger)('发生错误', e);
return OB11Response.error(e.stack?.toString() || e.toString(), 1200, echo);
this.core.context.logger.logError('发生错误', e);
return OB11Response.error(e.toString() || e.stack?.toString(), 1200, echo);
}
}

abstract _handle(payload: PayloadType, adaptername: string): PromiseLike<ReturnDataType>;
}

export default BaseAction;
}
4 changes: 2 additions & 2 deletions src/onebot/action/extends/CreateCollection.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';

@@ -13,7 +13,7 @@ const SchemaData = {

type Payload = FromSchema<typeof SchemaData>;

export class CreateCollection extends BaseAction<Payload, any> {
export class CreateCollection extends OneBotAction<Payload, any> {
actionName = ActionName.CreateCollection;
payloadSchema = SchemaData;

4 changes: 2 additions & 2 deletions src/onebot/action/extends/FetchCustomFace.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';

const SchemaData = {
@@ -11,7 +11,7 @@ const SchemaData = {

type Payload = FromSchema<typeof SchemaData>;

export class FetchCustomFace extends BaseAction<Payload, string[]> {
export class FetchCustomFace extends OneBotAction<Payload, string[]> {
actionName = ActionName.FetchCustomFace;
payloadSchema = SchemaData;

4 changes: 2 additions & 2 deletions src/onebot/action/extends/FetchEmojiLike.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//getMsgEmojiLikesList
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';
import { MessageUnique } from '@/common/message-unique';

@@ -19,7 +19,7 @@ const SchemaData = {

type Payload = FromSchema<typeof SchemaData>;

export class FetchEmojiLike extends BaseAction<Payload, any> {
export class FetchEmojiLike extends OneBotAction<Payload, any> {
actionName = ActionName.FetchEmojiLike;
payloadSchema = SchemaData;

4 changes: 2 additions & 2 deletions src/onebot/action/extends/FetchUserProfileLike.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';

export class FetchUserProfileLike extends BaseAction<{ qq: number }, any> {
export class FetchUserProfileLike extends OneBotAction<{ qq: number }, any> {
actionName = ActionName.FetchUserProfileLike;

async _handle(payload: { qq: number }) {
4 changes: 2 additions & 2 deletions src/onebot/action/extends/GetCollectionList.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';

@@ -13,7 +13,7 @@ const SchemaData = {

type Payload = FromSchema<typeof SchemaData>;

export class GetCollectionList extends BaseAction<Payload, any> {
export class GetCollectionList extends OneBotAction<Payload, any> {
actionName = ActionName.GetCollectionList;
payloadSchema = SchemaData;

4 changes: 2 additions & 2 deletions src/onebot/action/extends/GetFriendWithCategory.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { OB11Entities } from '@/onebot/entities';
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';

export class GetFriendWithCategory extends BaseAction<void, any> {
export class GetFriendWithCategory extends OneBotAction<void, any> {
actionName = ActionName.GetFriendsWithCategory;

async _handle(payload: void) {
4 changes: 2 additions & 2 deletions src/onebot/action/extends/GetGroupAddRequest.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { GroupNotifyMsgStatus } from '@/core';
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';

interface OB11GroupRequestNotify {
@@ -8,7 +8,7 @@ interface OB11GroupRequestNotify {
flag: string
}

export default class GetGroupAddRequest extends BaseAction<null, OB11GroupRequestNotify[] | null> {
export default class GetGroupAddRequest extends OneBotAction<null, OB11GroupRequestNotify[] | null> {
actionName = ActionName.GetGroupIgnoreAddRequest;

async _handle(payload: null): Promise<OB11GroupRequestNotify[] | null> {
4 changes: 2 additions & 2 deletions src/onebot/action/extends/GetGroupInfoEx.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';

@@ -12,7 +12,7 @@ const SchemaData = {

type Payload = FromSchema<typeof SchemaData>;

export class GetGroupInfoEx extends BaseAction<Payload, any> {
export class GetGroupInfoEx extends OneBotAction<Payload, any> {
actionName = ActionName.GetGroupInfoEx;
payloadSchema = SchemaData;

4 changes: 2 additions & 2 deletions src/onebot/action/extends/GetProfileLike.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';

interface Payload {
start: number,
count: number
}

export class GetProfileLike extends BaseAction<Payload, any> {
export class GetProfileLike extends OneBotAction<Payload, any> {
actionName = ActionName.GetProfileLike;

async _handle(payload: Payload) {
4 changes: 2 additions & 2 deletions src/onebot/action/extends/GetRobotUinRange.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';

export class GetRobotUinRange extends BaseAction<void, Array<any>> {
export class GetRobotUinRange extends OneBotAction<void, Array<any>> {
actionName = ActionName.GetRobotUinRange;

async _handle(payload: void) {
4 changes: 2 additions & 2 deletions src/onebot/action/extends/OCRImage.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { checkFileReceived, uri2local } from '@/common/file';
@@ -14,7 +14,7 @@ const SchemaData = {

type Payload = FromSchema<typeof SchemaData>;

export class OCRImage extends BaseAction<Payload, any> {
export class OCRImage extends OneBotAction<Payload, any> {
actionName = ActionName.OCRImage;
payloadSchema = SchemaData;

4 changes: 2 additions & 2 deletions src/onebot/action/extends/SetInputStatus.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';
import { ChatType } from '@/core';

@@ -14,7 +14,7 @@ const SchemaData = {

type Payload = FromSchema<typeof SchemaData>;

export class SetInputStatus extends BaseAction<Payload, any> {
export class SetInputStatus extends OneBotAction<Payload, any> {
actionName = ActionName.SetInputStatus;

async _handle(payload: Payload) {
4 changes: 2 additions & 2 deletions src/onebot/action/extends/SetLongNick.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';

@@ -12,7 +12,7 @@ const SchemaData = {

type Payload = FromSchema<typeof SchemaData>;

export class SetLongNick extends BaseAction<Payload, any> {
export class SetLongNick extends OneBotAction<Payload, any> {
actionName = ActionName.SetLongNick;
payloadSchema = SchemaData;

4 changes: 2 additions & 2 deletions src/onebot/action/extends/SetOnlineStatus.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
// 设置在线状态
@@ -15,7 +15,7 @@ const SchemaData = {

type Payload = FromSchema<typeof SchemaData>;

export class SetOnlineStatus extends BaseAction<Payload, null> {
export class SetOnlineStatus extends OneBotAction<Payload, null> {
actionName = ActionName.SetOnlineStatus;
payloadSchema = SchemaData;

4 changes: 2 additions & 2 deletions src/onebot/action/extends/SetQQAvatar.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName, BaseCheckResult } from '../types';
import * as fs from 'node:fs';
import { checkFileReceived, uri2local } from '@/common/file';
@@ -7,7 +7,7 @@ interface Payload {
file: string;
}

export default class SetAvatar extends BaseAction<Payload, null> {
export default class SetAvatar extends OneBotAction<Payload, null> {
actionName = ActionName.SetQQAvatar;

// 用不着复杂检测
6 changes: 3 additions & 3 deletions src/onebot/action/extends/ShareContact.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';

@@ -14,7 +14,7 @@ const SchemaData = {
type Payload = FromSchema<typeof SchemaData>;


export class SharePeer extends BaseAction<Payload, any> {
export class SharePeer extends OneBotAction<Payload, any> {
actionName = ActionName.SharePeer;
payloadSchema = SchemaData;

@@ -37,7 +37,7 @@ const SchemaDataGroupEx = {

type PayloadGroupEx = FromSchema<typeof SchemaDataGroupEx>;

export class ShareGroupEx extends BaseAction<PayloadGroupEx, any> {
export class ShareGroupEx extends OneBotAction<PayloadGroupEx, any> {
actionName = ActionName.ShareGroupEx;
payloadSchema = SchemaDataGroupEx;

4 changes: 2 additions & 2 deletions src/onebot/action/extends/TranslateEnWordToZn.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';

@@ -15,7 +15,7 @@ const SchemaData = {

type Payload = FromSchema<typeof SchemaData>;

export class TranslateEnWordToZn extends BaseAction<Payload, Array<any> | null> {
export class TranslateEnWordToZn extends OneBotAction<Payload, Array<any> | null> {
actionName = ActionName.TranslateEnWordToZn;
payloadSchema = SchemaData;

4 changes: 2 additions & 2 deletions src/onebot/action/file/GetFile.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BaseAction from '../BaseAction';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import fs from 'fs/promises';
import { FileNapCatOneBotUUID } from '@/common/helper';
import { ActionName } from '../types';
@@ -30,7 +30,7 @@ const GetFileBase_PayloadSchema = {

export type GetFilePayload = FromSchema<typeof GetFileBase_PayloadSchema>;

export class GetFileBase extends BaseAction<GetFilePayload, GetFileResponse> {
export class GetFileBase extends OneBotAction<GetFilePayload, GetFileResponse> {
payloadSchema = GetFileBase_PayloadSchema;

async _handle(payload: GetFilePayload): Promise<GetFileResponse> {
Loading

0 comments on commit 9ffaab1

Please sign in to comment.