mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-11 15:30:25 +00:00
refactor: core
This commit is contained in:
@@ -2,10 +2,10 @@ import { ActionName, BaseCheckResult } from './types';
|
||||
import { OB11Response } from './OB11Response';
|
||||
import { OB11Return } from '../types';
|
||||
|
||||
import { log } from '../../common/utils/log';
|
||||
import { log, logError } from '../../common/utils/log';
|
||||
|
||||
class BaseAction<PayloadType, ReturnDataType> {
|
||||
actionName: ActionName;
|
||||
actionName!: ActionName;
|
||||
|
||||
protected async check(payload: PayloadType): Promise<BaseCheckResult> {
|
||||
return {
|
||||
@@ -21,8 +21,8 @@ class BaseAction<PayloadType, ReturnDataType> {
|
||||
try {
|
||||
const resData = await this._handle(payload);
|
||||
return OB11Response.ok(resData);
|
||||
} catch (e) {
|
||||
log('发生错误', e);
|
||||
} catch (e: any) {
|
||||
logError('发生错误', e);
|
||||
return OB11Response.error(e?.toString() || e?.stack?.toString() || '未知错误,可能操作超时', 200);
|
||||
}
|
||||
}
|
||||
@@ -35,8 +35,8 @@ class BaseAction<PayloadType, ReturnDataType> {
|
||||
try {
|
||||
const resData = await this._handle(payload);
|
||||
return OB11Response.ok(resData, echo);
|
||||
} catch (e) {
|
||||
log('发生错误', e);
|
||||
} catch (e: any) {
|
||||
logError('发生错误', e);
|
||||
return OB11Response.error(e.stack?.toString() || e.toString(), 1200, echo);
|
||||
}
|
||||
}
|
||||
@@ -46,4 +46,4 @@ class BaseAction<PayloadType, ReturnDataType> {
|
||||
}
|
||||
}
|
||||
|
||||
export default BaseAction;
|
||||
export default BaseAction;
|
||||
|
||||
@@ -10,7 +10,7 @@ import {
|
||||
NTQQWindowApi,
|
||||
} from '@/core';
|
||||
import { ActionName } from '../types';
|
||||
import { log } from '@/common/utils/log';
|
||||
import { log, logDebug } from '@/common/utils/log';
|
||||
|
||||
interface Payload {
|
||||
method: string,
|
||||
@@ -21,12 +21,12 @@ export default class Debug extends BaseAction<Payload, any> {
|
||||
actionName = ActionName.Debug;
|
||||
|
||||
protected async _handle(payload: Payload): Promise<any> {
|
||||
log('debug call ntqq api', payload);
|
||||
logDebug('debug call ntqq api', payload);
|
||||
const ntqqApi = [NTQQMsgApi, NTQQFriendApi, NTQQGroupApi, NTQQUserApi, NTQQFileApi,
|
||||
// NTQQFileCacheApi,
|
||||
NTQQWindowApi];
|
||||
for (const ntqqApiClass of ntqqApi) {
|
||||
log('ntqqApiClass', ntqqApiClass);
|
||||
logDebug('ntqqApiClass', ntqqApiClass);
|
||||
const method = (<any>ntqqApiClass)[payload.method];
|
||||
if (method) {
|
||||
const result = method(...payload.args);
|
||||
|
||||
@@ -2,7 +2,7 @@ import BaseAction from '../BaseAction';
|
||||
import fs from 'fs/promises';
|
||||
import { dbUtil } from '@/common/utils/db';
|
||||
import { ob11Config } from '@/onebot11/config';
|
||||
import { log } from '@/common/utils/log';
|
||||
import { log, logDebug } from '@/common/utils/log';
|
||||
import { sleep } from '@/common/utils/helper';
|
||||
import { uri2local } from '@/common/utils/file';
|
||||
import { ActionName } from '../types';
|
||||
@@ -47,7 +47,7 @@ export class GetFileBase extends BaseAction<GetFilePayload, GetFileResponse> {
|
||||
try {
|
||||
await fs.access(cache.path, fs.constants.F_OK);
|
||||
} catch (e) {
|
||||
log('local file not found, start download...');
|
||||
logDebug('local file not found, start download...');
|
||||
// if (cache.url) {
|
||||
// const downloadResult = await uri2local(cache.url);
|
||||
// if (downloadResult.success) {
|
||||
|
||||
@@ -6,6 +6,7 @@ import { ChatType } from '@/core/entities';
|
||||
import { dbUtil } from '@/common/utils/db';
|
||||
import { NTQQMsgApi } from '@/core/apis/msg';
|
||||
import { OB11Constructor } from '../../constructor';
|
||||
import { logDebug } from '@/common/utils/log';
|
||||
|
||||
|
||||
interface Payload {
|
||||
@@ -32,7 +33,7 @@ export default class GetFriendMsgHistory extends BaseAction<Payload, Response> {
|
||||
chatType: friend ? ChatType.friend : ChatType.temp,
|
||||
peerUid: uid
|
||||
}, startMsgId, parseInt(payload.count?.toString()) || 20));
|
||||
console.log(historyResult);
|
||||
logDebug(historyResult);
|
||||
const msgList = historyResult.msgList;
|
||||
await Promise.all(msgList.map(async msg => {
|
||||
msg.id = await dbUtil.addMsg(msg);
|
||||
|
||||
@@ -6,6 +6,7 @@ import { ChatType } from '@/core/entities';
|
||||
import { dbUtil } from '@/common/utils/db';
|
||||
import { NTQQMsgApi } from '@/core/apis/msg';
|
||||
import { OB11Constructor } from '../../constructor';
|
||||
import { logDebug } from '@/common/utils/log';
|
||||
|
||||
|
||||
interface Payload {
|
||||
@@ -32,7 +33,7 @@ export default class GoCQHTTPGetGroupMsgHistory extends BaseAction<Payload, Resp
|
||||
chatType: ChatType.group,
|
||||
peerUid: group.groupCode
|
||||
}, startMsgId, parseInt(payload.count?.toString()) || 20));
|
||||
console.log(historyResult);
|
||||
logDebug(historyResult);
|
||||
const msgList = historyResult.msgList;
|
||||
await Promise.all(msgList.map(async msg => {
|
||||
msg.id = await dbUtil.addMsg(msg);
|
||||
|
||||
@@ -4,7 +4,7 @@ import { getUidByUin, uid2UinMap } from '@/common/data';
|
||||
import { OB11Constructor } from '../../constructor';
|
||||
import { ActionName } from '../types';
|
||||
import { NTQQUserApi } from '@/core/apis/user';
|
||||
import { log } from '@/common/utils/log';
|
||||
import { log, logDebug } from '@/common/utils/log';
|
||||
|
||||
|
||||
export default class GoCQHTTPGetStrangerInfo extends BaseAction<{ user_id: number }, OB11User> {
|
||||
@@ -12,7 +12,7 @@ export default class GoCQHTTPGetStrangerInfo extends BaseAction<{ user_id: numbe
|
||||
|
||||
protected async _handle(payload: { user_id: number }): Promise<OB11User> {
|
||||
const user_id = payload.user_id.toString();
|
||||
log('uidMaps', uid2UinMap);
|
||||
logDebug('uidMaps', uid2UinMap);
|
||||
const uid = getUidByUin(user_id);
|
||||
if (!uid) {
|
||||
throw new Error('查无此人');
|
||||
|
||||
@@ -4,7 +4,7 @@ import { OB11Constructor } from '../../constructor';
|
||||
import BaseAction from '../BaseAction';
|
||||
import { ActionName } from '../types';
|
||||
import { NTQQUserApi } from '@/core/apis/user';
|
||||
import { log } from '@/common/utils/log';
|
||||
import { log, logDebug } from '@/common/utils/log';
|
||||
import { isNull } from '../../../common/utils/helper';
|
||||
|
||||
|
||||
@@ -20,13 +20,13 @@ class GetGroupMemberInfo extends BaseAction<PayloadType, OB11GroupMember> {
|
||||
const member = await getGroupMember(payload.group_id.toString(), payload.user_id.toString());
|
||||
// log(member);
|
||||
if (member) {
|
||||
log('获取群成员详细信息');
|
||||
logDebug('获取群成员详细信息');
|
||||
try {
|
||||
const info = (await NTQQUserApi.getUserDetailInfo(member.uid));
|
||||
log('群成员详细信息结果', info);
|
||||
logDebug('群成员详细信息结果', info);
|
||||
Object.assign(member, info);
|
||||
} catch (e) {
|
||||
log('获取群成员详细信息失败, 只能返回基础信息', e);
|
||||
logDebug('获取群成员详细信息失败, 只能返回基础信息', e);
|
||||
}
|
||||
return OB11Constructor.groupMember(payload.group_id.toString(), member);
|
||||
} else {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import BaseAction from '../BaseAction';
|
||||
import { ActionName } from '../types';
|
||||
import { NTQQGroupApi } from '@/core/apis/group';
|
||||
import { log } from '@/common/utils/log';
|
||||
import { log, logError } from '@/common/utils/log';
|
||||
|
||||
interface Payload {
|
||||
group_id: number,
|
||||
@@ -15,7 +15,7 @@ export default class SetGroupLeave extends BaseAction<Payload, any> {
|
||||
try {
|
||||
await NTQQGroupApi.quitGroup(payload.group_id.toString());
|
||||
} catch (e) {
|
||||
log('退群失败', e);
|
||||
logError('退群失败', e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import { ActionName, BaseCheckResult } from '../types';
|
||||
import * as fs from 'node:fs';
|
||||
import { decodeCQCode } from '../../cqcode';
|
||||
import { dbUtil } from '@/common/utils/db';
|
||||
import { log } from '@/common/utils/log';
|
||||
import { log, logDebug, logError } from '@/common/utils/log';
|
||||
import { sleep } from '@/common/utils/helper';
|
||||
import { uri2local } from '@/common/utils/file';
|
||||
import { getFriend, getGroup, getGroupMember, getUidByUin, selfInfo } from '@/common/data';
|
||||
@@ -168,11 +168,11 @@ export async function createSendElements(messageData: OB11MessageData[], group:
|
||||
// log('download result', downloadPath);
|
||||
// log('下载完成后的msg', msg);
|
||||
}
|
||||
log('找到文件缓存', file);
|
||||
logDebug('找到文件缓存', file);
|
||||
}
|
||||
const { path, isLocal, fileName, errMsg } = (await uri2local(file));
|
||||
if (errMsg) {
|
||||
log('文件下载失败', errMsg);
|
||||
logError('文件下载失败', errMsg);
|
||||
throw Error('文件下载失败' + errMsg);
|
||||
// throw (errMsg);
|
||||
// continue
|
||||
@@ -182,10 +182,10 @@ export async function createSendElements(messageData: OB11MessageData[], group:
|
||||
deleteAfterSentFiles.push(path);
|
||||
}
|
||||
if (sendMsg.type === OB11MessageDataType.file) {
|
||||
log('发送文件', path, payloadFileName || fileName);
|
||||
logDebug('发送文件', path, payloadFileName || fileName);
|
||||
sendElements.push(await SendMsgElementConstructor.file(path, payloadFileName || fileName));
|
||||
} else if (sendMsg.type === OB11MessageDataType.video) {
|
||||
log('发送视频', path, payloadFileName || fileName);
|
||||
logDebug('发送视频', path, payloadFileName || fileName);
|
||||
let thumb = sendMsg.data?.thumb;
|
||||
if (thumb) {
|
||||
const uri2LocalRes = await uri2local(thumb);
|
||||
@@ -239,7 +239,7 @@ export async function sendMsg(peer: Peer, sendElements: SendMessageElement[], de
|
||||
try {
|
||||
returnMsg.id = await dbUtil.addMsg(returnMsg, false);
|
||||
} catch (e: any) {
|
||||
log('发送消息id获取失败', e);
|
||||
logDebug('发送消息id获取失败', e);
|
||||
returnMsg.id = 0;
|
||||
}
|
||||
// log('消息发送结果', returnMsg);
|
||||
@@ -380,7 +380,7 @@ export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnDataType> {
|
||||
}
|
||||
|
||||
private async cloneMsg(msg: RawMessage): Promise<RawMessage | undefined> {
|
||||
log('克隆的目标消息', msg);
|
||||
logDebug('克隆的目标消息', msg);
|
||||
const sendElements: SendMessageElement[] = [];
|
||||
for (const ele of msg.elements) {
|
||||
sendElements.push(ele as SendMessageElement);
|
||||
@@ -390,9 +390,9 @@ export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnDataType> {
|
||||
|
||||
}
|
||||
if (sendElements.length === 0) {
|
||||
log('需要clone的消息无法解析,将会忽略掉', msg);
|
||||
logDebug('需要clone的消息无法解析,将会忽略掉', msg);
|
||||
}
|
||||
log('克隆消息', sendElements);
|
||||
logDebug('克隆消息', sendElements);
|
||||
try {
|
||||
const nodeMsg = await NTQQMsgApi.sendMsg({
|
||||
chatType: ChatType.friend,
|
||||
@@ -401,7 +401,7 @@ export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnDataType> {
|
||||
await sleep(500);
|
||||
return nodeMsg;
|
||||
} catch (e) {
|
||||
log(e, '克隆转发消息失败,将忽略本条消息', msg);
|
||||
logError(e, '克隆转发消息失败,将忽略本条消息', msg);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -440,7 +440,7 @@ export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnDataType> {
|
||||
sendElements,
|
||||
deleteAfterSentFiles
|
||||
} = await createSendElements(convertMessage2List(messageNode.data.content), group);
|
||||
log('开始生成转发节点', sendElements);
|
||||
logDebug('开始生成转发节点', sendElements);
|
||||
const sendElementsSplit: SendMessageElement[][] = [];
|
||||
let splitIndex = 0;
|
||||
for (const ele of sendElements) {
|
||||
@@ -457,20 +457,20 @@ export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnDataType> {
|
||||
} else {
|
||||
sendElementsSplit[splitIndex].push(ele);
|
||||
}
|
||||
log(sendElementsSplit);
|
||||
logDebug(sendElementsSplit);
|
||||
}
|
||||
// log("分割后的转发节点", sendElementsSplit)
|
||||
for (const eles of sendElementsSplit) {
|
||||
const nodeMsg = await sendMsg(selfPeer, eles, [], true);
|
||||
nodeMsgIds.push(nodeMsg.msgId);
|
||||
await sleep(500);
|
||||
log('转发节点生成成功', nodeMsg.msgId);
|
||||
logDebug('转发节点生成成功', nodeMsg.msgId);
|
||||
}
|
||||
deleteAfterSentFiles.map(f => fs.unlink(f, () => {
|
||||
}));
|
||||
|
||||
} catch (e) {
|
||||
log('生成转发消息节点失败', e);
|
||||
logDebug('生成转发消息节点失败', e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -491,10 +491,10 @@ export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnDataType> {
|
||||
}
|
||||
}
|
||||
}
|
||||
log('nodeMsgArray', nodeMsgArray);
|
||||
logDebug('nodeMsgArray', nodeMsgArray);
|
||||
nodeMsgIds = nodeMsgArray.map(msg => msg.msgId);
|
||||
if (needSendSelf) {
|
||||
log('需要克隆转发消息');
|
||||
logDebug('需要克隆转发消息');
|
||||
for (const [index, msg] of nodeMsgArray.entries()) {
|
||||
if (msg.peerUid !== selfInfo.uid) {
|
||||
const cloneMsg = await this.cloneMsg(msg);
|
||||
@@ -518,10 +518,10 @@ export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnDataType> {
|
||||
throw Error('转发消息失败,生成节点为空');
|
||||
}
|
||||
try {
|
||||
log('开发转发', srcPeer, destPeer, nodeMsgIds);
|
||||
logDebug('开发转发', srcPeer, destPeer, nodeMsgIds);
|
||||
return await NTQQMsgApi.multiForwardMsg(srcPeer!, destPeer, nodeMsgIds);
|
||||
} catch (e) {
|
||||
log('forward failed', e);
|
||||
logError('forward failed', e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import { NTQQUserApi } from '../../../core/src/apis';
|
||||
import BaseAction from '../BaseAction';
|
||||
import { getFriend, getUidByUin, uid2UinMap } from '../../../common/data';
|
||||
import { ActionName } from '../types';
|
||||
import { log } from '../../../common/utils/log';
|
||||
import { log, logDebug } from '../../../common/utils/log';
|
||||
|
||||
interface Payload {
|
||||
user_id: number,
|
||||
@@ -13,7 +13,7 @@ export default class SendLike extends BaseAction<Payload, null> {
|
||||
actionName = ActionName.SendLike;
|
||||
|
||||
protected async _handle(payload: Payload): Promise<null> {
|
||||
log('点赞参数', payload);
|
||||
logDebug('点赞参数', payload);
|
||||
try {
|
||||
const qq = payload.user_id.toString();
|
||||
const friend = await getFriend(qq);
|
||||
@@ -24,7 +24,7 @@ export default class SendLike extends BaseAction<Payload, null> {
|
||||
uid = friend.uid;
|
||||
}
|
||||
const result = await NTQQUserApi.like(uid, parseInt(payload.times?.toString()) || 1);
|
||||
console.log('点赞结果', result);
|
||||
logDebug('点赞结果', result);
|
||||
if (result.result !== 0) {
|
||||
throw Error(result.errMsg);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user