mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
720fd94b7f
@ -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)
|
||||
|
2
src/core
2
src/core
@ -1 +1 @@
|
||||
Subproject commit db7b494755d82213da7884451d5c26922debe3bd
|
||||
Subproject commit 08a5970f0a632bf71fa9092a471ad79f93fbde25
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
|
@ -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`);
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user