release: v1.7.4

This commit is contained in:
手瓜一十雪 2024-08-01 23:35:35 +08:00
parent 7d2cc3b56b
commit 440b63f662
6 changed files with 43 additions and 44 deletions

View File

@ -2,7 +2,7 @@
"name": "napcat", "name": "napcat",
"private": true, "private": true,
"type": "module", "type": "module",
"version": "1.7.3", "version": "1.7.4",
"scripts": { "scripts": {
"watch:dev": "vite --mode development", "watch:dev": "vite --mode development",
"watch:prod": "vite --mode production", "watch:prod": "vite --mode production",

View File

@ -64,6 +64,9 @@ setTimeout(() => {
// )); // ));
// console.log(await NTQQMsgApi.multiForwardMsg(peer, peer, [MsgId])); // console.log(await NTQQMsgApi.multiForwardMsg(peer, peer, [MsgId]));
// }, 25000) // }, 25000)
let SendMsgSeq = new Map<Peer, Array<number>>();
export class NTQQMsgApi { export class NTQQMsgApi {
// static async CheckSendMode() { // static async CheckSendMode() {
// try { // try {
@ -141,9 +144,6 @@ export class NTQQMsgApi {
} }
static async getMsgsBySeqAndCount(peer: Peer, seq: string, count: number, desc: boolean, z: boolean) { static async getMsgsBySeqAndCount(peer: Peer, seq: string, count: number, desc: boolean, z: boolean) {
return await napCatCore.session.getMsgService().getMsgsBySeqAndCount(peer, seq, count, desc, z); return await napCatCore.session.getMsgService().getMsgsBySeqAndCount(peer, seq, count, desc, z);
}
static async testMode() {
} }
static async setMsgRead(peer: Peer) { static async setMsgRead(peer: Peer) {
return napCatCore.session.getMsgService().setMsgRead(peer); return napCatCore.session.getMsgService().setMsgRead(peer);
@ -175,7 +175,13 @@ export class NTQQMsgApi {
peerUid: peer.peerUid peerUid: peer.peerUid
}, msgIds); }, msgIds);
} }
static async sendMsg(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) { //并发Seq
static async sendMsgV3(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) {
let msgList = await NTQQMsgApi.getLastestMsgByUids(peer);
let data = await napCatCore.session.getMsgService().sendMsg("0", peer, msgElements, new Map());
SendMsgSeq.get(peer)?.push()
}
static async sendMsgV2(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) {
// function generateMsgId() { // function generateMsgId() {
// const timestamp = Math.floor(Date.now() / 1000); // const timestamp = Math.floor(Date.now() / 1000);
// const random = Math.floor(Math.random() * Math.pow(2, 32)); // const random = Math.floor(Math.random() * Math.pow(2, 32));
@ -185,7 +191,7 @@ export class NTQQMsgApi {
// const msgId = BigInt("0x" + buffer.toString('hex')).toString(); // const msgId = BigInt("0x" + buffer.toString('hex')).toString();
// return msgId; // return msgId;
// } // }
let msgId = await NTQQMsgApi.getMsgUnique(await NTQQMsgApi.getServerTime()); let msgId = await NTQQMsgApi.getMsgUnique(await NTQQMsgApi.getServerTime());
let data = await NTEventDispatch.CallNormalEvent< let data = await NTEventDispatch.CallNormalEvent<
(msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<any, any>) => Promise<unknown>, (msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<any, any>) => Promise<unknown>,
@ -218,45 +224,37 @@ export class NTQQMsgApi {
static sendMsgEx(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) { static sendMsgEx(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) {
//return NTQQMsgApi.sendMsgV1(peer, msgElements, waitComplete, timeout); //return NTQQMsgApi.sendMsgV1(peer, msgElements, waitComplete, timeout);
} }
static async sendMsgV1(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) { static async sendMsg(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) {
let msgList = await NTQQMsgApi.getLastestMsgByUids(peer); //唉? !我有个想法
let msgCurrentSeq = 0n; let msgId = await NTQQMsgApi.getMsgUnique(await NTQQMsgApi.getServerTime());
if (msgList.msgList.length > 0) { peer.guildId = msgId;
msgCurrentSeq = BigInt(msgList.msgList[0].msgSeq); let data = await NTEventDispatch.CallNormalEvent<
} (msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<any, any>) => Promise<unknown>,
let rawMsg: RawMessage | undefined; (msgList: RawMessage[]) => void
let onAddSendMsgListener = NTEventDispatch.RegisterListen<NodeIKernelMsgListener['onAddSendMsg']>('NodeIKernelMsgListener/onAddSendMsg', 1, timeout, (msg: RawMessage) => { >(
//console.log("msgSeq:", msgCurrentSeq.toString(), JSON.stringify(msgList.msgList[0], null, 4)); 'NodeIKernelMsgService/sendMsg',
if (msg.peerUid == peer.peerUid && (msgCurrentSeq == 0n || msgList.msgList[0].msgSeq == msgCurrentSeq.toString())) { 'NodeIKernelMsgListener/onMsgInfoListUpdate',
rawMsg = msg; 1,
return true; timeout,
} (msgRecords: RawMessage[]) => {
return false; for (let msgRecord of msgRecords) {
}).catch(logError); if (msgRecord.guildId === msgId && msgRecord.sendStatus === 2) {
let MsgInfoListUpdateListener = NTEventDispatch.RegisterListen<NodeIKernelMsgListener['onMsgInfoListUpdate']>('NodeIKernelMsgListener/onMsgInfoListUpdate', 1, timeout,
(msgList: RawMessage[]) => {
for (let msg of msgList) {
if (msg.peerUid == peer.peerUid && rawMsg && rawMsg.msgId == msg.msgId && msg.sendStatus == 2) {
rawMsg = msg;
return true; return true;
} }
} }
return false; return false;
}).catch(logError); },
let data = await napCatCore.session.getMsgService().sendMsg("0", peer, msgElements, new Map()); "0",
//await NTEventDispatch.CallNoListenerEvent<NodeIKernelMsgService['sendMsg']>('NodeIKernelMsgService/sendMsg', timeout, "0", peer, msgElements, new Map()); peer,
await onAddSendMsgListener; msgElements,
if (data.result !== 0 && rawMsg) { new Map()
//发送失败msgid );
await napCatCore.session.getMsgService().deleteMsg(peer, [rawMsg.msgId]); let retMsg = data[1].find(msgRecord => {
throw new Error('发送消息失败'); if (msgRecord.guildId === msgId) {
} return true;
await MsgInfoListUpdateListener; }
// console.log("rawMsg", JSON.stringify(rawMsg, null, 4)); });
if (rawMsg) { return retMsg;
return rawMsg;
}
throw new Error('发送消息超时');
} }
static async getMsgUniqueEx() { static async getMsgUniqueEx() {
let msgId = await NTQQMsgApi.getMsgUnique(await NTQQMsgApi.getServerTime()); let msgId = await NTQQMsgApi.getMsgUnique(await NTQQMsgApi.getServerTime());

View File

@ -731,6 +731,7 @@ export interface MultiForwardMsgElement {
} }
export interface RawMessage { export interface RawMessage {
guildId: string;
msgRandom: string; msgRandom: string;
// int32, 自己维护的消息id // int32, 自己维护的消息id
id?: number; id?: number;

View File

@ -1 +1 @@
export const version = '1.7.3'; export const version = '1.7.4';

View File

@ -29,7 +29,7 @@ async function onSettingWindowCreated(view: Element) {
SettingItem( SettingItem(
'<span id="napcat-update-title">Napcat</span>', '<span id="napcat-update-title">Napcat</span>',
undefined, undefined,
SettingButton('V1.7.3', 'napcat-update-button', 'secondary') SettingButton('V1.7.4', 'napcat-update-button', 'secondary')
), ),
]), ]),
SettingList([ SettingList([

View File

@ -163,7 +163,7 @@ async function onSettingWindowCreated(view) {
SettingItem( SettingItem(
'<span id="napcat-update-title">Napcat</span>', '<span id="napcat-update-title">Napcat</span>',
void 0, void 0,
SettingButton("V1.7.3", "napcat-update-button", "secondary") SettingButton("V1.7.4", "napcat-update-button", "secondary")
) )
]), ]),
SettingList([ SettingList([