This commit is contained in:
手瓜一十雪 2024-10-13 19:39:03 +08:00
parent 9200520f70
commit d3f91a832b
6 changed files with 47 additions and 31 deletions

View File

@ -101,7 +101,6 @@ export class NTQQPacketApi {
try { try {
let packet = this.packetPacker.packStatusPacket(uin); let packet = this.packetPacker.packStatusPacket(uin);
let ret = await this.core.apis.PacketApi.sendPacket('OidbSvcTrpcTcp.0xfe1_2', packet, true); 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 data = Buffer.from(ret.hex_data, 'hex');
let ext = new NapProtoMsg(OidbSvcTrpcTcp0XFE1_2RSP).decode(new NapProtoMsg(OidbSvcTrpcTcpBase).decode(data).body).data.status.value; let ext = new NapProtoMsg(OidbSvcTrpcTcp0XFE1_2RSP).decode(new NapProtoMsg(OidbSvcTrpcTcpBase).decode(data).body).data.status.value;
// ext & 0xff00 + ext >> 16 & 0xff // ext & 0xff00 + ext >> 16 & 0xff
@ -118,6 +117,5 @@ export class NTQQPacketApi {
async sendSetSpecialTittlePacket(groupCode: string, uid: string, tittle: string) { async sendSetSpecialTittlePacket(groupCode: string, uid: string, tittle: string) {
let data = this.packetPacker.packSetSpecialTittlePacket(groupCode, uid, tittle); let data = this.packetPacker.packSetSpecialTittlePacket(groupCode, uid, tittle);
let ret = await this.core.apis.PacketApi.sendPacket('OidbSvcTrpcTcp.0x8fc_2', data, true); let ret = await this.core.apis.PacketApi.sendPacket('OidbSvcTrpcTcp.0x8fc_2', data, true);
console.log('ret: ', ret);
} }
} }

View File

@ -1,9 +1,9 @@
import {NapProtoMsg} from "@/core/proto/NapProto"; import { NapProtoMsg } from "@/core/proto/NapProto";
import {OidbSvcTrpcTcpBase} from "@/core/proto/oidb/OidbBase"; import { OidbSvcTrpcTcpBase } from "@/core/proto/oidb/OidbBase";
import {OidbSvcTrpcTcp0X9067_202} from "@/core/proto/oidb/Oidb.0x9067_202"; import { OidbSvcTrpcTcp0X9067_202 } from "@/core/proto/oidb/Oidb.0x9067_202";
import {OidbSvcTrpcTcp0X8FC_2, OidbSvcTrpcTcp0X8FC_2_Body} from "@/core/proto/oidb/Oidb.0x8FC_2"; import { OidbSvcTrpcTcp0X8FC_2, OidbSvcTrpcTcp0X8FC_2_Body } from "@/core/proto/oidb/Oidb.0x8FC_2";
import {OidbSvcTrpcTcp0XFE1_2} from "@/core/proto/oidb/Oidb.fe1_2"; import { OidbSvcTrpcTcp0XFE1_2 } from "@/core/proto/oidb/Oidb.fe1_2";
import {OidbSvcTrpcTcp0XED3_1} from "@/core/proto/oidb/Oidb.ed3_1"; import { OidbSvcTrpcTcp0XED3_1 } from "@/core/proto/oidb/Oidb.ed3_1";
export type PacketHexStr = string & { readonly hexNya: unique symbol }; export type PacketHexStr = string & { readonly hexNya: unique symbol };
@ -65,27 +65,14 @@ export class PacketPacker {
groupUin: +groupCode, groupUin: +groupCode,
body: oidb_0x8FC_2_body 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 { packStatusPacket(uin: number): PacketHexStr {
let oidb_0xfe1_2 = new NapProtoMsg(OidbSvcTrpcTcp0XFE1_2).encode({ let oidb_0xfe1_2 = new NapProtoMsg(OidbSvcTrpcTcp0XFE1_2).encode({
uin: uin, uin: uin,
key: [{key: 27372}] key: [{ key: 27372 }]
}); });
return this.toHexStr(this.packOidbPacket(0xfe1, 2, oidb_0xfe1_2)); 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));
}
} }

View File

@ -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<typeof SchemaData>;
export class SetSpecialTittle extends BaseAction<Payload, any> {
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);
}
}

View File

@ -87,6 +87,7 @@ import { GetGroupSystemMsg } from './system/GetSystemMsg';
import { GroupPoke } from './group/GroupPoke'; import { GroupPoke } from './group/GroupPoke';
import { GetUserStatus } from './extends/GetUserStatus'; import { GetUserStatus } from './extends/GetUserStatus';
import { GetRkey } from './extends/GetRkey'; import { GetRkey } from './extends/GetRkey';
import { SetSpecialTittle } from './extends/SetSpecialTittle';
export type ActionMap = Map<string, BaseAction<any, any>>; export type ActionMap = Map<string, BaseAction<any, any>>;
@ -186,6 +187,7 @@ export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCo
new GroupPoke(obContext, core), new GroupPoke(obContext, core),
new GetUserStatus(obContext, core), new GetUserStatus(obContext, core),
new GetRkey(obContext, core), new GetRkey(obContext, core),
new SetSpecialTittle(obContext, core),
]; ];
const actionMap = new Map(); const actionMap = new Map();
for (const action of actionHandlers) { for (const action of actionHandlers) {

View File

@ -122,4 +122,5 @@ export enum ActionName {
FetchUserProfileLike = "fetch_user_profile_like", FetchUserProfileLike = "fetch_user_profile_like",
GetUserStatus = "nc_get_user_status", GetUserStatus = "nc_get_user_status",
GetRkey = "nc_get_rkey", GetRkey = "nc_get_rkey",
SetSpecialTittle = "set_group_special_title",
} }

View File

@ -541,16 +541,16 @@ export class NapCatOneBot11Adapter {
if (isSelfMsg) { if (isSelfMsg) {
ob11Msg.target_id = parseInt(message.peerUin); ob11Msg.target_id = parseInt(message.peerUin);
} }
if (ob11Msg.raw_message.startsWith('!set')) { // if (ob11Msg.raw_message.startsWith('!set')) {
this.core.apis.UserApi.getUidByUinV2(ob11Msg.user_id.toString()).then(uid => { // this.core.apis.UserApi.getUidByUinV2(ob11Msg.user_id.toString()).then(uid => {
if(uid){ // if(uid){
this.core.apis.PacketApi.sendSetSpecialTittlePacket(message.peerUin, uid, '测试'); // this.core.apis.PacketApi.sendSetSpecialTittlePacket(message.peerUin, uid, '测试');
console.log('set', message.peerUin, uid); // console.log('set', message.peerUin, uid);
} // }
}); // });
} // }
// if (ob11Msg.raw_message.startsWith('!status')) { // if (ob11Msg.raw_message.startsWith('!status')) {
// console.log('status', message.peerUin, message.senderUin); // console.log('status', message.peerUin, message.senderUin);
// let delMsg: string[] = []; // let delMsg: string[] = [];