mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
refactor
This commit is contained in:
@@ -101,7 +101,7 @@ export async function encodeSilk(ctx: Context, filePath: string) {
|
||||
|
||||
type OutFormat = 'mp3' | 'amr' | 'wma' | 'm4a' | 'spx' | 'ogg' | 'wav' | 'flac'
|
||||
|
||||
export async function decodeSilk(ctx: Context, inputFilePath: string, outFormat: OutFormat = 'mp3') {
|
||||
export async function decodeSilk(ctx: Context, inputFilePath: string, outFormat: OutFormat) {
|
||||
const silk = await fsPromise.readFile(inputFilePath)
|
||||
const { data } = await decode(silk, 24000)
|
||||
const tmpPath = path.join(TEMP_DIR, path.basename(inputFilePath))
|
||||
@@ -115,4 +115,4 @@ export async function decodeSilk(ctx: Context, inputFilePath: string, outFormat:
|
||||
'-ac 1'
|
||||
]
|
||||
}, outFilePath)
|
||||
}
|
||||
}
|
||||
|
@@ -265,8 +265,8 @@ export class NTQQGroupApi extends Service {
|
||||
return await invoke('nodeIKernelRichMediaService/deleteGroupFolder', [{ groupId, folderId }, null])
|
||||
}
|
||||
|
||||
async deleteGroupFile(groupId: string, fileIdList: string[]) {
|
||||
return await invoke('nodeIKernelRichMediaService/deleteGroupFile', [{ groupId, busIdList: [102], fileIdList }, null])
|
||||
async deleteGroupFile(groupId: string, fileIdList: string[], busIdList: number[]) {
|
||||
return await invoke('nodeIKernelRichMediaService/deleteGroupFile', [{ groupId, busIdList, fileIdList }, null])
|
||||
}
|
||||
|
||||
async getGroupFileList(groupId: string, fileListForm: GetFileListParam) {
|
||||
|
@@ -1,44 +1,43 @@
|
||||
import { ActionName, BaseCheckResult } from './types'
|
||||
import { ActionName } from './types'
|
||||
import { OB11Response } from './OB11Response'
|
||||
import { OB11Return } from '../types'
|
||||
import { Context } from 'cordis'
|
||||
import { Context, Schema } from 'cordis'
|
||||
import type Adapter from '../adapter'
|
||||
|
||||
abstract class BaseAction<PayloadType, ReturnDataType> {
|
||||
abstract actionName: ActionName
|
||||
protected ctx: Context
|
||||
payloadSchema?: Schema<PayloadType>
|
||||
|
||||
constructor(protected adapter: Adapter) {
|
||||
this.ctx = adapter.ctx
|
||||
}
|
||||
|
||||
protected async check(payload: PayloadType): Promise<BaseCheckResult> {
|
||||
return {
|
||||
valid: true,
|
||||
}
|
||||
}
|
||||
|
||||
public async handle(payload: PayloadType): Promise<OB11Return<ReturnDataType | null>> {
|
||||
const result = await this.check(payload)
|
||||
if (!result.valid) {
|
||||
return OB11Response.error(result.message, 400)
|
||||
let params: PayloadType
|
||||
try {
|
||||
params = this.payloadSchema ? new this.payloadSchema(payload) : payload
|
||||
} catch (e) {
|
||||
return OB11Response.error((e as Error).message, 400)
|
||||
}
|
||||
try {
|
||||
const resData = await this._handle(payload)
|
||||
const resData = await this._handle(params)
|
||||
return OB11Response.ok(resData)
|
||||
} catch (e) {
|
||||
this.ctx.logger.error('发生错误', e)
|
||||
return OB11Response.error(e?.toString() || (e as Error)?.stack?.toString() || '未知错误,可能操作超时', 200)
|
||||
return OB11Response.error((e as Error)?.toString() || (e as Error)?.stack?.toString() || '未知错误,可能操作超时', 200)
|
||||
}
|
||||
}
|
||||
|
||||
public async websocketHandle(payload: PayloadType, echo: unknown): Promise<OB11Return<ReturnDataType | null>> {
|
||||
const result = await this.check(payload)
|
||||
if (!result.valid) {
|
||||
return OB11Response.error(result.message, 1400)
|
||||
let params: PayloadType
|
||||
try {
|
||||
params = this.payloadSchema ? new this.payloadSchema(payload) : payload
|
||||
} catch (e) {
|
||||
return OB11Response.error((e as Error).message, 1400)
|
||||
}
|
||||
try {
|
||||
const resData = await this._handle(payload)
|
||||
const resData = await this._handle(params)
|
||||
return OB11Response.ok(resData, echo)
|
||||
} catch (e) {
|
||||
this.ctx.logger.error('发生错误', e)
|
||||
@@ -46,9 +45,7 @@ abstract class BaseAction<PayloadType, ReturnDataType> {
|
||||
}
|
||||
}
|
||||
|
||||
protected async _handle(payload: PayloadType): Promise<ReturnDataType> {
|
||||
throw `pleas override ${this.actionName} _handle`
|
||||
}
|
||||
protected abstract _handle(payload: PayloadType): Promise<ReturnDataType>
|
||||
}
|
||||
|
||||
export default BaseAction
|
||||
export { BaseAction, Schema }
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import fsPromise from 'node:fs/promises'
|
||||
import { BaseAction, Schema } from '../BaseAction'
|
||||
import { readFile } from 'node:fs/promises'
|
||||
import { ActionName } from '../types'
|
||||
import { Peer, ElementType } from '@/ntqqapi/types'
|
||||
import { MessageUnique } from '@/common/utils/messageUnique'
|
||||
@@ -17,13 +17,16 @@ export interface GetFileResponse {
|
||||
}
|
||||
|
||||
export abstract class GetFileBase extends BaseAction<GetFilePayload, GetFileResponse> {
|
||||
// forked from https://github.com/NapNeko/NapCatQQ/blob/6f6b258f22d7563f15d84e7172c4d4cbb547f47e/src/onebot11/action/file/GetFile.ts#L44
|
||||
payloadSchema = Schema.object({
|
||||
file: Schema.string().required()
|
||||
})
|
||||
|
||||
protected async _handle(payload: GetFilePayload): Promise<GetFileResponse> {
|
||||
const { enableLocalFile2Url } = this.adapter.config
|
||||
|
||||
let fileCache = await MessageUnique.getFileCacheById(String(payload.file))
|
||||
let fileCache = await MessageUnique.getFileCacheById(payload.file)
|
||||
if (!fileCache?.length) {
|
||||
fileCache = await MessageUnique.getFileCacheByName(String(payload.file))
|
||||
fileCache = await MessageUnique.getFileCacheByName(payload.file)
|
||||
}
|
||||
|
||||
if (fileCache?.length) {
|
||||
@@ -62,7 +65,7 @@ export abstract class GetFileBase extends BaseAction<GetFilePayload, GetFileResp
|
||||
}
|
||||
if (enableLocalFile2Url && downloadPath && (res.file === res.url || res.url === undefined)) {
|
||||
try {
|
||||
res.base64 = await fsPromise.readFile(downloadPath, 'base64')
|
||||
res.base64 = await readFile(downloadPath, 'base64')
|
||||
} catch (e) {
|
||||
throw new Error('文件下载失败. ' + e)
|
||||
}
|
||||
@@ -76,11 +79,12 @@ export abstract class GetFileBase extends BaseAction<GetFilePayload, GetFileResp
|
||||
|
||||
export default class GetFile extends GetFileBase {
|
||||
actionName = ActionName.GetFile
|
||||
payloadSchema = Schema.object({
|
||||
file: Schema.string(),
|
||||
file_id: Schema.string().required()
|
||||
})
|
||||
|
||||
protected async _handle(payload: { file_id: string; file: string }): Promise<GetFileResponse> {
|
||||
if (!payload.file_id) {
|
||||
throw new Error('file_id 不能为空')
|
||||
}
|
||||
protected async _handle(payload: { file_id: string, file: string }): Promise<GetFileResponse> {
|
||||
payload.file = payload.file_id
|
||||
return super._handle(payload)
|
||||
}
|
||||
|
@@ -3,11 +3,4 @@ import { ActionName } from '../types'
|
||||
|
||||
export default class GetImage extends GetFileBase {
|
||||
actionName = ActionName.GetImage
|
||||
|
||||
protected async _handle(payload: { file: string }) {
|
||||
if (!payload.file) {
|
||||
throw new Error('参数 file 不能为空')
|
||||
}
|
||||
return super._handle(payload)
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,9 @@
|
||||
import path from 'node:path'
|
||||
import { GetFileBase, GetFilePayload, GetFileResponse } from './GetFile'
|
||||
import { ActionName } from '../types'
|
||||
import { decodeSilk } from '@/common/utils/audio'
|
||||
import path from 'node:path'
|
||||
import fs from 'node:fs'
|
||||
import { Schema } from '../BaseAction'
|
||||
import { stat, readFile } from 'node:fs/promises'
|
||||
|
||||
interface Payload extends GetFilePayload {
|
||||
out_format: 'mp3' | 'amr' | 'wma' | 'm4a' | 'spx' | 'ogg' | 'wav' | 'flac'
|
||||
@@ -10,14 +11,18 @@ interface Payload extends GetFilePayload {
|
||||
|
||||
export default class GetRecord extends GetFileBase {
|
||||
actionName = ActionName.GetRecord
|
||||
payloadSchema = Schema.object({
|
||||
file: Schema.string().required(),
|
||||
out_format: Schema.string().default('mp3')
|
||||
})
|
||||
|
||||
protected async _handle(payload: Payload): Promise<GetFileResponse> {
|
||||
const res = await super._handle(payload)
|
||||
res.file = await decodeSilk(this.ctx, res.file!, payload.out_format)
|
||||
res.file_name = path.basename(res.file)
|
||||
res.file_size = fs.statSync(res.file).size.toString()
|
||||
res.file_size = (await stat(res.file)).size.toString()
|
||||
if (this.adapter.config.enableLocalFile2Url) {
|
||||
res.base64 = fs.readFileSync(res.file, 'base64')
|
||||
res.base64 = await readFile(res.file, 'base64')
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction, Schema } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
@@ -9,9 +9,13 @@ interface Payload {
|
||||
|
||||
export class CreateGroupFileFolder extends BaseAction<Payload, null> {
|
||||
actionName = ActionName.GoCQHTTP_CreateGroupFileFolder
|
||||
payloadSchema = Schema.object({
|
||||
group_id: Schema.union([Number, String]).required(),
|
||||
name: Schema.string().required(),
|
||||
})
|
||||
|
||||
async _handle(payload: Payload) {
|
||||
await this.ctx.ntGroupApi.createGroupFileFolder(payload.group_id.toString(), payload.name)
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction, Schema } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { MessageUnique } from '@/common/utils/messageUnique'
|
||||
|
||||
@@ -8,11 +8,11 @@ interface Payload {
|
||||
|
||||
export class DelEssenceMsg extends BaseAction<Payload, unknown> {
|
||||
actionName = ActionName.GoCQHTTP_DelEssenceMsg
|
||||
payloadSchema = Schema.object({
|
||||
message_id: Schema.union([Number, String]).required()
|
||||
})
|
||||
|
||||
protected async _handle(payload: Payload) {
|
||||
if (!payload.message_id) {
|
||||
throw Error('message_id不能为空')
|
||||
}
|
||||
const msg = await MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id)
|
||||
if (!msg) {
|
||||
throw new Error('msg not found')
|
||||
|
@@ -1,17 +1,22 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction, Schema } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
group_id: string | number
|
||||
file_id: string
|
||||
busid?: 102
|
||||
busid: number
|
||||
}
|
||||
|
||||
export class DelGroupFile extends BaseAction<Payload, null> {
|
||||
actionName = ActionName.GoCQHTTP_DelGroupFile
|
||||
payloadSchema = Schema.object({
|
||||
group_id: Schema.union([Number, String]).required(),
|
||||
file_id: Schema.string().required(),
|
||||
busid: Schema.number().default(102)
|
||||
})
|
||||
|
||||
async _handle(payload: Payload) {
|
||||
await this.ctx.ntGroupApi.deleteGroupFile(payload.group_id.toString(), [payload.file_id])
|
||||
await this.ctx.ntGroupApi.deleteGroupFile(payload.group_id.toString(), [payload.file_id], [payload.busid])
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction, Schema } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
@@ -8,9 +8,13 @@ interface Payload {
|
||||
|
||||
export class DelGroupFolder extends BaseAction<Payload, null> {
|
||||
actionName = ActionName.GoCQHTTP_DelGroupFolder
|
||||
payloadSchema = Schema.object({
|
||||
group_id: Schema.union([Number, String]).required(),
|
||||
folder_id: Schema.string().required()
|
||||
})
|
||||
|
||||
async _handle(payload: Payload) {
|
||||
await this.ctx.ntGroupApi.deleteGroupFileFolder(payload.group_id.toString(), payload.folder_id)
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import fs from 'fs'
|
||||
import fsPromise from 'fs/promises'
|
||||
import path from 'node:path'
|
||||
import { BaseAction, Schema } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { calculateFileMD5, fetchFile } from '@/common/utils'
|
||||
import { TEMP_DIR } from '@/common/globalVars'
|
||||
@@ -22,6 +22,11 @@ interface FileResponse {
|
||||
|
||||
export class DownloadFile extends BaseAction<Payload, FileResponse> {
|
||||
actionName = ActionName.GoCQHTTP_DownloadFile
|
||||
payloadSchema = Schema.object({
|
||||
url: String,
|
||||
base64: String,
|
||||
headers: Schema.union([String, Schema.array(String)])
|
||||
})
|
||||
|
||||
protected async _handle(payload: Payload): Promise<FileResponse> {
|
||||
const isRandomName = !payload.name
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { OB11ForwardMessage } from '../../types'
|
||||
import { OB11Entities } from '../../entities'
|
||||
import { ActionName } from '../types'
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
@@ -22,4 +22,4 @@ export class GetGroupAtAllRemain extends BaseAction<Payload, Response> {
|
||||
remain_at_all_count_for_uin: data.atInfo.RemainAtAllCountForUin
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { OB11Message } from '../../types'
|
||||
import { ActionName } from '../types'
|
||||
import { ChatType } from '@/ntqqapi/types'
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { OB11GroupFile, OB11GroupFileFolder } from '../../types'
|
||||
|
||||
@@ -59,4 +59,4 @@ export class GetGroupRootFiles extends BaseAction<Payload, Response> {
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { GroupNotifyStatus } from '@/ntqqapi/types'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
@@ -56,4 +56,4 @@ export class GetGroupSystemMsg extends BaseAction<void, Response> {
|
||||
}
|
||||
return data
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { OB11User } from '../../types'
|
||||
import { OB11Entities } from '../../entities'
|
||||
import { ActionName } from '../types'
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { MessageUnique } from '@/common/utils/messageUnique'
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { handleQuickOperation, QuickOperation, QuickOperationEvent } from '../../helper/quickOperation'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
@@ -13,4 +13,4 @@ export class HandleQuickOperation extends BaseAction<Payload, null> {
|
||||
handleQuickOperation(this.ctx, payload.context, payload.operation).catch(e => this.ctx.logger.error(e))
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,14 +1,13 @@
|
||||
import SendMsg from '../msg/SendMsg'
|
||||
import { OB11PostSendMsg } from '../../types'
|
||||
import { ActionName } from '../types'
|
||||
import { convertMessage2List } from '../../helper/createMessage'
|
||||
|
||||
export class SendForwardMsg extends SendMsg {
|
||||
actionName = ActionName.GoCQHTTP_SendForwardMsg
|
||||
|
||||
protected async check(payload: OB11PostSendMsg) {
|
||||
if (payload.messages) payload.message = convertMessage2List(payload.messages)
|
||||
return super.check(payload)
|
||||
protected async _handle(payload: OB11PostSendMsg) {
|
||||
if (payload.messages) payload.message = payload.messages
|
||||
return super._handle(payload)
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { unlink } from 'fs/promises'
|
||||
import { checkFileReceived, uri2local } from '@/common/utils/file'
|
||||
@@ -15,7 +15,7 @@ export class SendGroupNotice extends BaseAction<Payload, null> {
|
||||
actionName = ActionName.GoCQHTTP_SendGroupNotice
|
||||
|
||||
async _handle(payload: Payload) {
|
||||
if(!payload.content){
|
||||
if (!payload.content) {
|
||||
throw new Error('参数 content 不能为空')
|
||||
}
|
||||
const groupCode = payload.group_id.toString()
|
||||
@@ -51,4 +51,4 @@ export class SendGroupNotice extends BaseAction<Payload, null> {
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { MessageUnique } from '@/common/utils/messageUnique'
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { SendElementEntities } from '@/ntqqapi/entities'
|
||||
import { uri2local } from '@/common/utils'
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { GroupEssenceMsgRet } from '@/ntqqapi/api'
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface PayloadType {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import { WebHonorType } from '@/ntqqapi/api'
|
||||
import { ActionName } from '../types'
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
|
||||
interface Payload {
|
||||
group_id: number
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import { OB11Group } from '../../types'
|
||||
import { OB11Entities } from '../../entities'
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import { OB11Group } from '../../types'
|
||||
import { OB11Entities } from '../../entities'
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { OB11GroupMember } from '../../types'
|
||||
import { OB11Entities } from '../../entities'
|
||||
import { ActionName } from '../types'
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import { OB11GroupMember } from '../../types'
|
||||
import { OB11Entities } from '../../entities'
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { selfInfo } from '@/common/globalVars'
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
export default class GetGuildList extends BaseAction<null, null> {
|
||||
|
@@ -1,14 +1,14 @@
|
||||
import SendMsg from '../msg/SendMsg'
|
||||
import { ActionName, BaseCheckResult } from '../types'
|
||||
import { ActionName } from '../types'
|
||||
import { OB11PostSendMsg } from '../../types'
|
||||
|
||||
class SendGroupMsg extends SendMsg {
|
||||
actionName = ActionName.SendGroupMsg
|
||||
|
||||
protected async check(payload: OB11PostSendMsg): Promise<BaseCheckResult> {
|
||||
protected _handle(payload: OB11PostSendMsg) {
|
||||
delete (payload as Partial<OB11PostSendMsg>).user_id
|
||||
payload.message_type = 'group'
|
||||
return super.check(payload)
|
||||
return super._handle(payload)
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { GroupRequestOperateTypes } from '@/ntqqapi/types'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { GroupMemberRole } from '@/ntqqapi/types'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -10,7 +10,7 @@ import SendGroupMsg from './group/SendGroupMsg'
|
||||
import SendPrivateMsg from './msg/SendPrivateMsg'
|
||||
import SendMsg from './msg/SendMsg'
|
||||
import DeleteMsg from './msg/DeleteMsg'
|
||||
import BaseAction from './BaseAction'
|
||||
import { BaseAction } from './BaseAction'
|
||||
import GetVersionInfo from './system/GetVersionInfo'
|
||||
import CanSendRecord from './system/CanSendRecord'
|
||||
import CanSendImage from './system/CanSendImage'
|
||||
@@ -134,7 +134,7 @@ export function initActionMap(adapter: Adapter) {
|
||||
new GetGroupRootFiles(adapter),
|
||||
new SendGroupNotice(adapter)
|
||||
]
|
||||
const actionMap = new Map<string, BaseAction<unknown, unknown>>()
|
||||
const actionMap = new Map<string, BaseAction<any, unknown>>()
|
||||
for (const action of actionHandlers) {
|
||||
actionMap.set(action.actionName, action)
|
||||
actionMap.set(action.actionName + '_async', action)
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { Config } from '@/common/types'
|
||||
import { ActionName } from '../types'
|
||||
import { getConfigUtil } from '@/common/config'
|
||||
@@ -13,7 +13,7 @@ export class GetConfigAction extends BaseAction<null, Config> {
|
||||
|
||||
export class SetConfigAction extends BaseAction<Config, void> {
|
||||
actionName = ActionName.SetConfig
|
||||
|
||||
|
||||
protected async _handle(payload: Config): Promise<void> {
|
||||
getConfigUtil().setConfig(payload)
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { getHttpEvent } from '../../helper/eventForHttp'
|
||||
import { OB11Message } from '../../types'
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { GroupNotify, GroupNotifyStatus } from '@/ntqqapi/types'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { selfInfo } from '@/common/globalVars'
|
||||
import { Dict } from 'cosmokit'
|
||||
@@ -14,4 +14,4 @@ export class GetProfileLike extends BaseAction<void, Dict[]> {
|
||||
}
|
||||
return listdata
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
@@ -22,4 +22,4 @@ export class SetOnlineStatus extends BaseAction<Payload, null> {
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import fs from 'node:fs'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import * as fs from 'node:fs'
|
||||
import { checkFileReceived, uri2local } from '../../../common/utils/file'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { ActionName } from '../types'
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { MessageUnique } from '@/common/utils/messageUnique'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ChatType } from '@/ntqqapi/types'
|
||||
import { ActionName } from '../types'
|
||||
import { Peer } from '@/ntqqapi/types'
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { OB11Message } from '../../types'
|
||||
import { OB11Entities } from '../../entities'
|
||||
import { ActionName } from '../types'
|
||||
|
@@ -14,8 +14,8 @@ import {
|
||||
OB11PostSendMsg,
|
||||
} from '../../types'
|
||||
import fs from 'node:fs'
|
||||
import BaseAction from '../BaseAction'
|
||||
import { ActionName, BaseCheckResult } from '../types'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { CustomMusicSignPostData, IdMusicSignPostData, MusicSign, MusicSignPostData } from '@/common/utils/sign'
|
||||
import { Peer } from '@/ntqqapi/types/msg'
|
||||
import { MessageUnique } from '@/common/utils/messageUnique'
|
||||
@@ -29,27 +29,6 @@ interface ReturnData {
|
||||
export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnData> {
|
||||
actionName = ActionName.SendMsg
|
||||
|
||||
protected async check(payload: OB11PostSendMsg): Promise<BaseCheckResult> {
|
||||
const messages = convertMessage2List(payload.message)
|
||||
const fmNum = this.getSpecialMsgNum(messages, OB11MessageDataType.node)
|
||||
if (fmNum && fmNum != messages.length) {
|
||||
return {
|
||||
valid: false,
|
||||
message: '转发消息不能和普通消息混在一起发送,转发需要保证message只有type为node的元素',
|
||||
}
|
||||
}
|
||||
const musicNum = this.getSpecialMsgNum(messages, OB11MessageDataType.music)
|
||||
if (musicNum && messages.length > 1) {
|
||||
return {
|
||||
valid: false,
|
||||
message: '音乐消息不可以和其他消息混在一起发送',
|
||||
}
|
||||
}
|
||||
return {
|
||||
valid: true,
|
||||
}
|
||||
}
|
||||
|
||||
protected async _handle(payload: OB11PostSendMsg) {
|
||||
let contextMode = CreatePeerMode.Normal
|
||||
if (payload.message_type === 'group') {
|
||||
|
@@ -1,13 +1,13 @@
|
||||
import SendMsg from './SendMsg'
|
||||
import { ActionName, BaseCheckResult } from '../types'
|
||||
import { ActionName } from '../types'
|
||||
import { OB11PostSendMsg } from '../../types'
|
||||
|
||||
class SendPrivateMsg extends SendMsg {
|
||||
actionName = ActionName.SendPrivateMsg
|
||||
|
||||
protected async check(payload: OB11PostSendMsg): Promise<BaseCheckResult> {
|
||||
protected _handle(payload: OB11PostSendMsg) {
|
||||
payload.message_type = 'private'
|
||||
return super.check(payload)
|
||||
return super._handle(payload)
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { ActionName } from '../types'
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { MessageUnique } from '@/common/utils/messageUnique'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface ReturnType {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import fs from 'node:fs'
|
||||
import Path from 'node:path'
|
||||
@@ -82,4 +82,4 @@ function deleteCachePath(pathList: string[]) {
|
||||
for (const path of pathList) {
|
||||
emptyPath(path)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { OB11User } from '../../types'
|
||||
import { ActionName } from '../types'
|
||||
import { selfInfo } from '@/common/globalVars'
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { OB11Status } from '../../types'
|
||||
import { ActionName } from '../types'
|
||||
import { selfInfo } from '@/common/globalVars'
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { OB11Version } from '../../types'
|
||||
import { ActionName } from '../types'
|
||||
import { version } from '../../../version'
|
||||
|
@@ -1,26 +1,26 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Response {
|
||||
cookies: string
|
||||
bkn: string
|
||||
}
|
||||
|
||||
interface Payload {
|
||||
domain: string
|
||||
}
|
||||
|
||||
export class GetCookies extends BaseAction<Payload, Response> {
|
||||
actionName = ActionName.GetCookies
|
||||
|
||||
protected async _handle(payload: Payload) {
|
||||
if (!payload.domain) {
|
||||
throw '缺少参数 domain'
|
||||
}
|
||||
const cookiesObject = await this.ctx.ntUserApi.getCookies(payload.domain)
|
||||
//把获取到的cookiesObject转换成 k=v; 格式字符串拼接在一起
|
||||
const cookies = Object.entries(cookiesObject).map(([key, value]) => `${key}=${value}`).join('; ')
|
||||
const bkn = cookiesObject.skey ? this.ctx.ntWebApi.genBkn(cookiesObject.skey) : ''
|
||||
return { cookies, bkn }
|
||||
}
|
||||
}
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Response {
|
||||
cookies: string
|
||||
bkn: string
|
||||
}
|
||||
|
||||
interface Payload {
|
||||
domain: string
|
||||
}
|
||||
|
||||
export class GetCookies extends BaseAction<Payload, Response> {
|
||||
actionName = ActionName.GetCookies
|
||||
|
||||
protected async _handle(payload: Payload) {
|
||||
if (!payload.domain) {
|
||||
throw '缺少参数 domain'
|
||||
}
|
||||
const cookiesObject = await this.ctx.ntUserApi.getCookies(payload.domain)
|
||||
//把获取到的cookiesObject转换成 k=v; 格式字符串拼接在一起
|
||||
const cookies = Object.entries(cookiesObject).map(([key, value]) => `${key}=${value}`).join('; ')
|
||||
const bkn = cookiesObject.skey ? this.ctx.ntWebApi.genBkn(cookiesObject.skey) : ''
|
||||
return { cookies, bkn }
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { OB11User } from '../../types'
|
||||
import { OB11Entities } from '../../entities'
|
||||
import { ActionName } from '../types'
|
||||
@@ -32,4 +32,4 @@ export class GetFriendWithCategory extends BaseAction<void, OB11User[]> {
|
||||
throw new Error('this ntqq version not support, must be 26702 or later')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
|
@@ -1,6 +1,5 @@
|
||||
import BaseAction from '../BaseAction'
|
||||
import { BaseAction } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { NTQQFriendApi } from '../../../ntqqapi/api/friend'
|
||||
|
||||
interface Payload {
|
||||
flag: string
|
||||
|
@@ -1,8 +1,8 @@
|
||||
import BaseAction from '../action/BaseAction'
|
||||
import http from 'node:http'
|
||||
import cors from 'cors'
|
||||
import crypto from 'node:crypto'
|
||||
import express, { Express, Request, Response } from 'express'
|
||||
import { BaseAction } from '../action/BaseAction'
|
||||
import { Context } from 'cordis'
|
||||
import { llonebotError, selfInfo } from '@/common/globalVars'
|
||||
import { OB11Response } from '../action/OB11Response'
|
||||
@@ -211,4 +211,4 @@ namespace OB11HttpPost {
|
||||
}
|
||||
}
|
||||
|
||||
export { OB11Http, OB11HttpPost }
|
||||
export { OB11Http, OB11HttpPost }
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import BaseAction from '../action/BaseAction'
|
||||
import { BaseAction } from '../action/BaseAction'
|
||||
import { Context } from 'cordis'
|
||||
import { WebSocket, WebSocketServer } from 'ws'
|
||||
import { llonebotError } from '@/common/globalVars'
|
||||
@@ -339,4 +339,4 @@ namespace OB11WebSocketReverseManager {
|
||||
}
|
||||
}
|
||||
|
||||
export { OB11WebSocket, OB11WebSocketReverseManager }
|
||||
export { OB11WebSocket, OB11WebSocketReverseManager }
|
||||
|
Reference in New Issue
Block a user