Merge remote-tracking branch 'origin/main'

This commit is contained in:
linyuchen 2024-05-04 23:24:41 +08:00
commit 720fd94b7f
6 changed files with 24 additions and 82 deletions

View File

@ -7,6 +7,6 @@ QQ Version: Windows 9.9.9-23361 / Linux 3.2.7-23361
## 新增与调整
* 支持WebUi远程配置
* 再一次对获取Cookies与获取群成员优化分别添加30/60/120分钟缓存
*
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

@ -1 +1 @@
Subproject commit db7b494755d82213da7884451d5c26922debe3bd
Subproject commit 08a5970f0a632bf71fa9092a471ad79f93fbde25

View File

@ -6,13 +6,12 @@ import { ActionName } from '../types';
import { NTQQUserApi } from '@/core/apis/user';
import { log, logDebug } from '@/common/utils/log';
import { isNull } from '../../../common/utils/helper';
import { WebApi, WebApiGroupMember } from '@/core/apis/webapi';
import { WebApi } from '@/core/apis/webapi';
export interface PayloadType {
group_id: number;
user_id: number;
no_cache?: boolean | string;
}
class GetGroupMemberInfo extends BaseAction<PayloadType, OB11GroupMember> {
@ -23,10 +22,7 @@ class GetGroupMemberInfo extends BaseAction<PayloadType, OB11GroupMember> {
if (!group) {
throw (`群(${payload.group_id})不存在`);
}
const webGroupMembers: WebApiGroupMember[] = [];
if (payload.no_cache === true || payload.no_cache === 'true') {
// webGroupMembers = await WebApi.getGroupMembers(payload.group_id.toString());
}
const WebGroupMember = await WebApi.getGroupMembers(payload.group_id.toString());
const member = await getGroupMember(payload.group_id.toString(), payload.user_id.toString());
// log(member);
if (member) {
@ -39,13 +35,14 @@ class GetGroupMemberInfo extends BaseAction<PayloadType, OB11GroupMember> {
logDebug('获取群成员详细信息失败, 只能返回基础信息', e);
}
const retMember = OB11Constructor.groupMember(payload.group_id.toString(), member);
for (let i = 0, len = webGroupMembers.length; i < len; i++) {
if (webGroupMembers[i]?.uin && webGroupMembers[i].uin === retMember.user_id) {
retMember.join_time = webGroupMembers[i]?.join_time;
retMember.last_sent_time = webGroupMembers[i]?.last_speak_time;
retMember.qage = webGroupMembers[i]?.qage;
retMember.level = webGroupMembers[i]?.lv.level;
for (let i = 0, len = WebGroupMember.length; i < len; i++) {
if (WebGroupMember[i]?.uin && WebGroupMember[i].uin === retMember.user_id) {
retMember.join_time = WebGroupMember[i]?.join_time;
retMember.last_sent_time = WebGroupMember[i]?.last_speak_time;
retMember.qage = WebGroupMember[i]?.qage;
retMember.level = WebGroupMember[i]?.lv.level;
}
}
return retMember;
} else {

View File

@ -3,7 +3,7 @@ import { OB11GroupMember } from '../../types';
import { OB11Constructor } from '../../constructor';
import BaseAction from '../BaseAction';
import { ActionName } from '../types';
import { napCatCore, NTQQGroupApi, WebApiGroupMember } from '@/core';
import { napCatCore, NTQQGroupApi } from '@/core';
import { WebApi } from '@/core/apis/webapi';
import { logDebug } from '@/common/utils/log';
@ -18,13 +18,12 @@ class GetGroupMemberList extends BaseAction<PayloadType, OB11GroupMember[]> {
protected async _handle(payload: PayloadType) {
const MemberMap: Map<number, OB11GroupMember> = new Map<number, OB11GroupMember>();
const webGroupMembers: WebApiGroupMember[] = [];
// await NTQQGroupApi.getGroupMembers(payload.group_id.toString());
const WebGroupMember = await WebApi.getGroupMembers(payload.group_id.toString());
const group = await getGroup(payload.group_id.toString());
if (!group) {
throw (`${payload.group_id}不存在`);
}
if (payload.no_cache === true || payload.no_cache === 'true') {
if (payload.no_cache || payload.no_cache === 'true') {
// webGroupMembers = await WebApi.getGroupMembers(payload.group_id.toString());
const _groupMembers = await NTQQGroupApi.getGroupMembers(payload.group_id.toString());
groupMembers.set(group.groupCode, _groupMembers);
@ -36,17 +35,17 @@ class GetGroupMemberList extends BaseAction<PayloadType, OB11GroupMember[]> {
MemberMap.set(_groupMembers[i].user_id, _groupMembers[i]);
}
// 合并数据
for (let i = 0, len = webGroupMembers.length; i < len; i++) {
if (!webGroupMembers[i]?.uin) {
for (let i = 0, len = WebGroupMember.length; i < len; i++) {
if (!WebGroupMember[i]?.uin) {
continue;
}
const MemberData = MemberMap.get(webGroupMembers[i]?.uin);
const MemberData = MemberMap.get(WebGroupMember[i]?.uin);
if (MemberData) {
MemberData.join_time = webGroupMembers[i]?.join_time;
MemberData.last_sent_time = webGroupMembers[i]?.last_speak_time;
MemberData.qage = webGroupMembers[i]?.qage;
MemberData.level = webGroupMembers[i]?.lv.level;
MemberMap.set(webGroupMembers[i]?.uin, MemberData);
MemberData.join_time = WebGroupMember[i]?.join_time;
MemberData.last_sent_time = WebGroupMember[i]?.last_speak_time;
MemberData.qage = WebGroupMember[i]?.qage;
MemberData.level = WebGroupMember[i]?.lv.level;
MemberMap.set(WebGroupMember[i]?.uin, MemberData);
}
}
// 还原Map到Array

View File

@ -101,9 +101,7 @@ export class ReverseWebsocket {
await this.onmessage(data.toString());
});
this.websocket.on('error', (err) => {
logError('websocket error', err.toString());
});
this.websocket.on('error', log);
const wsClientInterval = setInterval(() => {
postWsEvent(new OB11HeartbeatEvent(!!selfInfo.online, true, heartInterval));

View File

@ -1,52 +0,0 @@
import http from 'http';
const privateRkey = '';
function logDebug(...args) {
console.log(...args);
}
const checkUrl = new Promise((resolve, reject) => {
const uri = new URL('https://gchat.qpic.cn/download?appid=1407&fileid=CgkzNzk0NTAzMjYSFECDMhodswV7nH5Npuf2O8dstvL1GNaGEiD_CijQycnZsuaFA1CAvaMB&spec=0&rkey=CAESKE4_cASDm1t1mbnPfSzEvPzS-iYGLyXhjXjTRIhOHeSVDKkPp6Luaao');
const options = {
method: 'GET',
host: uri.host,
path: uri.pathname + uri.search,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Accept': '*/*',
'Range': 'bytes=0-0'
}
};
const req = http.request(options, (res) => {
logDebug(`Check rkey status: ${res.statusCode}`);
logDebug(`Check rkey headers: ${JSON.stringify(res.headers)}`);
if (res.statusCode == 200 || res.statusCode === 206) {
// console.log('The image URL is accessible.');
resolve('ok');
} else {
reject('The image URL is not accessible.');
}
});
req.setTimeout(3000, () => {
req.destroy();
reject('Check rkey request timed out');
});
req.on('error', (e) => {
console.error(`Problem with rkey request: ${e.message}`);
// reject(e.message);
});
req.end();
});
const startTime = Date.now();
checkUrl.then((result) => {
const endTime = Date.now();
console.log(result);
console.log(`Time elapsed: ${endTime - startTime}ms`);
}).catch((error) => {
const endTime = Date.now();
console.error(error);
console.log(`Time elapsed: ${endTime - startTime}ms`);
});