diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 80555d98..423e1e2d 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -218,6 +218,10 @@ export class NTQQGroupApi { return this.context.session.getRichMediaService().deleteGroupFolder(groupCode, folderId); } + async transGroupFile(groupCode: string, fileId: string) { + return this.context.session.getRichMediaService().transGroupFile(groupCode, fileId); + } + async addGroupEssence(groupCode: string, msgId: string) { const MsgData = await this.context.session.getMsgService().getMsgsIncludeSelf({ chatType: 2, diff --git a/src/core/services/NodeIKernelRichMediaService.ts b/src/core/services/NodeIKernelRichMediaService.ts index 83ebeaf8..684ea9ab 100644 --- a/src/core/services/NodeIKernelRichMediaService.ts +++ b/src/core/services/NodeIKernelRichMediaService.ts @@ -200,7 +200,17 @@ export interface NodeIKernelRichMediaService { moveGroupFile(arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown, arg5: unknown): unknown; - transGroupFile(arg1: unknown, arg2: unknown): unknown; + transGroupFile(groupCode: string, fileId: string): Promise; searchGroupFile( keywords: Array, diff --git a/src/onebot/action/extends/MoveGroupFile.ts b/src/onebot/action/extends/MoveGroupFile.ts index af71b339..8de368d0 100644 --- a/src/onebot/action/extends/MoveGroupFile.ts +++ b/src/onebot/action/extends/MoveGroupFile.ts @@ -17,7 +17,7 @@ interface MoveGroupFileResponse { } export class MoveGroupFile extends GetPacketStatusDepends { - override actionName = ActionName.GOCQHTTP_MoveGroupFile; + override actionName = ActionName.MoveGroupFile; override payloadSchema = SchemaData; async _handle(payload: Payload) { diff --git a/src/onebot/action/extends/TransGroupFile.ts b/src/onebot/action/extends/TransGroupFile.ts new file mode 100644 index 00000000..35b3275a --- /dev/null +++ b/src/onebot/action/extends/TransGroupFile.ts @@ -0,0 +1,34 @@ +import { ActionName } from '@/onebot/action/router'; +import { FileNapCatOneBotUUID } from '@/common/file-uuid'; +import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; +import { Static, Type } from '@sinclair/typebox'; + +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file_id: Type.String(), +}); + +type Payload = Static; + +interface TransGroupFileResponse { + ok: boolean; +} + +export class TransGroupFile extends GetPacketStatusDepends { + override actionName = ActionName.TransGroupFile; + override payloadSchema = SchemaData; + + async _handle(payload: Payload) { + const contextMsgFile = FileNapCatOneBotUUID.decode(payload.file_id) || FileNapCatOneBotUUID.decodeModelId(payload.file_id); + if (contextMsgFile?.fileUUID) { + const result = await this.core.apis.GroupApi.transGroupFile(payload.group_id.toString(), contextMsgFile.fileUUID); + if (result.transGroupFileResult.result.retCode === 0) { + return { + ok: true + }; + } + throw new Error(result.transGroupFileResult.result.retMsg); + } + throw new Error('real fileUUID not found!'); + } +} diff --git a/src/onebot/action/index.ts b/src/onebot/action/index.ts index 67fce31d..b5e1e09d 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -110,6 +110,7 @@ import { GetPrivateFileUrl } from './file/GetPrivateFileUrl'; import { GetUnidirectionalFriendList } from './extends/GetUnidirectionalFriendList'; import SetGroupRemark from './extends/SetGroupRemark'; import { MoveGroupFile } from './extends/MoveGroupFile'; +import { TransGroupFile } from './extends/TransGroupFile'; export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCore) { @@ -134,6 +135,7 @@ export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCo new SendGroupSign(obContext, core), new GetClientkey(obContext, core), new MoveGroupFile(obContext, core), + new TransGroupFile(obContext, core), // onebot11 new SendLike(obContext, core), new GetMsg(obContext, core), diff --git a/src/onebot/action/router.ts b/src/onebot/action/router.ts index 88329e75..200fe84e 100644 --- a/src/onebot/action/router.ts +++ b/src/onebot/action/router.ts @@ -85,7 +85,6 @@ export const ActionName = { GoCQHTTP_GetGroupRootFiles: 'get_group_root_files', GoCQHTTP_GetGroupFilesByFolder: 'get_group_files_by_folder', GOCQHTTP_GetGroupFileUrl: 'get_group_file_url', - GOCQHTTP_MoveGroupFile: 'move_group_file', GOCQHTTP_UploadPrivateFile: 'upload_private_file', // GOCQHTTP_ReloadEventFilter : 'reload_event_filter', GoCQHTTP_DownloadFile: 'download_file', @@ -131,6 +130,9 @@ export const ActionName = { GetRkey: 'nc_get_rkey', GetGroupShutList: 'get_group_shut_list', + MoveGroupFile: 'move_group_file', + TransGroupFile: 'trans_group_file', + GetGuildList: 'get_guild_list', GetGuildProfile: 'get_guild_service_profile',