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)
|
新增的 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 { NTQQUserApi } from '@/core/apis/user';
|
||||||
import { log, logDebug } from '@/common/utils/log';
|
import { log, logDebug } from '@/common/utils/log';
|
||||||
import { isNull } from '../../../common/utils/helper';
|
import { isNull } from '../../../common/utils/helper';
|
||||||
import { WebApi, WebApiGroupMember } from '@/core/apis/webapi';
|
import { WebApi } from '@/core/apis/webapi';
|
||||||
|
|
||||||
|
|
||||||
export interface PayloadType {
|
export interface PayloadType {
|
||||||
group_id: number;
|
group_id: number;
|
||||||
user_id: number;
|
user_id: number;
|
||||||
no_cache?: boolean | string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class GetGroupMemberInfo extends BaseAction<PayloadType, OB11GroupMember> {
|
class GetGroupMemberInfo extends BaseAction<PayloadType, OB11GroupMember> {
|
||||||
@ -23,10 +22,7 @@ class GetGroupMemberInfo extends BaseAction<PayloadType, OB11GroupMember> {
|
|||||||
if (!group) {
|
if (!group) {
|
||||||
throw (`群(${payload.group_id})不存在`);
|
throw (`群(${payload.group_id})不存在`);
|
||||||
}
|
}
|
||||||
const webGroupMembers: WebApiGroupMember[] = [];
|
const WebGroupMember = await WebApi.getGroupMembers(payload.group_id.toString());
|
||||||
if (payload.no_cache === true || payload.no_cache === 'true') {
|
|
||||||
// webGroupMembers = await WebApi.getGroupMembers(payload.group_id.toString());
|
|
||||||
}
|
|
||||||
const member = await getGroupMember(payload.group_id.toString(), payload.user_id.toString());
|
const member = await getGroupMember(payload.group_id.toString(), payload.user_id.toString());
|
||||||
// log(member);
|
// log(member);
|
||||||
if (member) {
|
if (member) {
|
||||||
@ -39,13 +35,14 @@ class GetGroupMemberInfo extends BaseAction<PayloadType, OB11GroupMember> {
|
|||||||
logDebug('获取群成员详细信息失败, 只能返回基础信息', e);
|
logDebug('获取群成员详细信息失败, 只能返回基础信息', e);
|
||||||
}
|
}
|
||||||
const retMember = OB11Constructor.groupMember(payload.group_id.toString(), member);
|
const retMember = OB11Constructor.groupMember(payload.group_id.toString(), member);
|
||||||
for (let i = 0, len = webGroupMembers.length; i < len; i++) {
|
for (let i = 0, len = WebGroupMember.length; i < len; i++) {
|
||||||
if (webGroupMembers[i]?.uin && webGroupMembers[i].uin === retMember.user_id) {
|
if (WebGroupMember[i]?.uin && WebGroupMember[i].uin === retMember.user_id) {
|
||||||
retMember.join_time = webGroupMembers[i]?.join_time;
|
retMember.join_time = WebGroupMember[i]?.join_time;
|
||||||
retMember.last_sent_time = webGroupMembers[i]?.last_speak_time;
|
retMember.last_sent_time = WebGroupMember[i]?.last_speak_time;
|
||||||
retMember.qage = webGroupMembers[i]?.qage;
|
retMember.qage = WebGroupMember[i]?.qage;
|
||||||
retMember.level = webGroupMembers[i]?.lv.level;
|
retMember.level = WebGroupMember[i]?.lv.level;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return retMember;
|
return retMember;
|
||||||
} else {
|
} else {
|
||||||
|
@ -3,7 +3,7 @@ import { OB11GroupMember } from '../../types';
|
|||||||
import { OB11Constructor } from '../../constructor';
|
import { OB11Constructor } from '../../constructor';
|
||||||
import BaseAction from '../BaseAction';
|
import BaseAction from '../BaseAction';
|
||||||
import { ActionName } from '../types';
|
import { ActionName } from '../types';
|
||||||
import { napCatCore, NTQQGroupApi, WebApiGroupMember } from '@/core';
|
import { napCatCore, NTQQGroupApi } from '@/core';
|
||||||
import { WebApi } from '@/core/apis/webapi';
|
import { WebApi } from '@/core/apis/webapi';
|
||||||
import { logDebug } from '@/common/utils/log';
|
import { logDebug } from '@/common/utils/log';
|
||||||
|
|
||||||
@ -18,13 +18,12 @@ class GetGroupMemberList extends BaseAction<PayloadType, OB11GroupMember[]> {
|
|||||||
|
|
||||||
protected async _handle(payload: PayloadType) {
|
protected async _handle(payload: PayloadType) {
|
||||||
const MemberMap: Map<number, OB11GroupMember> = new Map<number, OB11GroupMember>();
|
const MemberMap: Map<number, OB11GroupMember> = new Map<number, OB11GroupMember>();
|
||||||
const webGroupMembers: WebApiGroupMember[] = [];
|
const WebGroupMember = await WebApi.getGroupMembers(payload.group_id.toString());
|
||||||
// await NTQQGroupApi.getGroupMembers(payload.group_id.toString());
|
|
||||||
const group = await getGroup(payload.group_id.toString());
|
const group = await getGroup(payload.group_id.toString());
|
||||||
if (!group) {
|
if (!group) {
|
||||||
throw (`群${payload.group_id}不存在`);
|
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());
|
// webGroupMembers = await WebApi.getGroupMembers(payload.group_id.toString());
|
||||||
const _groupMembers = await NTQQGroupApi.getGroupMembers(payload.group_id.toString());
|
const _groupMembers = await NTQQGroupApi.getGroupMembers(payload.group_id.toString());
|
||||||
groupMembers.set(group.groupCode, _groupMembers);
|
groupMembers.set(group.groupCode, _groupMembers);
|
||||||
@ -36,17 +35,17 @@ class GetGroupMemberList extends BaseAction<PayloadType, OB11GroupMember[]> {
|
|||||||
MemberMap.set(_groupMembers[i].user_id, _groupMembers[i]);
|
MemberMap.set(_groupMembers[i].user_id, _groupMembers[i]);
|
||||||
}
|
}
|
||||||
// 合并数据
|
// 合并数据
|
||||||
for (let i = 0, len = webGroupMembers.length; i < len; i++) {
|
for (let i = 0, len = WebGroupMember.length; i < len; i++) {
|
||||||
if (!webGroupMembers[i]?.uin) {
|
if (!WebGroupMember[i]?.uin) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const MemberData = MemberMap.get(webGroupMembers[i]?.uin);
|
const MemberData = MemberMap.get(WebGroupMember[i]?.uin);
|
||||||
if (MemberData) {
|
if (MemberData) {
|
||||||
MemberData.join_time = webGroupMembers[i]?.join_time;
|
MemberData.join_time = WebGroupMember[i]?.join_time;
|
||||||
MemberData.last_sent_time = webGroupMembers[i]?.last_speak_time;
|
MemberData.last_sent_time = WebGroupMember[i]?.last_speak_time;
|
||||||
MemberData.qage = webGroupMembers[i]?.qage;
|
MemberData.qage = WebGroupMember[i]?.qage;
|
||||||
MemberData.level = webGroupMembers[i]?.lv.level;
|
MemberData.level = WebGroupMember[i]?.lv.level;
|
||||||
MemberMap.set(webGroupMembers[i]?.uin, MemberData);
|
MemberMap.set(WebGroupMember[i]?.uin, MemberData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 还原Map到Array
|
// 还原Map到Array
|
||||||
|
@ -101,9 +101,7 @@ export class ReverseWebsocket {
|
|||||||
await this.onmessage(data.toString());
|
await this.onmessage(data.toString());
|
||||||
});
|
});
|
||||||
|
|
||||||
this.websocket.on('error', (err) => {
|
this.websocket.on('error', log);
|
||||||
logError('websocket error', err.toString());
|
|
||||||
});
|
|
||||||
|
|
||||||
const wsClientInterval = setInterval(() => {
|
const wsClientInterval = setInterval(() => {
|
||||||
postWsEvent(new OB11HeartbeatEvent(!!selfInfo.online, true, heartInterval));
|
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