style: lint

This commit is contained in:
手瓜一十雪 2024-10-15 09:06:47 +08:00
parent 964874bdad
commit 030ba15952
27 changed files with 167 additions and 167 deletions

View File

@ -371,7 +371,7 @@ export class NTQQFileApi {
const isNTV2 = imageAppid && ['1406', '1407'].includes(imageAppid); const isNTV2 = imageAppid && ['1406', '1407'].includes(imageAppid);
const imageFileId = parsedUrl.searchParams.get('fileid'); const imageFileId = parsedUrl.searchParams.get('fileid');
let rkeyData = { const rkeyData = {
private_rkey: 'CAQSKAB6JWENi5LM_xp9vumLbuThJSaYf-yzMrbZsuq7Uz2qEc3Rbib9LP4', private_rkey: 'CAQSKAB6JWENi5LM_xp9vumLbuThJSaYf-yzMrbZsuq7Uz2qEc3Rbib9LP4',
group_rkey: 'CAQSKAB6JWENi5LM_xp9vumLbuThJSaYf-yzMrbZsuq7Uz2qffcqm614gds', group_rkey: 'CAQSKAB6JWENi5LM_xp9vumLbuThJSaYf-yzMrbZsuq7Uz2qffcqm614gds',
online_rkey: false online_rkey: false
@ -393,7 +393,7 @@ export class NTQQFileApi {
if (!rkeyData.online_rkey) { if (!rkeyData.online_rkey) {
try { try {
let tempRkeyData = await this.rkeyManager.getRkey(); const tempRkeyData = await this.rkeyManager.getRkey();
rkeyData.group_rkey = tempRkeyData.group_rkey; rkeyData.group_rkey = tempRkeyData.group_rkey;
rkeyData.private_rkey = tempRkeyData.private_rkey; rkeyData.private_rkey = tempRkeyData.private_rkey;
rkeyData.online_rkey = tempRkeyData.expired_time > Date.now() / 1000; rkeyData.online_rkey = tempRkeyData.expired_time > Date.now() / 1000;
@ -404,10 +404,10 @@ export class NTQQFileApi {
if (isNTV2 && urlRkey) { if (isNTV2 && urlRkey) {
return IMAGE_HTTP_HOST_NT + urlRkey; return IMAGE_HTTP_HOST_NT + urlRkey;
} else if (isNTV2 && rkeyData.online_rkey) { } else if (isNTV2 && rkeyData.online_rkey) {
let rkey = imageAppid === '1406' ? rkeyData.private_rkey : rkeyData.group_rkey; const rkey = imageAppid === '1406' ? rkeyData.private_rkey : rkeyData.group_rkey;
return IMAGE_HTTP_HOST_NT + url + `&rkey=${rkey}`; return IMAGE_HTTP_HOST_NT + url + `&rkey=${rkey}`;
} else if (isNTV2 && imageFileId) { } else if (isNTV2 && imageFileId) {
let rkey = imageAppid === '1406' ? rkeyData.private_rkey : rkeyData.group_rkey; const rkey = imageAppid === '1406' ? rkeyData.private_rkey : rkeyData.group_rkey;
return IMAGE_HTTP_HOST + `/download?appid=${imageAppid}&fileid=${imageFileId}&rkey=${rkey}`; return IMAGE_HTTP_HOST + `/download?appid=${imageAppid}&fileid=${imageFileId}&rkey=${rkey}`;
} }

View File

@ -9,9 +9,9 @@ import {
MemberExtSourceType, MemberExtSourceType,
NapCatCore, NapCatCore,
} from '@/core'; } from '@/core';
import {isNumeric, solveAsyncProblem} from '@/common/helper'; import { isNumeric, solveAsyncProblem } from '@/common/helper';
import {LimitedHashTable} from '@/common/message-unique'; import { LimitedHashTable } from '@/common/message-unique';
import {NTEventWrapper} from '@/common/event'; import { NTEventWrapper } from '@/common/event';
export class NTQQGroupApi { export class NTQQGroupApi {
context: InstanceContext; context: InstanceContext;
@ -46,8 +46,8 @@ export class NTQQGroupApi {
} }
async sendPacketRkey() { async sendPacketRkey() {
let data = this.core.apis.PacketApi.packetPacker.packRkeyPacket() const data = this.core.apis.PacketApi.packetPacker.packRkeyPacket();
let ret = await this.core.apis.PacketApi.sendPacket('OidbSvcTrpcTcp.0x9067_202', data, true); const ret = await this.core.apis.PacketApi.sendPacket('OidbSvcTrpcTcp.0x9067_202', data, true);
//console.log('ret: ', ret); //console.log('ret: ', ret);
} }

View File

@ -1,14 +1,14 @@
import * as os from 'os'; import * as os from 'os';
import {InstanceContext, NapCatCore} from '..'; import { InstanceContext, NapCatCore } from '..';
import offset from '@/core/external/offset.json'; import offset from '@/core/external/offset.json';
import {PacketClient, RecvPacketData} from '@/core/packet/client'; import { PacketClient, RecvPacketData } from '@/core/packet/client';
import {PacketSession} from "@/core/packet/session"; import { PacketSession } from "@/core/packet/session";
import {PacketHexStr, PacketPacker} from "@/core/packet/packer"; import { PacketHexStr, PacketPacker } from "@/core/packet/packer";
import {NapProtoMsg} from '@/core/packet/proto/NapProto'; import { NapProtoMsg } from '@/core/packet/proto/NapProto';
import {OidbSvcTrpcTcp0X9067_202_Rsp_Body} from '@/core/packet/proto/oidb/Oidb.0x9067_202'; import { OidbSvcTrpcTcp0X9067_202_Rsp_Body } from '@/core/packet/proto/oidb/Oidb.0x9067_202';
import {OidbSvcTrpcTcpBase, OidbSvcTrpcTcpBaseRsp} from '@/core/packet/proto/oidb/OidbBase'; import { OidbSvcTrpcTcpBase, OidbSvcTrpcTcpBaseRsp } from '@/core/packet/proto/oidb/OidbBase';
import {OidbSvcTrpcTcp0XFE1_2RSP} from '@/core/packet/proto/oidb/Oidb.fe1_2'; import { OidbSvcTrpcTcp0XFE1_2RSP } from '@/core/packet/proto/oidb/Oidb.fe1_2';
import {PacketForwardNode} from "@/core/packet/msg/entity/forward"; import { PacketForwardNode } from "@/core/packet/msg/entity/forward";
interface OffsetType { interface OffsetType {
[key: string]: { [key: string]: {
@ -32,9 +32,9 @@ export class NTQQPacketApi {
this.core = core; this.core = core;
this.packetPacker = new PacketPacker(); this.packetPacker = new PacketPacker();
this.packetSession = undefined; this.packetSession = undefined;
let config = this.core.configLoader.configData; const config = this.core.configLoader.configData;
if (config && config.packetServer && config.packetServer.length > 0) { if (config && config.packetServer && config.packetServer.length > 0) {
let serverUrl = this.core.configLoader.configData.packetServer ?? '127.0.0.1:8086'; const serverUrl = this.core.configLoader.configData.packetServer ?? '127.0.0.1:8086';
this.InitSendPacket(serverUrl, this.context.basicInfoWrapper.getFullQQVesion()) this.InitSendPacket(serverUrl, this.context.basicInfoWrapper.getFullQQVesion())
.then() .then()
.catch(this.core.context.logger.logError.bind(this.core.context.logger)); .catch(this.core.context.logger.logError.bind(this.core.context.logger));
@ -50,10 +50,10 @@ export class NTQQPacketApi {
async InitSendPacket(serverUrl: string, qqversion: string) { async InitSendPacket(serverUrl: string, qqversion: string) {
this.serverUrl = serverUrl; this.serverUrl = serverUrl;
this.qqVersion = qqversion; this.qqVersion = qqversion;
let offsetTable: OffsetType = offset; const offsetTable: OffsetType = offset;
let table = offsetTable[qqversion + '-' + os.arch()]; const table = offsetTable[qqversion + '-' + os.arch()];
if (!table) return false; if (!table) return false;
let url = 'ws://' + this.serverUrl + '/ws'; const url = 'ws://' + this.serverUrl + '/ws';
this.packetSession = new PacketSession(this.core.context.logger, new PacketClient(url, this.core)); this.packetSession = new PacketSession(this.core.context.logger, new PacketClient(url, this.core));
await this.packetSession.client.connect(); await this.packetSession.client.connect();
await this.packetSession.client.init(process.pid, table.recv, table.send); await this.packetSession.client.init(process.pid, table.recv, table.send);
@ -65,18 +65,18 @@ export class NTQQPacketApi {
} }
async sendPokePacket(group: number, peer: number) { async sendPokePacket(group: number, peer: number) {
let data = this.packetPacker.packPokePacket(group, peer); const data = this.packetPacker.packPokePacket(group, peer);
let ret = await this.sendPacket('OidbSvcTrpcTcp.0xed3_1', data, false); const ret = await this.sendPacket('OidbSvcTrpcTcp.0xed3_1', data, false);
//console.log('ret: ', ret); //console.log('ret: ', ret);
} }
async sendRkeyPacket() { async sendRkeyPacket() {
let packet = this.packetPacker.packRkeyPacket(); const packet = this.packetPacker.packRkeyPacket();
let ret = await this.sendPacket('OidbSvcTrpcTcp.0x9067_202', packet, true); const ret = await this.sendPacket('OidbSvcTrpcTcp.0x9067_202', packet, true);
if (!ret?.hex_data) return [] if (!ret?.hex_data) return [];
let body = new NapProtoMsg(OidbSvcTrpcTcpBaseRsp).decode(Buffer.from(ret.hex_data, 'hex')).body; const body = new NapProtoMsg(OidbSvcTrpcTcpBaseRsp).decode(Buffer.from(ret.hex_data, 'hex')).body;
//console.log('ret: ', Buffer.from(body).toString('hex')); //console.log('ret: ', Buffer.from(body).toString('hex'));
let retData = new NapProtoMsg(OidbSvcTrpcTcp0X9067_202_Rsp_Body).decode(body) const retData = new NapProtoMsg(OidbSvcTrpcTcp0X9067_202_Rsp_Body).decode(body);
//console.log('ret: ', JSON.stringify(retData.data.rkeyList)); //console.log('ret: ', JSON.stringify(retData.data.rkeyList));
return retData.data.rkeyList; return retData.data.rkeyList;
} }
@ -84,30 +84,30 @@ export class NTQQPacketApi {
async sendStatusPacket(uin: number): Promise<{ status: number; ext_status: number; } | undefined> { async sendStatusPacket(uin: number): Promise<{ status: number; ext_status: number; } | undefined> {
let status = 0; let status = 0;
try { try {
let packet = this.packetPacker.packStatusPacket(uin); const packet = this.packetPacker.packStatusPacket(uin);
let ret = await this.sendPacket('OidbSvcTrpcTcp.0xfe1_2', packet, true); const ret = await this.sendPacket('OidbSvcTrpcTcp.0xfe1_2', packet, true);
let data = Buffer.from(ret.hex_data, 'hex'); const data = Buffer.from(ret.hex_data, 'hex');
let ext = new NapProtoMsg(OidbSvcTrpcTcp0XFE1_2RSP).decode(new NapProtoMsg(OidbSvcTrpcTcpBase).decode(data).body).data.status.value; const 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
let extBigInt = BigInt(ext); // 转换为 BigInt const extBigInt = BigInt(ext); // 转换为 BigInt
if (extBigInt <= 10n) { if (extBigInt <= 10n) {
return {status: Number(extBigInt) * 10, ext_status: 0}; return { status: Number(extBigInt) * 10, ext_status: 0 };
} }
status = Number((extBigInt & 0xff00n) + ((extBigInt >> 16n) & 0xffn)); // 使用 BigInt 操作符 status = Number((extBigInt & 0xff00n) + ((extBigInt >> 16n) & 0xffn)); // 使用 BigInt 操作符
return {status: 10, ext_status: status}; return { status: 10, ext_status: status };
} catch (error) { } catch (error) {
return undefined return undefined;
} }
} }
async sendSetSpecialTittlePacket(groupCode: string, uid: string, tittle: string) { async sendSetSpecialTittlePacket(groupCode: string, uid: string, tittle: string) {
let data = this.packetPacker.packSetSpecialTittlePacket(groupCode, uid, tittle); const data = this.packetPacker.packSetSpecialTittlePacket(groupCode, uid, tittle);
let ret = await this.sendPacket('OidbSvcTrpcTcp.0x8fc_2', data, true); const ret = await this.sendPacket('OidbSvcTrpcTcp.0x8fc_2', data, true);
} }
async sendUploadForwardMsg(msg: PacketForwardNode[], groupUin: number = 0) { async sendUploadForwardMsg(msg: PacketForwardNode[], groupUin: number = 0) {
let data = this.packetPacker.packUploadForwardMsg(this.core.selfInfo.uid, msg, groupUin); const data = this.packetPacker.packUploadForwardMsg(this.core.selfInfo.uid, msg, groupUin);
let ret = await this.sendPacket('trpc.group.long_msg_interface.MsgService.SsoSendLongMsg', data, true); const ret = await this.sendPacket('trpc.group.long_msg_interface.MsgService.SsoSendLongMsg', data, true);
console.log(JSON.stringify(ret)); console.log(JSON.stringify(ret));
} }
} }

View File

@ -124,10 +124,10 @@ export class NTQQUserApi {
const ClientKeyData = await this.forceFetchClientKey(); const ClientKeyData = await this.forceFetchClientKey();
const requestUrl = 'https://ssl.ptlogin2.qq.com/jump?ptlang=1033&clientuin=' + this.core.selfInfo.uin + const requestUrl = 'https://ssl.ptlogin2.qq.com/jump?ptlang=1033&clientuin=' + this.core.selfInfo.uin +
'&clientkey=' + ClientKeyData.clientKey + '&u1=https%3A%2F%2F' + domain + '%2F' + this.core.selfInfo.uin + '%2Finfocenter&keyindex=19%27'; '&clientkey=' + ClientKeyData.clientKey + '&u1=https%3A%2F%2F' + domain + '%2F' + this.core.selfInfo.uin + '%2Finfocenter&keyindex=19%27';
let data = await RequestUtil.HttpsGetCookies(requestUrl); const data = await RequestUtil.HttpsGetCookies(requestUrl);
if (!data.p_skey || data.p_skey.length == 0) { if (!data.p_skey || data.p_skey.length == 0) {
try { try {
let pskey = (await this.getPSkey([domain])).domainPskeyMap.get(domain); const pskey = (await this.getPSkey([domain])).domainPskeyMap.get(domain);
if (pskey) data.p_skey = pskey; if (pskey) data.p_skey = pskey;
} catch { } catch {
return data; return data;

View File

@ -43,7 +43,7 @@ export class RkeyManager {
//刷新rkey //刷新rkey
for (const url of this.serverUrl) { for (const url of this.serverUrl) {
try { try {
let temp = await RequestUtil.HttpGetJson<ServerRkeyData>(url, 'GET'); const temp = await RequestUtil.HttpGetJson<ServerRkeyData>(url, 'GET');
this.rkeyData = { this.rkeyData = {
group_rkey: temp.group_rkey.slice(6), group_rkey: temp.group_rkey.slice(6),
private_rkey: temp.private_rkey.slice(6), private_rkey: temp.private_rkey.slice(6),

View File

@ -1,9 +1,9 @@
import {LogWrapper} from "@/common/log"; import { LogWrapper } from "@/common/log";
import {LRUCache} from "@/common/lru-cache"; import { LRUCache } from "@/common/lru-cache";
import WebSocket, {Data} from "ws"; import WebSocket, { Data } from "ws";
import crypto, {createHash} from "crypto"; import crypto, { createHash } from "crypto";
import {NapCatCore} from "@/core"; import { NapCatCore } from "@/core";
import {PacketHexStr} from "@/core/packet/packer"; import { PacketHexStr } from "@/core/packet/packer";
export interface RecvPacket { export interface RecvPacket {
type: string, // 仅recv type: string, // 仅recv
@ -24,7 +24,7 @@ export class PacketClient {
private maxReconnectAttempts: number = 5; private maxReconnectAttempts: number = 5;
private cb = new LRUCache<string, (json: RecvPacketData) => Promise<void>>(500); // trace_id-type callback private cb = new LRUCache<string, (json: RecvPacketData) => Promise<void>>(500); // trace_id-type callback
private readonly clientUrl: string = ''; private readonly clientUrl: string = '';
private readonly napCatCore: NapCatCore private readonly napCatCore: NapCatCore;
private readonly logger: LogWrapper; private readonly logger: LogWrapper;
constructor(url: string, core: NapCatCore) { constructor(url: string, core: NapCatCore) {
@ -39,7 +39,7 @@ export class PacketClient {
private randText(len: number) { private randText(len: number) {
let text = ''; let text = '';
let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
for (let i = 0; i < len; i++) { for (let i = 0; i < len; i++) {
text += possible.charAt(Math.floor(Math.random() * possible.length)); text += possible.charAt(Math.floor(Math.random() * possible.length));
} }
@ -147,10 +147,10 @@ export class PacketClient {
private async handleMessage(message: Data): Promise<void> { private async handleMessage(message: Data): Promise<void> {
try { try {
let json: RecvPacket = JSON.parse(message.toString()); const json: RecvPacket = JSON.parse(message.toString());
let trace_id_md5 = json.trace_id_md5; const trace_id_md5 = json.trace_id_md5;
let action = json?.type ?? 'init'; const action = json?.type ?? 'init';
let event = this.cb.get(trace_id_md5 + action); const event = this.cb.get(trace_id_md5 + action);
if (event) { if (event) {
await event(json.data); await event(json.data);
} }
@ -168,8 +168,8 @@ export class PacketClient {
this.logger.logError('NapCat.Packet is not init'); this.logger.logError('NapCat.Packet is not init');
return undefined; return undefined;
} }
let md5 = crypto.createHash('md5').update(data).digest('hex'); const md5 = crypto.createHash('md5').update(data).digest('hex');
let trace_id = (this.randText(4) + md5 + data).slice(0, data.length / 2); const trace_id = (this.randText(4) + md5 + data).slice(0, data.length / 2);
this.sendCommand(cmd, data, trace_id, rsp, 5000, async () => { this.sendCommand(cmd, data, trace_id, rsp, 5000, async () => {
await this.napCatCore.context.session.getMsgService().sendSsoCmdReqByContend(cmd, trace_id); await this.napCatCore.context.session.getMsgService().sendSsoCmdReqByContend(cmd, trace_id);
}).then((res) => resolve(res)).catch((e) => reject(e)); }).then((res) => resolve(res)).catch((e) => reject(e));

View File

@ -1,12 +1,12 @@
import {PushMsgBody} from "@/core/packet/proto/message/message"; import { PushMsgBody } from "@/core/packet/proto/message/message";
import {NapProtoEncodeStructType} from "@/core/packet/proto/NapProto"; import { NapProtoEncodeStructType } from "@/core/packet/proto/NapProto";
import * as crypto from "crypto"; import * as crypto from "crypto";
import {PacketForwardNode} from "@/core/packet/msg/entity/forward"; import { PacketForwardNode } from "@/core/packet/msg/entity/forward";
export class PacketMsgBuilder { export class PacketMsgBuilder {
buildFakeMsg(selfUid: string, element: PacketForwardNode[]): NapProtoEncodeStructType<typeof PushMsgBody>[] { buildFakeMsg(selfUid: string, element: PacketForwardNode[]): NapProtoEncodeStructType<typeof PushMsgBody>[] {
return element.map((node): NapProtoEncodeStructType<typeof PushMsgBody> => { return element.map((node): NapProtoEncodeStructType<typeof PushMsgBody> => {
const avatar = `https://q.qlogo.cn/headimg_dl?dst_uin=${node.senderId}&spec=640&img_type=jpg` const avatar = `https://q.qlogo.cn/headimg_dl?dst_uin=${node.senderId}&spec=640&img_type=jpg`;
return { return {
responseHead: { responseHead: {
fromUid: "", fromUid: "",
@ -46,7 +46,7 @@ export class PacketMsgBuilder {
) )
} }
} }
} };
}); });
} }
} }

View File

@ -1,5 +1,5 @@
import {NapProtoEncodeStructType, NapProtoMsg} from "@/core/packet/proto/NapProto"; import { NapProtoEncodeStructType, NapProtoMsg } from "@/core/packet/proto/NapProto";
import {Elem, MentionExtra} from "@/core/packet/proto/message/element"; import { Elem, MentionExtra } from "@/core/packet/proto/message/element";
import { import {
AtType, AtType,
SendArkElement, SendArkElement,
@ -54,23 +54,23 @@ export class PacketMsgAtElement extends PacketMsgTextElement {
constructor(element: SendTextElement) { constructor(element: SendTextElement) {
super(element); super(element);
this.targetUid = element.textElement.atNtUid; this.targetUid = element.textElement.atNtUid;
this.atAll = element.textElement.atType === AtType.atAll this.atAll = element.textElement.atType === AtType.atAll;
} }
buildElement(): NapProtoEncodeStructType<typeof Elem> { buildElement(): NapProtoEncodeStructType<typeof Elem> {
const res = new NapProtoMsg(MentionExtra).encode({ const res = new NapProtoMsg(MentionExtra).encode({
type: this.atAll ? 1 : 2, type: this.atAll ? 1 : 2,
uin: 0, uin: 0,
field5: 0, field5: 0,
uid: this.targetUid, uid: this.targetUid,
} }
) );
return { return {
text: { text: {
str: this.text, str: this.text,
pbReserve: res pbReserve: res
} }
} };
} }
} }

View File

@ -1,5 +1,5 @@
import {IPacketMsgElement} from "@/core/packet/msg/element"; import { IPacketMsgElement } from "@/core/packet/msg/element";
import {SendMessageElement} from "@/core"; import { SendMessageElement } from "@/core";
export interface PacketForwardNode { export interface PacketForwardNode {
groupId?: number groupId?: number

View File

@ -5,14 +5,14 @@ import { OidbSvcTrpcTcp0X9067_202 } from "@/core/packet/proto/oidb/Oidb.0x9067_2
import { OidbSvcTrpcTcp0X8FC_2, OidbSvcTrpcTcp0X8FC_2_Body } from "@/core/packet/proto/oidb/Oidb.0x8FC_2"; import { OidbSvcTrpcTcp0X8FC_2, OidbSvcTrpcTcp0X8FC_2_Body } from "@/core/packet/proto/oidb/Oidb.0x8FC_2";
import { OidbSvcTrpcTcp0XFE1_2 } from "@/core/packet/proto/oidb/Oidb.fe1_2"; import { OidbSvcTrpcTcp0XFE1_2 } from "@/core/packet/proto/oidb/Oidb.fe1_2";
import { OidbSvcTrpcTcp0XED3_1 } from "@/core/packet/proto/oidb/Oidb.ed3_1"; import { OidbSvcTrpcTcp0XED3_1 } from "@/core/packet/proto/oidb/Oidb.ed3_1";
import {LongMsgResult, SendLongMsgReq} from "@/core/packet/proto/message/action"; import { LongMsgResult, SendLongMsgReq } from "@/core/packet/proto/message/action";
import {PacketMsgBuilder} from "@/core/packet/msg/builder"; import { PacketMsgBuilder } from "@/core/packet/msg/builder";
import {PacketForwardNode} from "@/core/packet/msg/entity/forward"; import { PacketForwardNode } from "@/core/packet/msg/entity/forward";
export type PacketHexStr = string & { readonly hexNya: unique symbol }; export type PacketHexStr = string & { readonly hexNya: unique symbol };
export class PacketPacker { export class PacketPacker {
private packetBuilder: PacketMsgBuilder private packetBuilder: PacketMsgBuilder;
constructor() { constructor() {
this.packetBuilder = new PacketMsgBuilder(); this.packetBuilder = new PacketMsgBuilder();
@ -79,7 +79,7 @@ export class PacketPacker {
} }
packStatusPacket(uin: number): PacketHexStr { packStatusPacket(uin: number): PacketHexStr {
let oidb_0xfe1_2 = new NapProtoMsg(OidbSvcTrpcTcp0XFE1_2).encode({ const oidb_0xfe1_2 = new NapProtoMsg(OidbSvcTrpcTcp0XFE1_2).encode({
uin: uin, uin: uin,
key: [{ key: 27372 }] key: [{ key: 27372 }]
}); });
@ -98,7 +98,7 @@ export class PacketPacker {
} }
} }
} }
) );
// console.log("packUploadForwardMsg LONGMSGRESULT!!!", this.toHexStr(longMsgResultData)); // console.log("packUploadForwardMsg LONGMSGRESULT!!!", this.toHexStr(longMsgResultData));
const payload = zlib.gzipSync(Buffer.from(longMsgResultData)); const payload = zlib.gzipSync(Buffer.from(longMsgResultData));
// console.log("packUploadForwardMsg PAYLOAD!!!", payload); // console.log("packUploadForwardMsg PAYLOAD!!!", payload);
@ -116,7 +116,7 @@ export class PacketPacker {
field1: 4, field2: 1, field3: 7, field4: 0 field1: 4, field2: 1, field3: 7, field4: 0
} }
} }
) );
// console.log("packUploadForwardMsg REQ!!!", req); // console.log("packUploadForwardMsg REQ!!!", req);
return this.toHexStr(req); return this.toHexStr(req);
} }

View File

@ -1,6 +1,6 @@
import {ScalarType} from "@protobuf-ts/runtime"; import { ScalarType } from "@protobuf-ts/runtime";
import {ProtoField} from "../NapProto"; import { ProtoField } from "../NapProto";
import {PushMsgBody} from "@/core/packet/proto/message/message"; import { PushMsgBody } from "@/core/packet/proto/message/message";
export const LongMsgResult = { export const LongMsgResult = {
action: ProtoField(2, () => LongMsgAction) action: ProtoField(2, () => LongMsgAction)

View File

@ -20,7 +20,7 @@ export const Elem = {
srcMsg: ProtoField(45, () => SrcMsg, true), srcMsg: ProtoField(45, () => SrcMsg, true),
lightAppElem: ProtoField(51, () => LightAppElem, true), lightAppElem: ProtoField(51, () => LightAppElem, true),
commonElem: ProtoField(53, () => CommonElem, true), commonElem: ProtoField(53, () => CommonElem, true),
} };
export const Text = { export const Text = {
str: ProtoField(1, ScalarType.STRING, true), str: ProtoField(1, ScalarType.STRING, true),
@ -29,7 +29,7 @@ export const Text = {
attr7Buf: ProtoField(4, ScalarType.BYTES, true), attr7Buf: ProtoField(4, ScalarType.BYTES, true),
buf: ProtoField(11, ScalarType.BYTES, true), buf: ProtoField(11, ScalarType.BYTES, true),
pbReserve: ProtoField(12, ScalarType.BYTES, true), pbReserve: ProtoField(12, ScalarType.BYTES, true),
} };
export const Face = { export const Face = {
index: ProtoField(1, ScalarType.INT32, true), index: ProtoField(1, ScalarType.INT32, true),
@ -41,7 +41,7 @@ export const OnlineImage = {
guid: ProtoField(1, ScalarType.BYTES), guid: ProtoField(1, ScalarType.BYTES),
filePath: ProtoField(2, ScalarType.BYTES), filePath: ProtoField(2, ScalarType.BYTES),
oldVerSendFile: ProtoField(3, ScalarType.BYTES), oldVerSendFile: ProtoField(3, ScalarType.BYTES),
} };
export const NotOnlineImage = { export const NotOnlineImage = {
filePath: ProtoField(1, ScalarType.STRING), filePath: ProtoField(1, ScalarType.STRING),
@ -73,7 +73,7 @@ export const NotOnlineImage = {
x400Width: ProtoField(27, ScalarType.INT32), x400Width: ProtoField(27, ScalarType.INT32),
x400Height: ProtoField(28, ScalarType.INT32), x400Height: ProtoField(28, ScalarType.INT32),
pbRes: ProtoField(29, () => NotOnlineImage_PbReserve), pbRes: ProtoField(29, () => NotOnlineImage_PbReserve),
} };
export const NotOnlineImage_PbReserve = { export const NotOnlineImage_PbReserve = {
subType: ProtoField(1, ScalarType.INT32), subType: ProtoField(1, ScalarType.INT32),
@ -84,7 +84,7 @@ export const NotOnlineImage_PbReserve = {
field20: ProtoField(20, () => NotOnlineImage_PbReserve2), field20: ProtoField(20, () => NotOnlineImage_PbReserve2),
url: ProtoField(30, ScalarType.STRING), url: ProtoField(30, ScalarType.STRING),
md5Str: ProtoField(31, ScalarType.STRING), md5Str: ProtoField(31, ScalarType.STRING),
} };
export const NotOnlineImage_PbReserve2 = { export const NotOnlineImage_PbReserve2 = {
field1: ProtoField(1, ScalarType.INT32), field1: ProtoField(1, ScalarType.INT32),
@ -93,12 +93,12 @@ export const NotOnlineImage_PbReserve2 = {
field4: ProtoField(4, ScalarType.INT32), field4: ProtoField(4, ScalarType.INT32),
field5: ProtoField(5, ScalarType.INT32), field5: ProtoField(5, ScalarType.INT32),
field7: ProtoField(7, ScalarType.STRING), field7: ProtoField(7, ScalarType.STRING),
} };
export const TransElem = { export const TransElem = {
elemType: ProtoField(1, ScalarType.INT32), elemType: ProtoField(1, ScalarType.INT32),
elemValue: ProtoField(2, ScalarType.BYTES), elemValue: ProtoField(2, ScalarType.BYTES),
} };
export const MarketFace = { export const MarketFace = {
faceName: ProtoField(1, ScalarType.BYTES), faceName: ProtoField(1, ScalarType.BYTES),
@ -114,7 +114,7 @@ export const MarketFace = {
imageHeight: ProtoField(11, ScalarType.INT32), imageHeight: ProtoField(11, ScalarType.INT32),
mobileparam: ProtoField(12, ScalarType.BYTES), mobileparam: ProtoField(12, ScalarType.BYTES),
pbReserve: ProtoField(13, ScalarType.BYTES), pbReserve: ProtoField(13, ScalarType.BYTES),
} };
export const CustomFace = { export const CustomFace = {
guid: ProtoField(1, ScalarType.BYTES), guid: ProtoField(1, ScalarType.BYTES),
@ -151,12 +151,12 @@ export const CustomFace = {
x400Width: ProtoField(32, ScalarType.INT32), x400Width: ProtoField(32, ScalarType.INT32),
x400Height: ProtoField(33, ScalarType.INT32), x400Height: ProtoField(33, ScalarType.INT32),
pbRes: ProtoField(34, () => CustomFace_PbReserve, true), pbRes: ProtoField(34, () => CustomFace_PbReserve, true),
} };
export const CustomFace_PbReserve = { export const CustomFace_PbReserve = {
subType: ProtoField(1, ScalarType.INT32), subType: ProtoField(1, ScalarType.INT32),
summary: ProtoField(9, ScalarType.STRING), summary: ProtoField(9, ScalarType.STRING),
} };
export const ElemFlags2 = { export const ElemFlags2 = {
colorTextId: ProtoField(1, ScalarType.UINT32), colorTextId: ProtoField(1, ScalarType.UINT32),
@ -173,7 +173,7 @@ export const ElemFlags2 = {
customFont: ProtoField(12, ScalarType.UINT32), customFont: ProtoField(12, ScalarType.UINT32),
pcSupportDef: ProtoField(13, () => PcSupportDef), pcSupportDef: ProtoField(13, () => PcSupportDef),
crmFlags: ProtoField(14, ScalarType.UINT32, true), crmFlags: ProtoField(14, ScalarType.UINT32, true),
} };
export const PcSupportDef = { export const PcSupportDef = {
pcPtlBegin: ProtoField(1, ScalarType.UINT32), pcPtlBegin: ProtoField(1, ScalarType.UINT32),
@ -182,12 +182,12 @@ export const PcSupportDef = {
macPtlEnd: ProtoField(4, ScalarType.UINT32), macPtlEnd: ProtoField(4, ScalarType.UINT32),
ptlsSupport: ProtoField(5, ScalarType.INT32, false, true), ptlsSupport: ProtoField(5, ScalarType.INT32, false, true),
ptlsNotSupport: ProtoField(6, ScalarType.UINT32, false, true), ptlsNotSupport: ProtoField(6, ScalarType.UINT32, false, true),
} };
export const Instance = { export const Instance = {
appId: ProtoField(1, ScalarType.UINT32), appId: ProtoField(1, ScalarType.UINT32),
instId: ProtoField(2, ScalarType.UINT32), instId: ProtoField(2, ScalarType.UINT32),
} };
export const RichMsg = { export const RichMsg = {
template1: ProtoField(1, ScalarType.BYTES, true), template1: ProtoField(1, ScalarType.BYTES, true),
@ -195,7 +195,7 @@ export const RichMsg = {
msgResId: ProtoField(3, ScalarType.BYTES, true), msgResId: ProtoField(3, ScalarType.BYTES, true),
rand: ProtoField(4, ScalarType.INT32, true), rand: ProtoField(4, ScalarType.INT32, true),
seq: ProtoField(5, ScalarType.UINT32, true), seq: ProtoField(5, ScalarType.UINT32, true),
} };
export const GroupFile = { export const GroupFile = {
filename: ProtoField(1, ScalarType.BYTES), filename: ProtoField(1, ScalarType.BYTES),
@ -208,7 +208,7 @@ export const GroupFile = {
batchItemId: ProtoField(8, ScalarType.BYTES), batchItemId: ProtoField(8, ScalarType.BYTES),
feedMsgTime: ProtoField(9, ScalarType.INT32), feedMsgTime: ProtoField(9, ScalarType.INT32),
pbReserve: ProtoField(10, ScalarType.BYTES), pbReserve: ProtoField(10, ScalarType.BYTES),
} };
export const ExtraInfo = { export const ExtraInfo = {
nick: ProtoField(1, ScalarType.BYTES), nick: ProtoField(1, ScalarType.BYTES),
@ -223,7 +223,7 @@ export const ExtraInfo = {
msgStateFlag: ProtoField(10, ScalarType.INT32), msgStateFlag: ProtoField(10, ScalarType.INT32),
apnsSoundType: ProtoField(11, ScalarType.INT32), apnsSoundType: ProtoField(11, ScalarType.INT32),
newGroupFlag: ProtoField(12, ScalarType.INT32), newGroupFlag: ProtoField(12, ScalarType.INT32),
} };
export const VideoFile = { export const VideoFile = {
fileUuid: ProtoField(1, ScalarType.STRING), fileUuid: ProtoField(1, ScalarType.STRING),
@ -250,7 +250,7 @@ export const VideoFile = {
thumbDownloadFlag: ProtoField(22, ScalarType.INT32), thumbDownloadFlag: ProtoField(22, ScalarType.INT32),
videoDownloadFlag: ProtoField(23, ScalarType.INT32), videoDownloadFlag: ProtoField(23, ScalarType.INT32),
pbReserve: ProtoField(24, ScalarType.BYTES), pbReserve: ProtoField(24, ScalarType.BYTES),
} };
export const AnonymousGroupMessage = { export const AnonymousGroupMessage = {
flags: ProtoField(1, ScalarType.INT32), flags: ProtoField(1, ScalarType.INT32),
@ -260,7 +260,7 @@ export const AnonymousGroupMessage = {
expireTime: ProtoField(5, ScalarType.INT32), expireTime: ProtoField(5, ScalarType.INT32),
bubbleId: ProtoField(6, ScalarType.INT32), bubbleId: ProtoField(6, ScalarType.INT32),
rankColor: ProtoField(7, ScalarType.BYTES), rankColor: ProtoField(7, ScalarType.BYTES),
} };
export const CustomElem = { export const CustomElem = {
desc: ProtoField(1, ScalarType.BYTES), desc: ProtoField(1, ScalarType.BYTES),
@ -268,7 +268,7 @@ export const CustomElem = {
enumType: ProtoField(3, ScalarType.INT32), enumType: ProtoField(3, ScalarType.INT32),
ext: ProtoField(4, ScalarType.BYTES), ext: ProtoField(4, ScalarType.BYTES),
sound: ProtoField(5, ScalarType.BYTES), sound: ProtoField(5, ScalarType.BYTES),
} };
export const GeneralFlags = { export const GeneralFlags = {
bubbleDiyTextId: ProtoField(1, ScalarType.INT32), bubbleDiyTextId: ProtoField(1, ScalarType.INT32),
@ -304,29 +304,29 @@ export const SrcMsg = {
sourceMsg: ProtoField(9, ScalarType.BYTES, true), sourceMsg: ProtoField(9, ScalarType.BYTES, true),
toUin: ProtoField(10, ScalarType.UINT64, true), toUin: ProtoField(10, ScalarType.UINT64, true),
troopName: ProtoField(11, ScalarType.BYTES, true), troopName: ProtoField(11, ScalarType.BYTES, true),
} };
export const LightAppElem = { export const LightAppElem = {
data: ProtoField(1, ScalarType.BYTES), data: ProtoField(1, ScalarType.BYTES),
msgResid: ProtoField(2, ScalarType.BYTES, true), msgResid: ProtoField(2, ScalarType.BYTES, true),
} };
export const CommonElem = { export const CommonElem = {
serviceType: ProtoField(1, ScalarType.INT32), serviceType: ProtoField(1, ScalarType.INT32),
pbElem: ProtoField(2, ScalarType.BYTES), pbElem: ProtoField(2, ScalarType.BYTES),
businessType: ProtoField(3, ScalarType.UINT32), businessType: ProtoField(3, ScalarType.UINT32),
} };
export const FaceExtra = { export const FaceExtra = {
faceId: ProtoField(1, ScalarType.INT32, true), faceId: ProtoField(1, ScalarType.INT32, true),
} };
export const MentionExtra = { export const MentionExtra = {
type: ProtoField(3, ScalarType.INT32, true), type: ProtoField(3, ScalarType.INT32, true),
uin: ProtoField(4, ScalarType.UINT32, true), uin: ProtoField(4, ScalarType.UINT32, true),
field5: ProtoField(5, ScalarType.INT32, true), field5: ProtoField(5, ScalarType.INT32, true),
uid: ProtoField(9, ScalarType.STRING, true), uid: ProtoField(9, ScalarType.STRING, true),
} };
export const QFaceExtra = { export const QFaceExtra = {
field1: ProtoField(1, ScalarType.STRING, true), field1: ProtoField(1, ScalarType.STRING, true),
@ -337,10 +337,10 @@ export const QFaceExtra = {
field6: ProtoField(6, ScalarType.STRING, true), field6: ProtoField(6, ScalarType.STRING, true),
preview: ProtoField(7, ScalarType.STRING, true), preview: ProtoField(7, ScalarType.STRING, true),
field9: ProtoField(9, ScalarType.INT32, true), field9: ProtoField(9, ScalarType.INT32, true),
} };
export const QSmallFaceExtra = { export const QSmallFaceExtra = {
faceId: ProtoField(1, ScalarType.UINT32), faceId: ProtoField(1, ScalarType.UINT32),
preview: ProtoField(2, ScalarType.STRING), preview: ProtoField(2, ScalarType.STRING),
preview2: ProtoField(3, ScalarType.STRING), preview2: ProtoField(3, ScalarType.STRING),
} };

View File

@ -1,8 +1,8 @@
import { ScalarType } from "@protobuf-ts/runtime"; import { ScalarType } from "@protobuf-ts/runtime";
import { ProtoField } from "../NapProto"; import { ProtoField } from "../NapProto";
import {ForwardHead, Grp, GrpTmp, ResponseForward, ResponseGrp, Trans0X211, WPATmp} from "@/core/packet/proto/message/routing"; import { ForwardHead, Grp, GrpTmp, ResponseForward, ResponseGrp, Trans0X211, WPATmp } from "@/core/packet/proto/message/routing";
import {RichText} from "@/core/packet/proto/message/component"; import { RichText } from "@/core/packet/proto/message/component";
import {C2C} from "@/core/packet/proto/message/c2c"; import { C2C } from "@/core/packet/proto/message/c2c";
export const ContentHead = { export const ContentHead = {
type: ProtoField(1, ScalarType.UINT32), type: ProtoField(1, ScalarType.UINT32),

View File

@ -9,8 +9,8 @@ export const OidbSvcTrpcTcp0X8FC_2_Body = {
expiredTime: ProtoField(6, ScalarType.SINT32), expiredTime: ProtoField(6, ScalarType.SINT32),
uinName: ProtoField(7, ScalarType.STRING), uinName: ProtoField(7, ScalarType.STRING),
targetName: ProtoField(8, ScalarType.STRING), targetName: ProtoField(8, ScalarType.STRING),
} };
export const OidbSvcTrpcTcp0X8FC_2 = { export const OidbSvcTrpcTcp0X8FC_2 = {
groupUin: ProtoField(1, ScalarType.UINT32), groupUin: ProtoField(1, ScalarType.UINT32),
body: ProtoField(3, ScalarType.BYTES), body: ProtoField(3, ScalarType.BYTES),
} };

View File

@ -6,10 +6,10 @@ import { MultiMediaReqHead } from "./common/Ntv2.RichMedia";
export const OidbSvcTrpcTcp0X9067_202 = { export const OidbSvcTrpcTcp0X9067_202 = {
ReqHead: ProtoField(1, () => MultiMediaReqHead), ReqHead: ProtoField(1, () => MultiMediaReqHead),
DownloadRKeyReq: ProtoField(4, () => OidbSvcTrpcTcp0X9067_202Key), DownloadRKeyReq: ProtoField(4, () => OidbSvcTrpcTcp0X9067_202Key),
} };
export const OidbSvcTrpcTcp0X9067_202Key = { export const OidbSvcTrpcTcp0X9067_202Key = {
key: ProtoField(1, ScalarType.INT32, false, true), key: ProtoField(1, ScalarType.INT32, false, true),
} };
//Rsp //Rsp
export const OidbSvcTrpcTcp0X9067_202_RkeyList = { export const OidbSvcTrpcTcp0X9067_202_RkeyList = {
@ -17,10 +17,10 @@ export const OidbSvcTrpcTcp0X9067_202_RkeyList = {
time: ProtoField(4, ScalarType.UINT32), time: ProtoField(4, ScalarType.UINT32),
type: ProtoField(5, ScalarType.UINT32), type: ProtoField(5, ScalarType.UINT32),
} };
export const OidbSvcTrpcTcp0X9067_202_Data = { export const OidbSvcTrpcTcp0X9067_202_Data = {
rkeyList: ProtoField(1, () => OidbSvcTrpcTcp0X9067_202_RkeyList, false, true), rkeyList: ProtoField(1, () => OidbSvcTrpcTcp0X9067_202_RkeyList, false, true),
} };
export const OidbSvcTrpcTcp0X9067_202_Rsp_Body = { export const OidbSvcTrpcTcp0X9067_202_Rsp_Body = {
data: ProtoField(4, () => OidbSvcTrpcTcp0X9067_202_Data), data: ProtoField(4, () => OidbSvcTrpcTcp0X9067_202_Data),
} };

View File

@ -7,4 +7,4 @@ export const OidbSvcTrpcTcp0XED3_1 = {
groupUin: ProtoField(2, ScalarType.UINT32), groupUin: ProtoField(2, ScalarType.UINT32),
friendUin: ProtoField(5, ScalarType.UINT32), friendUin: ProtoField(5, ScalarType.UINT32),
ext: ProtoField(6, ScalarType.UINT32, true) ext: ProtoField(6, ScalarType.UINT32, true)
} };

View File

@ -4,20 +4,20 @@ import { ProtoField } from "../NapProto";
export const OidbSvcTrpcTcp0XFE1_2 = { export const OidbSvcTrpcTcp0XFE1_2 = {
uin: ProtoField(1, ScalarType.UINT32), uin: ProtoField(1, ScalarType.UINT32),
key: ProtoField(3, () => OidbSvcTrpcTcp0XFE1_2Key, false, true), key: ProtoField(3, () => OidbSvcTrpcTcp0XFE1_2Key, false, true),
} };
export const OidbSvcTrpcTcp0XFE1_2Key = { export const OidbSvcTrpcTcp0XFE1_2Key = {
key: ProtoField(1, ScalarType.UINT32) key: ProtoField(1, ScalarType.UINT32)
} };
export const OidbSvcTrpcTcp0XFE1_2RSP_Status = { export const OidbSvcTrpcTcp0XFE1_2RSP_Status = {
key: ProtoField(1, ScalarType.UINT32), key: ProtoField(1, ScalarType.UINT32),
value: ProtoField(2, ScalarType.UINT64) value: ProtoField(2, ScalarType.UINT64)
} };
export const OidbSvcTrpcTcp0XFE1_2RSP_Data = { export const OidbSvcTrpcTcp0XFE1_2RSP_Data = {
status: ProtoField(2, () => OidbSvcTrpcTcp0XFE1_2RSP_Status) status: ProtoField(2, () => OidbSvcTrpcTcp0XFE1_2RSP_Status)
} };
export const OidbSvcTrpcTcp0XFE1_2RSP = { export const OidbSvcTrpcTcp0XFE1_2RSP = {
data: ProtoField(1, () => OidbSvcTrpcTcp0XFE1_2RSP_Data) data: ProtoField(1, () => OidbSvcTrpcTcp0XFE1_2RSP_Data)
} };

View File

@ -7,7 +7,7 @@ export const OidbSvcTrpcTcpBase = {
body: ProtoField(4, ScalarType.BYTES), body: ProtoField(4, ScalarType.BYTES),
errorMsg: ProtoField(5, ScalarType.STRING, true), errorMsg: ProtoField(5, ScalarType.STRING, true),
isReserved: ProtoField(12, ScalarType.UINT32) isReserved: ProtoField(12, ScalarType.UINT32)
} };
export const OidbSvcTrpcTcpBaseRsp = { export const OidbSvcTrpcTcpBaseRsp = {
body: ProtoField(4, ScalarType.BYTES) body: ProtoField(4, ScalarType.BYTES)
} };

View File

@ -4,35 +4,35 @@ import { ProtoField } from "../../NapProto";
export const NTV2RichMediaReq = { export const NTV2RichMediaReq = {
ReqHead: ProtoField(1, ScalarType.BYTES), ReqHead: ProtoField(1, ScalarType.BYTES),
DownloadRKeyReq: ProtoField(4, ScalarType.BYTES), DownloadRKeyReq: ProtoField(4, ScalarType.BYTES),
} };
export const MultiMediaReqHead = { export const MultiMediaReqHead = {
Common: ProtoField(1, () => CommonHead), Common: ProtoField(1, () => CommonHead),
Scene: ProtoField(2, () => SceneInfo), Scene: ProtoField(2, () => SceneInfo),
Client: ProtoField(3, () => ClientMeta), Client: ProtoField(3, () => ClientMeta),
} };
export const CommonHead = { export const CommonHead = {
RequestId: ProtoField(1, ScalarType.UINT32), RequestId: ProtoField(1, ScalarType.UINT32),
Command: ProtoField(2, ScalarType.UINT32), Command: ProtoField(2, ScalarType.UINT32),
} };
export const SceneInfo = { export const SceneInfo = {
RequestType: ProtoField(101, ScalarType.UINT32), RequestType: ProtoField(101, ScalarType.UINT32),
BusinessType: ProtoField(102, ScalarType.UINT32), BusinessType: ProtoField(102, ScalarType.UINT32),
SceneType: ProtoField(200, ScalarType.UINT32), SceneType: ProtoField(200, ScalarType.UINT32),
} };
export const ClientMeta = { export const ClientMeta = {
AgentType: ProtoField(1, ScalarType.UINT32), AgentType: ProtoField(1, ScalarType.UINT32),
} };
export const C2CUserInfo = { export const C2CUserInfo = {
AccountType: ProtoField(1, ScalarType.UINT32), AccountType: ProtoField(1, ScalarType.UINT32),
TargetUid: ProtoField(2, ScalarType.STRING), TargetUid: ProtoField(2, ScalarType.STRING),
} };
export const GroupInfo = { export const GroupInfo = {
GroupUin: ProtoField(1, ScalarType.UINT32), GroupUin: ProtoField(1, ScalarType.UINT32),
} };
export const DownloadReq = { export const DownloadReq = {
Node: ProtoField(1, ScalarType.BYTES), Node: ProtoField(1, ScalarType.BYTES),
Download: ProtoField(2, ScalarType.BYTES), Download: ProtoField(2, ScalarType.BYTES),
} };
export const FileInfo = { export const FileInfo = {
FileSize: ProtoField(1, ScalarType.UINT32), FileSize: ProtoField(1, ScalarType.UINT32),
FileHash: ProtoField(2, ScalarType.STRING), FileHash: ProtoField(2, ScalarType.STRING),
@ -43,7 +43,7 @@ export const FileInfo = {
Height: ProtoField(7, ScalarType.UINT32), Height: ProtoField(7, ScalarType.UINT32),
Time: ProtoField(8, ScalarType.UINT32), Time: ProtoField(8, ScalarType.UINT32),
Original: ProtoField(9, ScalarType.UINT32), Original: ProtoField(9, ScalarType.UINT32),
} };
export const IndexNode = { export const IndexNode = {
Info: ProtoField(1, ScalarType.BYTES), Info: ProtoField(1, ScalarType.BYTES),
FileUuid: ProtoField(2, ScalarType.STRING), FileUuid: ProtoField(2, ScalarType.STRING),
@ -51,33 +51,33 @@ export const IndexNode = {
UploadTime: ProtoField(4, ScalarType.UINT32), UploadTime: ProtoField(4, ScalarType.UINT32),
Ttl: ProtoField(5, ScalarType.UINT32), Ttl: ProtoField(5, ScalarType.UINT32),
subType: ProtoField(6, ScalarType.UINT32), subType: ProtoField(6, ScalarType.UINT32),
} };
export const FileType = { export const FileType = {
Type: ProtoField(1, ScalarType.UINT32), Type: ProtoField(1, ScalarType.UINT32),
PicFormat: ProtoField(2, ScalarType.UINT32), PicFormat: ProtoField(2, ScalarType.UINT32),
VideoFormat: ProtoField(3, ScalarType.UINT32), VideoFormat: ProtoField(3, ScalarType.UINT32),
VoiceFormat: ProtoField(4, ScalarType.UINT32), VoiceFormat: ProtoField(4, ScalarType.UINT32),
} };
export const DownloadExt = { export const DownloadExt = {
Pic: ProtoField(1, ScalarType.BYTES), Pic: ProtoField(1, ScalarType.BYTES),
Video: ProtoField(2, ScalarType.BYTES), Video: ProtoField(2, ScalarType.BYTES),
Ptt: ProtoField(3, ScalarType.BYTES), Ptt: ProtoField(3, ScalarType.BYTES),
} };
export const VideoDownloadExt = { export const VideoDownloadExt = {
BusiType: ProtoField(1, ScalarType.UINT32), BusiType: ProtoField(1, ScalarType.UINT32),
SceneType: ProtoField(2, ScalarType.UINT32), SceneType: ProtoField(2, ScalarType.UINT32),
SubBusiType: ProtoField(3, ScalarType.UINT32), SubBusiType: ProtoField(3, ScalarType.UINT32),
} };
export const PicDownloadExt = {} export const PicDownloadExt = {};
export const PttDownloadExt = {} export const PttDownloadExt = {};
export const PicUrlExtInfo = { export const PicUrlExtInfo = {
OriginalParameter: ProtoField(1, ScalarType.STRING), OriginalParameter: ProtoField(1, ScalarType.STRING),
BigParameter: ProtoField(2, ScalarType.STRING), BigParameter: ProtoField(2, ScalarType.STRING),
ThumbParameter: ProtoField(3, ScalarType.STRING), ThumbParameter: ProtoField(3, ScalarType.STRING),
} };
export const VideoExtInfo = { export const VideoExtInfo = {
VideoCodecFormat: ProtoField(1, ScalarType.UINT32), VideoCodecFormat: ProtoField(1, ScalarType.UINT32),
} };
export const MsgInfo = { export const MsgInfo = {
} };

View File

@ -1,11 +1,11 @@
import {PacketClient} from "@/core/packet/client"; import { PacketClient } from "@/core/packet/client";
import {PacketHighwayClient} from "@/core/packet/highway/highwayClient"; import { PacketHighwayClient } from "@/core/packet/highway/highwayClient";
import {LogWrapper} from "@/common/log"; import { LogWrapper } from "@/common/log";
export class PacketSession { export class PacketSession {
readonly logger: LogWrapper; readonly logger: LogWrapper;
readonly client: PacketClient; readonly client: PacketClient;
private highwayClient: PacketHighwayClient private highwayClient: PacketHighwayClient;
constructor(logger: LogWrapper, client: PacketClient) { constructor(logger: LogWrapper, client: PacketClient) {
this.logger = logger; this.logger = logger;

View File

@ -14,7 +14,7 @@ export class Native {
if (!this.supportedPlatforms.includes(this.platform)) { if (!this.supportedPlatforms.includes(this.platform)) {
throw new Error(`Platform ${this.platform} is not supported`); throw new Error(`Platform ${this.platform} is not supported`);
} }
let nativeNode = path.join(nodePath, './native/MoeHoo.win32.node'); const nativeNode = path.join(nodePath, './native/MoeHoo.win32.node');
if (fs.existsSync(nativeNode)) { if (fs.existsSync(nativeNode)) {
dlopen(this.MoeHooExport, nativeNode, constants.dlopen.RTLD_LAZY); dlopen(this.MoeHooExport, nativeNode, constants.dlopen.RTLD_LAZY);
} }

View File

@ -21,8 +21,8 @@ export class SetSpecialTittle extends BaseAction<Payload, any> {
if (!this.core.apis.PacketApi.available) { if (!this.core.apis.PacketApi.available) {
throw new Error('PacketClient is not init'); throw new Error('PacketClient is not init');
} }
let uid = await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString()); const uid = await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString());
if(!uid) throw new Error('User not found'); if(!uid) throw new Error('User not found');
await this.core.apis.PacketApi.sendSetSpecialTittlePacket(payload.group_id.toString(), uid, payload.special_title); await this.core.apis.PacketApi.sendSetSpecialTittlePacket(payload.group_id.toString(), uid, payload.special_title);
} }
} }

View File

@ -1,8 +1,8 @@
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import {PacketMsgTextElement} from "@/core/packet/msg/element"; import { PacketMsgTextElement } from "@/core/packet/msg/element";
import {SendTextElement} from "@/core"; import { SendTextElement } from "@/core";
const SchemaData = { const SchemaData = {

View File

@ -83,7 +83,7 @@ export class GoCQHTTPGetForwardMsgAction extends BaseAction<Payload, any> {
} }
//if (this.obContext.configLoader.configData.messagePostFormat === 'array') { //if (this.obContext.configLoader.configData.messagePostFormat === 'array') {
//提取 //提取
let realmsg = ((await this.parseForward([resMsg]))[0].data.message as OB11MessageNode[])[0].data.message; const realmsg = ((await this.parseForward([resMsg]))[0].data.message as OB11MessageNode[])[0].data.message;
//里面都是offline消息 id都是0 没得说话 //里面都是offline消息 id都是0 没得说话
return { message: realmsg }; return { message: realmsg };
//} //}

View File

@ -33,7 +33,7 @@ class GetMsg extends BaseAction<Payload, OB11Message> {
throw new Error('消息不存在'); throw new Error('消息不存在');
} }
const peer = { guildId: '', peerUid: msgIdWithPeer?.Peer.peerUid, chatType: msgIdWithPeer.Peer.chatType }; const peer = { guildId: '', peerUid: msgIdWithPeer?.Peer.peerUid, chatType: msgIdWithPeer.Peer.chatType };
let orimsg = this.obContext.recallMsgCache.get(msgIdWithPeer.MsgId); const orimsg = this.obContext.recallMsgCache.get(msgIdWithPeer.MsgId);
let msg: RawMessage; let msg: RawMessage;
if (orimsg) { if (orimsg) {
msg = orimsg; msg = orimsg;

View File

@ -696,7 +696,7 @@ export class OneBotMsgApi {
resMsg.sub_type = 'group'; resMsg.sub_type = 'group';
const ret = await this.core.apis.MsgApi.getTempChatInfo(ChatType.KCHATTYPETEMPC2CFROMGROUP, msg.senderUid); const ret = await this.core.apis.MsgApi.getTempChatInfo(ChatType.KCHATTYPETEMPC2CFROMGROUP, msg.senderUid);
if (ret.result === 0) { if (ret.result === 0) {
let member = await this.core.apis.GroupApi.getGroupMember(msg.peerUin, msg.senderUin); const member = await this.core.apis.GroupApi.getGroupMember(msg.peerUin, msg.senderUin);
resMsg.group_id = parseInt(ret.tmpChatInfo!.groupCode); resMsg.group_id = parseInt(ret.tmpChatInfo!.groupCode);
resMsg.sender.nickname = member?.nick ?? member?.cardName ?? '临时会话'; resMsg.sender.nickname = member?.nick ?? member?.cardName ?? '临时会话';
resMsg.temp_source = resMsg.group_id; resMsg.temp_source = resMsg.group_id;

View File

@ -85,19 +85,19 @@ export class NapCatOneBot11Adapter {
if (!this.nativeCore.inited) throw new Error('Native Not Init'); if (!this.nativeCore.inited) throw new Error('Native Not Init');
this.nativeCore.registerRecallCallback(async (hex: string) => { this.nativeCore.registerRecallCallback(async (hex: string) => {
try { try {
let data = decodeMessage(Buffer.from(hex, 'hex')) as any; const data = decodeMessage(Buffer.from(hex, 'hex')) as any;
//data.MsgHead.BodyInner.MsgType SubType //data.MsgHead.BodyInner.MsgType SubType
let bodyInner = data.msgHead?.bodyInner; const bodyInner = data.msgHead?.bodyInner;
//context.logger.log("[appNative] Parse MsgType:" + bodyInner.msgType + " / SubType:" + bodyInner.subType); //context.logger.log("[appNative] Parse MsgType:" + bodyInner.msgType + " / SubType:" + bodyInner.subType);
if (bodyInner && bodyInner.msgType == 732 && bodyInner.subType == 17) { if (bodyInner && bodyInner.msgType == 732 && bodyInner.subType == 17) {
let RecallData = Buffer.from(data.msgHead.noifyData.innerData); const RecallData = Buffer.from(data.msgHead.noifyData.innerData);
//跳过 4字节 群号 + 不知道的1字节 +2字节 长度 //跳过 4字节 群号 + 不知道的1字节 +2字节 长度
let uid = RecallData.readUint32BE(); const uid = RecallData.readUint32BE();
const buffer = Buffer.from(RecallData.toString('hex').slice(14), 'hex'); const buffer = Buffer.from(RecallData.toString('hex').slice(14), 'hex');
let seq: number = decodeRecallGroup(buffer).recallDetails.subDetail.msgSeq; const seq: number = decodeRecallGroup(buffer).recallDetails.subDetail.msgSeq;
let peer: Peer = { chatType: ChatType.KCHATTYPEGROUP, peerUid: uid.toString() }; const peer: Peer = { chatType: ChatType.KCHATTYPEGROUP, peerUid: uid.toString() };
context.logger.log("[Native] 群消息撤回 Peer: " + uid.toString() + " / MsgSeq:" + seq); context.logger.log("[Native] 群消息撤回 Peer: " + uid.toString() + " / MsgSeq:" + seq);
let msgs = await core.apis.MsgApi.queryMsgsWithFilterExWithSeq(peer, seq.toString()); const msgs = await core.apis.MsgApi.queryMsgsWithFilterExWithSeq(peer, seq.toString());
this.recallMsgCache.put(msgs.msgList[0].msgId, msgs.msgList[0]); this.recallMsgCache.put(msgs.msgList[0].msgId, msgs.msgList[0]);
} }
} catch (error: any) { } catch (error: any) {