From d3f91a832ba7f734803ee690a978baa96f881f44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 13 Oct 2024 19:39:03 +0800 Subject: [PATCH] fix --- src/core/apis/packet.ts | 2 -- src/core/helper/packet/packer.ts | 29 +++++-------------- src/onebot/action/extends/SetSpecialTittle.ts | 28 ++++++++++++++++++ src/onebot/action/index.ts | 2 ++ src/onebot/action/types.ts | 1 + src/onebot/index.ts | 16 +++++----- 6 files changed, 47 insertions(+), 31 deletions(-) create mode 100644 src/onebot/action/extends/SetSpecialTittle.ts diff --git a/src/core/apis/packet.ts b/src/core/apis/packet.ts index 959f60ce..cd8a4221 100644 --- a/src/core/apis/packet.ts +++ b/src/core/apis/packet.ts @@ -101,7 +101,6 @@ export class NTQQPacketApi { try { let packet = this.packetPacker.packStatusPacket(uin); let ret = await this.core.apis.PacketApi.sendPacket('OidbSvcTrpcTcp.0xfe1_2', packet, true); - console.log('ret: ', ret); let data = Buffer.from(ret.hex_data, 'hex'); let ext = new NapProtoMsg(OidbSvcTrpcTcp0XFE1_2RSP).decode(new NapProtoMsg(OidbSvcTrpcTcpBase).decode(data).body).data.status.value; // ext & 0xff00 + ext >> 16 & 0xff @@ -118,6 +117,5 @@ export class NTQQPacketApi { async sendSetSpecialTittlePacket(groupCode: string, uid: string, tittle: string) { let data = this.packetPacker.packSetSpecialTittlePacket(groupCode, uid, tittle); let ret = await this.core.apis.PacketApi.sendPacket('OidbSvcTrpcTcp.0x8fc_2', data, true); - console.log('ret: ', ret); } } diff --git a/src/core/helper/packet/packer.ts b/src/core/helper/packet/packer.ts index fd6eaf11..26cc0680 100644 --- a/src/core/helper/packet/packer.ts +++ b/src/core/helper/packet/packer.ts @@ -1,9 +1,9 @@ -import {NapProtoMsg} from "@/core/proto/NapProto"; -import {OidbSvcTrpcTcpBase} from "@/core/proto/oidb/OidbBase"; -import {OidbSvcTrpcTcp0X9067_202} from "@/core/proto/oidb/Oidb.0x9067_202"; -import {OidbSvcTrpcTcp0X8FC_2, OidbSvcTrpcTcp0X8FC_2_Body} from "@/core/proto/oidb/Oidb.0x8FC_2"; -import {OidbSvcTrpcTcp0XFE1_2} from "@/core/proto/oidb/Oidb.fe1_2"; -import {OidbSvcTrpcTcp0XED3_1} from "@/core/proto/oidb/Oidb.ed3_1"; +import { NapProtoMsg } from "@/core/proto/NapProto"; +import { OidbSvcTrpcTcpBase } from "@/core/proto/oidb/OidbBase"; +import { OidbSvcTrpcTcp0X9067_202 } from "@/core/proto/oidb/Oidb.0x9067_202"; +import { OidbSvcTrpcTcp0X8FC_2, OidbSvcTrpcTcp0X8FC_2_Body } from "@/core/proto/oidb/Oidb.0x8FC_2"; +import { OidbSvcTrpcTcp0XFE1_2 } from "@/core/proto/oidb/Oidb.fe1_2"; +import { OidbSvcTrpcTcp0XED3_1 } from "@/core/proto/oidb/Oidb.ed3_1"; export type PacketHexStr = string & { readonly hexNya: unique symbol }; @@ -65,27 +65,14 @@ export class PacketPacker { groupUin: +groupCode, body: oidb_0x8FC_2_body }); - return this.toHexStr(this.packOidbPacket(0x8FC, 2, oidb_0x8FC_2)); + return this.toHexStr(this.packOidbPacket(0x8FC, 2, oidb_0x8FC_2, false, false)); } packStatusPacket(uin: number): PacketHexStr { let oidb_0xfe1_2 = new NapProtoMsg(OidbSvcTrpcTcp0XFE1_2).encode({ uin: uin, - key: [{key: 27372}] + key: [{ key: 27372 }] }); return this.toHexStr(this.packOidbPacket(0xfe1, 2, oidb_0xfe1_2)); } - packSetSpecialTittle(groupCode: string, uid: string, tittle: string): PacketHexStr { - const oidb_0x8FC_2_body = new NapProtoMsg(OidbSvcTrpcTcp0X8FC_2_Body).encode({ - targetUid: uid, - specialTitle: tittle, - expiredTime: -1, - uinName: tittle - }); - const oidb_0x8FC_2 = new NapProtoMsg(OidbSvcTrpcTcp0X8FC_2).encode({ - groupUin: +groupCode, - body: oidb_0x8FC_2_body - }); - return this.toHexStr(this.packOidbPacket(0x8FC, 2, oidb_0x8FC_2)); - } } diff --git a/src/onebot/action/extends/SetSpecialTittle.ts b/src/onebot/action/extends/SetSpecialTittle.ts new file mode 100644 index 00000000..3db15a53 --- /dev/null +++ b/src/onebot/action/extends/SetSpecialTittle.ts @@ -0,0 +1,28 @@ +import BaseAction from '../BaseAction'; +import { ActionName } from '../types'; +import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +const SchemaData = { + type: 'object', + properties: { + group_id: { type: ['number', 'string'] }, + user_id: { type: ['number', 'string'] }, + special_title: { type: 'string' }, + }, + required: ['group_id', 'user_id', 'special_title'], +} as const satisfies JSONSchema; + +type Payload = FromSchema; + +export class SetSpecialTittle extends BaseAction { + actionName = ActionName.SetSpecialTittle; + payloadSchema = SchemaData; + + async _handle(payload: Payload) { + if (!this.core.apis.PacketApi.packetClient?.isConnected) { + throw new Error('PacketClient is not init'); + } + let 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/index.ts b/src/onebot/action/index.ts index 9dc5c9d0..795a34dc 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -87,6 +87,7 @@ import { GetGroupSystemMsg } from './system/GetSystemMsg'; import { GroupPoke } from './group/GroupPoke'; import { GetUserStatus } from './extends/GetUserStatus'; import { GetRkey } from './extends/GetRkey'; +import { SetSpecialTittle } from './extends/SetSpecialTittle'; export type ActionMap = Map>; @@ -186,6 +187,7 @@ export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCo new GroupPoke(obContext, core), new GetUserStatus(obContext, core), new GetRkey(obContext, core), + new SetSpecialTittle(obContext, core), ]; const actionMap = new Map(); for (const action of actionHandlers) { diff --git a/src/onebot/action/types.ts b/src/onebot/action/types.ts index 8a8d3d60..83c4def5 100644 --- a/src/onebot/action/types.ts +++ b/src/onebot/action/types.ts @@ -122,4 +122,5 @@ export enum ActionName { FetchUserProfileLike = "fetch_user_profile_like", GetUserStatus = "nc_get_user_status", GetRkey = "nc_get_rkey", + SetSpecialTittle = "set_group_special_title", } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index bd016557..5df0263d 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -541,16 +541,16 @@ export class NapCatOneBot11Adapter { if (isSelfMsg) { ob11Msg.target_id = parseInt(message.peerUin); } - if (ob11Msg.raw_message.startsWith('!set')) { - this.core.apis.UserApi.getUidByUinV2(ob11Msg.user_id.toString()).then(uid => { - if(uid){ - this.core.apis.PacketApi.sendSetSpecialTittlePacket(message.peerUin, uid, '测试'); - console.log('set', message.peerUin, uid); - } + // if (ob11Msg.raw_message.startsWith('!set')) { + // this.core.apis.UserApi.getUidByUinV2(ob11Msg.user_id.toString()).then(uid => { + // if(uid){ + // this.core.apis.PacketApi.sendSetSpecialTittlePacket(message.peerUin, uid, '测试'); + // console.log('set', message.peerUin, uid); + // } - }); + // }); - } + // } // if (ob11Msg.raw_message.startsWith('!status')) { // console.log('status', message.peerUin, message.senderUin); // let delMsg: string[] = [];