mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
@@ -218,6 +218,10 @@ export class NTQQGroupApi {
|
|||||||
return this.context.session.getRichMediaService().deleteGroupFolder(groupCode, folderId);
|
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) {
|
async addGroupEssence(groupCode: string, msgId: string) {
|
||||||
const MsgData = await this.context.session.getMsgService().getMsgsIncludeSelf({
|
const MsgData = await this.context.session.getMsgService().getMsgsIncludeSelf({
|
||||||
chatType: 2,
|
chatType: 2,
|
||||||
|
@@ -154,6 +154,20 @@ export class PacketOperationContext {
|
|||||||
return res.result.resId;
|
return res.result.resId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async MoveGroupFile(groupUin: number, fileUUID: string, currentParentDirectory: string, targetParentDirectory: string) {
|
||||||
|
const req = trans.MoveGroupFile.build(groupUin, fileUUID, currentParentDirectory, targetParentDirectory);
|
||||||
|
const resp = await this.context.client.sendOidbPacket(req, true);
|
||||||
|
const res = trans.MoveGroupFile.parse(resp);
|
||||||
|
return res.move.retCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
async RenameGroupFile(groupUin: number, fileUUID: string, currentParentDirectory: string, newName: string) {
|
||||||
|
const req = trans.RenameGroupFile.build(groupUin, fileUUID, currentParentDirectory, newName);
|
||||||
|
const resp = await this.context.client.sendOidbPacket(req, true);
|
||||||
|
const res = trans.RenameGroupFile.parse(resp);
|
||||||
|
return res.rename.retCode;
|
||||||
|
}
|
||||||
|
|
||||||
async GetGroupFileUrl(groupUin: number, fileUUID: string) {
|
async GetGroupFileUrl(groupUin: number, fileUUID: string) {
|
||||||
const req = trans.DownloadGroupFile.build(groupUin, fileUUID);
|
const req = trans.DownloadGroupFile.build(groupUin, fileUUID);
|
||||||
const resp = await this.context.client.sendOidbPacket(req, true);
|
const resp = await this.context.client.sendOidbPacket(req, true);
|
||||||
|
35
src/core/packet/transformer/action/MoveGroupFile.ts
Normal file
35
src/core/packet/transformer/action/MoveGroupFile.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import * as proto from '@/core/packet/transformer/proto';
|
||||||
|
import { NapProtoMsg } from '@napneko/nap-proto-core';
|
||||||
|
import { OidbPacket, PacketTransformer } from '@/core/packet/transformer/base';
|
||||||
|
import OidbBase from '@/core/packet/transformer/oidb/oidbBase';
|
||||||
|
|
||||||
|
class MoveGroupFile extends PacketTransformer<typeof proto.OidbSvcTrpcTcp0x6D6Response> {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
build(groupUin: number, fileUUID: string, currentParentDirectory: string, targetParentDirectory: string): OidbPacket {
|
||||||
|
const body = new NapProtoMsg(proto.OidbSvcTrpcTcp0x6D6).encode({
|
||||||
|
move: {
|
||||||
|
groupUin: groupUin,
|
||||||
|
appId: 5,
|
||||||
|
busId: 102,
|
||||||
|
fileId: fileUUID,
|
||||||
|
parentDirectory: currentParentDirectory,
|
||||||
|
targetDirectory: targetParentDirectory,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return OidbBase.build(0x6D6, 5, body, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
parse(data: Buffer) {
|
||||||
|
const oidbBody = OidbBase.parse(data).body;
|
||||||
|
const res = new NapProtoMsg(proto.OidbSvcTrpcTcp0x6D6Response).decode(oidbBody);
|
||||||
|
if (res.move.retCode !== 0) {
|
||||||
|
throw new Error(`sendGroupFileMoveReq error: ${res.move.clientWording} (code=${res.move.retCode})`);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new MoveGroupFile();
|
34
src/core/packet/transformer/action/RenameGroupFile.ts
Normal file
34
src/core/packet/transformer/action/RenameGroupFile.ts
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import * as proto from '@/core/packet/transformer/proto';
|
||||||
|
import { NapProtoMsg } from '@napneko/nap-proto-core';
|
||||||
|
import { OidbPacket, PacketTransformer } from '@/core/packet/transformer/base';
|
||||||
|
import OidbBase from '@/core/packet/transformer/oidb/oidbBase';
|
||||||
|
|
||||||
|
class RenameGroupFile extends PacketTransformer<typeof proto.OidbSvcTrpcTcp0x6D6Response> {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
build(groupUin: number, fileUUID: string, currentParentDirectory: string, newName: string): OidbPacket {
|
||||||
|
const body = new NapProtoMsg(proto.OidbSvcTrpcTcp0x6D6).encode({
|
||||||
|
rename: {
|
||||||
|
groupUin: groupUin,
|
||||||
|
busId: 102,
|
||||||
|
fileId: fileUUID,
|
||||||
|
parentFolder: currentParentDirectory,
|
||||||
|
newFileName: newName,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return OidbBase.build(0x6D6, 4, body, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
parse(data: Buffer) {
|
||||||
|
const oidbBody = OidbBase.parse(data).body;
|
||||||
|
const res = new NapProtoMsg(proto.OidbSvcTrpcTcp0x6D6Response).decode(oidbBody);
|
||||||
|
if (res.rename.retCode !== 0) {
|
||||||
|
throw new Error(`sendGroupFileRenameReq error: ${res.rename.clientWording} (code=${res.rename.retCode})`);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new RenameGroupFile();
|
@@ -6,3 +6,5 @@ export { default as GetStrangerInfo } from './GetStrangerInfo';
|
|||||||
export { default as SendPoke } from './SendPoke';
|
export { default as SendPoke } from './SendPoke';
|
||||||
export { default as SetSpecialTitle } from './SetSpecialTitle';
|
export { default as SetSpecialTitle } from './SetSpecialTitle';
|
||||||
export { default as ImageOCR } from './ImageOCR';
|
export { default as ImageOCR } from './ImageOCR';
|
||||||
|
export { default as MoveGroupFile } from './MoveGroupFile';
|
||||||
|
export { default as RenameGroupFile } from './RenameGroupFile';
|
||||||
|
@@ -200,7 +200,17 @@ export interface NodeIKernelRichMediaService {
|
|||||||
|
|
||||||
moveGroupFile(arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown, arg5: unknown): unknown;
|
moveGroupFile(arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown, arg5: unknown): unknown;
|
||||||
|
|
||||||
transGroupFile(arg1: unknown, arg2: unknown): unknown;
|
transGroupFile(groupCode: string, fileId: string): Promise<GeneralCallResult & {
|
||||||
|
transGroupFileResult: {
|
||||||
|
result: {
|
||||||
|
retCode: number
|
||||||
|
retMsg: string
|
||||||
|
clientWording: string
|
||||||
|
}
|
||||||
|
saveBusId: number
|
||||||
|
saveFilePath: string
|
||||||
|
}
|
||||||
|
}>;
|
||||||
|
|
||||||
searchGroupFile(
|
searchGroupFile(
|
||||||
keywords: Array<string>,
|
keywords: Array<string>,
|
||||||
|
33
src/onebot/action/extends/MoveGroupFile.ts
Normal file
33
src/onebot/action/extends/MoveGroupFile.ts
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
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(),
|
||||||
|
current_parent_directory: Type.String(),
|
||||||
|
target_parent_directory: Type.String(),
|
||||||
|
});
|
||||||
|
|
||||||
|
type Payload = Static<typeof SchemaData>;
|
||||||
|
|
||||||
|
interface MoveGroupFileResponse {
|
||||||
|
ok: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class MoveGroupFile extends GetPacketStatusDepends<Payload, MoveGroupFileResponse> {
|
||||||
|
override actionName = ActionName.MoveGroupFile;
|
||||||
|
override payloadSchema = SchemaData;
|
||||||
|
|
||||||
|
async _handle(payload: Payload) {
|
||||||
|
const contextMsgFile = FileNapCatOneBotUUID.decode(payload.file_id) || FileNapCatOneBotUUID.decodeModelId(payload.file_id);
|
||||||
|
if (contextMsgFile?.fileUUID) {
|
||||||
|
await this.core.apis.PacketApi.pkt.operation.MoveGroupFile(+payload.group_id, contextMsgFile.fileUUID, payload.current_parent_directory, payload.target_parent_directory);
|
||||||
|
return {
|
||||||
|
ok: true,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
throw new Error('real fileUUID not found!');
|
||||||
|
}
|
||||||
|
}
|
33
src/onebot/action/extends/RenameGroupFile.ts
Normal file
33
src/onebot/action/extends/RenameGroupFile.ts
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
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(),
|
||||||
|
current_parent_directory: Type.String(),
|
||||||
|
new_name: Type.String(),
|
||||||
|
});
|
||||||
|
|
||||||
|
type Payload = Static<typeof SchemaData>;
|
||||||
|
|
||||||
|
interface RenameGroupFileResponse {
|
||||||
|
ok: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class RenameGroupFile extends GetPacketStatusDepends<Payload, RenameGroupFileResponse> {
|
||||||
|
override actionName = ActionName.RenameGroupFile;
|
||||||
|
override payloadSchema = SchemaData;
|
||||||
|
|
||||||
|
async _handle(payload: Payload) {
|
||||||
|
const contextMsgFile = FileNapCatOneBotUUID.decode(payload.file_id) || FileNapCatOneBotUUID.decodeModelId(payload.file_id);
|
||||||
|
if (contextMsgFile?.fileUUID) {
|
||||||
|
await this.core.apis.PacketApi.pkt.operation.RenameGroupFile(+payload.group_id, contextMsgFile.fileUUID, payload.current_parent_directory, payload.new_name);
|
||||||
|
return {
|
||||||
|
ok: true,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
throw new Error('real fileUUID not found!');
|
||||||
|
}
|
||||||
|
}
|
34
src/onebot/action/extends/TransGroupFile.ts
Normal file
34
src/onebot/action/extends/TransGroupFile.ts
Normal file
@@ -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<typeof SchemaData>;
|
||||||
|
|
||||||
|
interface TransGroupFileResponse {
|
||||||
|
ok: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class TransGroupFile extends GetPacketStatusDepends<Payload, TransGroupFileResponse> {
|
||||||
|
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!');
|
||||||
|
}
|
||||||
|
}
|
@@ -109,6 +109,9 @@ import { ClickInlineKeyboardButton } from './extends/ClickInlineKeyboardButton';
|
|||||||
import { GetPrivateFileUrl } from './file/GetPrivateFileUrl';
|
import { GetPrivateFileUrl } from './file/GetPrivateFileUrl';
|
||||||
import { GetUnidirectionalFriendList } from './extends/GetUnidirectionalFriendList';
|
import { GetUnidirectionalFriendList } from './extends/GetUnidirectionalFriendList';
|
||||||
import SetGroupRemark from './extends/SetGroupRemark';
|
import SetGroupRemark from './extends/SetGroupRemark';
|
||||||
|
import { MoveGroupFile } from './extends/MoveGroupFile';
|
||||||
|
import { TransGroupFile } from './extends/TransGroupFile';
|
||||||
|
import { RenameGroupFile } from './extends/RenameGroupFile';
|
||||||
|
|
||||||
export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCore) {
|
export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCore) {
|
||||||
|
|
||||||
@@ -132,6 +135,9 @@ export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCo
|
|||||||
new SetGroupSign(obContext, core),
|
new SetGroupSign(obContext, core),
|
||||||
new SendGroupSign(obContext, core),
|
new SendGroupSign(obContext, core),
|
||||||
new GetClientkey(obContext, core),
|
new GetClientkey(obContext, core),
|
||||||
|
new MoveGroupFile(obContext, core),
|
||||||
|
new RenameGroupFile(obContext, core),
|
||||||
|
new TransGroupFile(obContext, core),
|
||||||
// onebot11
|
// onebot11
|
||||||
new SendLike(obContext, core),
|
new SendLike(obContext, core),
|
||||||
new GetMsg(obContext, core),
|
new GetMsg(obContext, core),
|
||||||
|
@@ -130,6 +130,10 @@ export const ActionName = {
|
|||||||
GetRkey: 'nc_get_rkey',
|
GetRkey: 'nc_get_rkey',
|
||||||
GetGroupShutList: 'get_group_shut_list',
|
GetGroupShutList: 'get_group_shut_list',
|
||||||
|
|
||||||
|
MoveGroupFile: 'move_group_file',
|
||||||
|
TransGroupFile: 'trans_group_file',
|
||||||
|
RenameGroupFile: 'rename_group_file',
|
||||||
|
|
||||||
GetGuildList: 'get_guild_list',
|
GetGuildList: 'get_guild_list',
|
||||||
GetGuildProfile: 'get_guild_service_profile',
|
GetGuildProfile: 'get_guild_service_profile',
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user