Merge branch 'main' into upmain

This commit is contained in:
Alen 2024-08-27 13:39:38 +08:00
commit 926d7deb43
71 changed files with 128 additions and 117 deletions

View File

@ -4,7 +4,7 @@
"name": "NapCatQQ", "name": "NapCatQQ",
"slug": "NapCat.Framework", "slug": "NapCat.Framework",
"description": "高性能的 OneBot 11 协议实现", "description": "高性能的 OneBot 11 协议实现",
"version": "2.2.15", "version": "2.2.16",
"icon": "./logo.png", "icon": "./logo.png",
"authors": [ "authors": [
{ {

View File

@ -2,7 +2,7 @@
"name": "napcat", "name": "napcat",
"private": true, "private": true,
"type": "module", "type": "module",
"version": "2.2.15", "version": "2.2.16",
"scripts": { "scripts": {
"build:framework": "vite build --mode framework", "build:framework": "vite build --mode framework",
"build:shell": "vite build --mode shell", "build:shell": "vite build --mode shell",

View File

@ -10,7 +10,7 @@ export interface ListenerIBase {
[key: string]: any; [key: string]: any;
} }
export class NTEventChannel extends EventEmitter { export class NTEventWrapperV2 extends EventEmitter {
private wrapperApi: WrapperNodeApi; private wrapperApi: WrapperNodeApi;
private wrapperSession: NodeIQQNTWrapperSession; private wrapperSession: NodeIQQNTWrapperSession;
private listenerRefStorage = new Map<string, ListenerIBase>(); private listenerRefStorage = new Map<string, ListenerIBase>();

View File

@ -11,7 +11,7 @@ interface InternalMapKey {
export type ListenerClassBase = Record<string, string>; export type ListenerClassBase = Record<string, string>;
export class LegacyNTEventWrapper { export class NTEventWrapper {
private WrapperSession: NodeIQQNTWrapperSession | undefined; //WrapperSession private WrapperSession: NodeIQQNTWrapperSession | undefined; //WrapperSession
private listenerManager: Map<string, ListenerClassBase> = new Map<string, ListenerClassBase>(); //ListenerName-Unique -> Listener实例 private listenerManager: Map<string, ListenerClassBase> = new Map<string, ListenerClassBase>(); //ListenerName-Unique -> Listener实例
private EventTask = new Map<string, Map<string, Map<string, InternalMapKey>>>(); //tasks ListenerMainName -> ListenerSubName-> uuid -> {timeout,createtime,func} private EventTask = new Map<string, Map<string, Map<string, InternalMapKey>>>(); //tasks ListenerMainName -> ListenerSubName-> uuid -> {timeout,createtime,func}

View File

@ -1,5 +1,5 @@
import log4js, { Configuration } from 'log4js'; import log4js, { Configuration } from 'log4js';
import { truncateString } from '@/common/utils/helper'; import { truncateString } from '@/common/helper';
import path from 'node:path'; import path from 'node:path';
import chalk from 'chalk'; import chalk from 'chalk';
import { AtType, ChatType, ElementType, MessageElement, RawMessage, SelfInfo } from '@/core'; import { AtType, ChatType, ElementType, MessageElement, RawMessage, SelfInfo } from '@/core';

View File

@ -2,8 +2,6 @@ import path, { dirname } from 'path';
import { fileURLToPath } from 'url'; import { fileURLToPath } from 'url';
import fs from 'fs'; import fs from 'fs';
export const napcat_version = '2.2.15';
export class NapCatPathWrapper { export class NapCatPathWrapper {
binaryPath: string; binaryPath: string;
logsPath: string; logsPath: string;

View File

@ -1,6 +1,6 @@
import path from 'node:path'; import path from 'node:path';
import fs from 'node:fs'; import fs from 'node:fs';
import { systemPlatform } from '@/common/utils/system'; import { systemPlatform } from '@/common/system';
import { getDefaultQQVersionConfigInfo, getQQVersionConfigPath } from './helper'; import { getDefaultQQVersionConfigInfo, getQQVersionConfigPath } from './helper';
import AppidTable from '@/core/external/appid.json'; import AppidTable from '@/core/external/appid.json';
import { LogWrapper } from './log'; import { LogWrapper } from './log';

1
src/common/version.ts Normal file
View File

@ -0,0 +1 @@
export const napCatVersion = '2.2.16';

View File

@ -23,12 +23,12 @@ import imageSize from 'image-size';
import { ISizeCalculationResult } from 'image-size/dist/types/interface'; import { ISizeCalculationResult } from 'image-size/dist/types/interface';
import { NodeIKernelSearchService } from '../services/NodeIKernelSearchService'; import { NodeIKernelSearchService } from '../services/NodeIKernelSearchService';
import { RkeyManager } from '../helper/rkey'; import { RkeyManager } from '../helper/rkey';
import { calculateFileMD5, isGIF } from '@/common/utils/file'; import { calculateFileMD5, isGIF } from '@/common/file';
import pathLib from 'node:path'; import pathLib from 'node:path';
import { defaultVideoThumbB64, getVideoInfo } from '@/common/utils/video'; import { defaultVideoThumbB64, getVideoInfo } from '@/common/video';
import ffmpeg from 'fluent-ffmpeg'; import ffmpeg from 'fluent-ffmpeg';
import fsnormal from 'node:fs'; import fsnormal from 'node:fs';
import { encodeSilk } from '@/common/utils/audio'; import { encodeSilk } from '@/common/audio';
export class NTQQFileApi { export class NTQQFileApi {

View File

@ -1,6 +1,6 @@
import { FriendV2 } from '@/core/entities'; import { FriendV2 } from '@/core/entities';
import { BuddyListReqType, InstanceContext, NapCatCore, NodeIKernelProfileService } from '@/core'; import { BuddyListReqType, InstanceContext, NapCatCore, NodeIKernelProfileService } from '@/core';
import { LimitedHashTable } from '@/common/utils/message-unique'; import { LimitedHashTable } from '@/common/message-unique';
export class NTQQFriendApi { export class NTQQFriendApi {
context: InstanceContext; context: InstanceContext;

View File

@ -11,7 +11,7 @@ import {
NapCatCore, NapCatCore,
NodeIKernelGroupService, NodeIKernelGroupService,
} from '@/core'; } from '@/core';
import { isNumeric, runAllWithTimeout, sleep } from '@/common/utils/helper'; import { isNumeric, runAllWithTimeout, sleep } from '@/common/helper';
export class NTQQGroupApi { export class NTQQGroupApi {
context: InstanceContext; context: InstanceContext;

View File

@ -3,6 +3,10 @@ import { InstanceContext, NapCatCore } from '@/core';
import { GeneralCallResult } from '@/core/services/common'; import { GeneralCallResult } from '@/core/services/common';
export class NTQQMsgApi { export class NTQQMsgApi {
// nt_qq//global//nt_data//Emoji//emoji-resource//sysface_res/apng/ 下可以看到所有QQ表情预览
// nt_qq\global\nt_data\Emoji\emoji-resource\face_config.json 里面有所有表情的id, 自带表情id是QSid, 标准emoji表情id是QCid
// 其实以官方文档为准是最好的https://bot.q.qq.com/wiki/develop/api-v2/openapi/emoji/model.html#EmojiType
context: InstanceContext; context: InstanceContext;
core: NapCatCore; core: NapCatCore;
@ -10,7 +14,12 @@ export class NTQQMsgApi {
this.context = context; this.context = context;
this.core = core; this.core = core;
} }
async getAioFirstViewLatestMsgs(peer: Peer, MsgCount: number) {
return this.context.session.getMsgService().getAioFirstViewLatestMsgs(peer, MsgCount);
}
async getLatestDbMsgs(peer: Peer, MsgCount: number) {
return this.context.session.getMsgService().getLatestDbMsgs(peer, MsgCount);
}
async FetchLongMsg(peer: Peer, msgId: string) { async FetchLongMsg(peer: Peer, msgId: string) {
return this.context.session.getMsgService().fetchLongMsg(peer, msgId); return this.context.session.getMsgService().fetchLongMsg(peer, msgId);
} }

View File

@ -1,4 +1,4 @@
import { RequestUtil } from '@/common/utils/request'; import { RequestUtil } from '@/common/request';
import { MiniAppLuaJsonType } from '@/core'; import { MiniAppLuaJsonType } from '@/core';
import { InstanceContext, NapCatCore } from '..'; import { InstanceContext, NapCatCore } from '..';

View File

@ -1,8 +1,8 @@
import type { ModifyProfileParams, User, UserDetailInfoByUinV2 } from '@/core/entities'; import type { ModifyProfileParams, User, UserDetailInfoByUinV2 } from '@/core/entities';
import { RequestUtil } from '@/common/utils/request'; import { RequestUtil } from '@/common/request';
import { ProfileBizType, UserDetailSource } from '@/core/services'; import { ProfileBizType, UserDetailSource } from '@/core/services';
import { InstanceContext, NapCatCore } from '..'; import { InstanceContext, NapCatCore } from '..';
import { solveAsyncProblem } from '@/common/utils/helper'; import { solveAsyncProblem } from '@/common/helper';
export class NTQQUserApi { export class NTQQUserApi {
context: InstanceContext; context: InstanceContext;

View File

@ -1,4 +1,4 @@
import { RequestUtil } from '@/common/utils/request'; import { RequestUtil } from '@/common/request';
import { import {
GroupEssenceMsgRet, GroupEssenceMsgRet,
InstanceContext, InstanceContext,

View File

@ -2,15 +2,15 @@ import { NodeQQNTWrapperUtil, StableNTApiWrapper, WrapperNodeApi } from '@/core/
import path from 'node:path'; import path from 'node:path';
import fs from 'node:fs'; import fs from 'node:fs';
import { InstanceContext } from './wrapper'; import { InstanceContext } from './wrapper';
import { proxiedListenerOf } from '@/common/utils/proxy-handler'; import { proxiedListenerOf } from '@/common/proxy-handler';
import { NodeIKernelGroupListener, NodeIKernelMsgListener, NodeIKernelProfileListener } from './listeners'; import { NodeIKernelGroupListener, NodeIKernelMsgListener, NodeIKernelProfileListener } from './listeners';
import { DataSource, GroupMember, SelfInfo } from './entities'; import { DataSource, GroupMember, SelfInfo } from './entities';
import { LegacyNTEventWrapper } from '@/common/framework/event-legacy'; import { NTEventWrapper } from '@/common/event';
import { NTQQFileApi, NTQQFriendApi, NTQQGroupApi, NTQQMsgApi, NTQQSystemApi, NTQQUserApi, NTQQWebApi } from './apis'; import { NTQQFileApi, NTQQFriendApi, NTQQGroupApi, NTQQMsgApi, NTQQSystemApi, NTQQUserApi, NTQQWebApi } from './apis';
import os from 'node:os'; import os from 'node:os';
import { NTQQCollectionApi } from './apis/collection'; import { NTQQCollectionApi } from './apis/collection';
import { NapCatConfigLoader } from './helper/config'; import { NapCatConfigLoader } from './helper/config';
import { LogLevel } from '@/common/utils/log'; import { LogLevel } from '@/common/log';
export enum NapCatCoreWorkingEnv { export enum NapCatCoreWorkingEnv {
Unknown = 0, Unknown = 0,
@ -31,7 +31,7 @@ export function loadQQWrapper(QQVersion: string): WrapperNodeApi {
export class NapCatCore { export class NapCatCore {
readonly context: InstanceContext; readonly context: InstanceContext;
readonly apis: StableNTApiWrapper; readonly apis: StableNTApiWrapper;
readonly eventWrapper: LegacyNTEventWrapper; readonly eventWrapper: NTEventWrapper;
// readonly eventChannel: NTEventChannel; // readonly eventChannel: NTEventChannel;
NapCatDataPath: string; NapCatDataPath: string;
NapCatTempPath: string; NapCatTempPath: string;
@ -45,7 +45,7 @@ export class NapCatCore {
this.selfInfo = selfInfo; this.selfInfo = selfInfo;
this.context = context; this.context = context;
this.util = this.context.wrapper.NodeQQNTWrapperUtil; this.util = this.context.wrapper.NodeQQNTWrapperUtil;
this.eventWrapper = new LegacyNTEventWrapper(context.session); this.eventWrapper = new NTEventWrapper(context.session);
this.apis = { this.apis = {
FileApi: new NTQQFileApi(this.context, this), FileApi: new NTQQFileApi(this.context, this),
SystemApi: new NTQQSystemApi(this.context, this), SystemApi: new NTQQSystemApi(this.context, this),

View File

@ -1,11 +1,9 @@
import { ConfigBase } from '@/common/utils/config-base'; import { ConfigBase } from '@/common/config-base';
import napCatDefaultConfig from '@/core/external/napcat.json'; import napCatDefaultConfig from '@/core/external/napcat.json';
import { NapCatCore } from '@/core'; import { NapCatCore } from '@/core';
// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
export type NapCatConfig = typeof napCatDefaultConfig; export type NapCatConfig = typeof napCatDefaultConfig;
// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
export class NapCatConfigLoader extends ConfigBase<NapCatConfig> { export class NapCatConfigLoader extends ConfigBase<NapCatConfig> {
constructor(core: NapCatCore, configPath: string) { constructor(core: NapCatCore, configPath: string) {
super('napcat', core, configPath); super('napcat', core, configPath);

View File

@ -1,5 +1,5 @@
import { LogWrapper } from '@/common/utils/log'; import { LogWrapper } from '@/common/log';
import { RequestUtil } from '@/common/utils/request'; import { RequestUtil } from '@/common/request';
interface ServerRkeyData { interface ServerRkeyData {
group_rkey: string; group_rkey: string;

View File

@ -1,6 +1,7 @@
import { DataSource, Group, GroupListUpdateType, GroupMember, GroupNotify } from '@/core/entities'; import { DataSource, Group, GroupListUpdateType, GroupMember, GroupNotify } from '@/core/entities';
export class NodeIKernelGroupListener { export class NodeIKernelGroupListener {
onGroupListInited(listEmpty: boolean): void { }
// 发现于Win 9.9.9 23159 // 发现于Win 9.9.9 23159
onGroupMemberLevelInfoChange(...args: unknown[]): void { onGroupMemberLevelInfoChange(...args: unknown[]): void {

View File

@ -167,11 +167,17 @@ export interface NodeIKernelMsgService {
getAllOnlineFileMsgs(...args: unknown[]): unknown; getAllOnlineFileMsgs(...args: unknown[]): unknown;
getLatestDbMsgs(peer: Peer, cnt: number): Promise<unknown>; getLatestDbMsgs(peer: Peer, cnt: number): Promise<GeneralCallResult & {
msgList: RawMessage[]
}>;
getLastMessageList(peer: Peer[]): Promise<unknown>; getLastMessageList(peer: Peer[]): Promise<GeneralCallResult & {
msgList: RawMessage[]
}>;
getAioFirstViewLatestMsgs(peer: Peer, num: number): unknown; getAioFirstViewLatestMsgs(peer: Peer, num: number): Promise<GeneralCallResult & {
msgList: RawMessage[]
}>;
getMsgs(peer: Peer, msgId: string, count: unknown, queryOrder: boolean): Promise<unknown>; getMsgs(peer: Peer, msgId: string, count: unknown, queryOrder: boolean): Promise<unknown>;
@ -512,11 +518,11 @@ export interface NodeIKernelMsgService {
result: number, result: number,
errMsg: string, errMsg: string,
emojiLikesList: emojiLikesList:
Array<{ Array<{
tinyId: string, tinyId: string,
nickName: string, nickName: string,
headUrl: string headUrl: string
}>, }>,
cookie: string, cookie: string,
isLastPage: boolean, isLastPage: boolean,
isFirstPage: boolean isFirstPage: boolean

View File

@ -1,9 +1,9 @@
import { LogWrapper } from '@/common/utils/log'; import { LogWrapper } from '@/common/log';
import { QQBasicInfoWrapper } from '@/common/utils/qq-basic-info'; import { QQBasicInfoWrapper } from '@/common/qq-basic-info';
import { NapCatCoreWorkingEnv, NodeIKernelLoginService, NodeIQQNTWrapperSession, WrapperNodeApi } from '@/core'; import { NapCatCoreWorkingEnv, NodeIKernelLoginService, NodeIQQNTWrapperSession, WrapperNodeApi } from '@/core';
import { NTQQFileApi, NTQQFriendApi, NTQQGroupApi, NTQQMsgApi, NTQQSystemApi, NTQQUserApi, NTQQWebApi } from '../apis'; import { NTQQFileApi, NTQQFriendApi, NTQQGroupApi, NTQQMsgApi, NTQQSystemApi, NTQQUserApi, NTQQWebApi } from '../apis';
import { NTQQCollectionApi } from '../apis/collection'; import { NTQQCollectionApi } from '../apis/collection';
import { NapCatPathWrapper } from '@/common/framework/napcat'; import { NapCatPathWrapper } from '@/common/path';
export interface InstanceContext { export interface InstanceContext {
readonly workingEnv: NapCatCoreWorkingEnv; readonly workingEnv: NapCatCoreWorkingEnv;

View File

@ -1,7 +1,7 @@
import path from 'node:path'; import path from 'node:path';
import fs from 'node:fs'; import fs from 'node:fs';
import { PlatformType, VendorType, WrapperSessionInitConfig } from './wrapper'; import { PlatformType, VendorType, WrapperSessionInitConfig } from './wrapper';
import { getMachineId, hostname, systemName, systemVersion } from '@/common/utils/system'; import { getMachineId, hostname, systemName, systemVersion } from '@/common/system';
export async function genSessionConfig(QQVersionAppid: string, QQVersion: string, selfUin: string, selfUid: string, account_path: string): Promise<WrapperSessionInitConfig> { export async function genSessionConfig(QQVersionAppid: string, QQVersion: string, selfUin: string, selfUid: string, account_path: string): Promise<WrapperSessionInitConfig> {
const downloadPath = path.join(account_path, 'NapCat', 'temp'); const downloadPath = path.join(account_path, 'NapCat', 'temp');

View File

@ -1,7 +1,7 @@
import { NapCatPathWrapper } from '@/common/framework/napcat'; import { NapCatPathWrapper } from '@/common/path';
import { LogWrapper } from '@/common/utils/log'; import { LogWrapper } from '@/common/log';
import { proxiedListenerOf } from '@/common/utils/proxy-handler'; import { proxiedListenerOf } from '@/common/proxy-handler';
import { QQBasicInfoWrapper } from '@/common/utils/qq-basic-info'; import { QQBasicInfoWrapper } from '@/common/qq-basic-info';
import { loadQQWrapper, NapCatCore, NapCatCoreWorkingEnv } from '@/core/core'; import { loadQQWrapper, NapCatCore, NapCatCoreWorkingEnv } from '@/core/core';
import { InstanceContext } from '@/core'; import { InstanceContext } from '@/core';
import { SelfInfo } from '@/core/entities'; import { SelfInfo } from '@/core/entities';

View File

@ -1,6 +1,6 @@
import { OB11Return } from '../types'; import { OB11Return } from '../types';
import { isNull } from '../../common/utils/helper'; import { isNull } from '../../common/helper';
export class OB11Response { export class OB11Response {
static res<T>(data: T, status: string, retcode: number, message: string = ''): OB11Return<T> { static res<T>(data: T, status: string, retcode: number, message: string = ''): OB11Return<T> {

View File

@ -2,7 +2,7 @@
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
const SchemaData = { const SchemaData = {
type: 'object', type: 'object',

View File

@ -1,7 +1,7 @@
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { checkFileReceived, uri2local } from '@/common/utils/file'; import { checkFileReceived, uri2local } from '@/common/file';
import fs from 'fs'; import fs from 'fs';
const SchemaData = { const SchemaData = {

View File

@ -1,7 +1,7 @@
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName, BaseCheckResult } from '../types'; import { ActionName, BaseCheckResult } from '../types';
import * as fs from 'node:fs'; import * as fs from 'node:fs';
import { checkFileReceived, uri2local } from '@/common/utils/file'; import { checkFileReceived, uri2local } from '@/common/file';
interface Payload { interface Payload {
file: string; file: string;

View File

@ -1,6 +1,6 @@
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import fs from 'fs/promises'; import fs from 'fs/promises';
import { UUIDConverter } from '@/common/utils/helper'; import { UUIDConverter } from '@/common/helper';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { ChatType, ElementType, FileElement, Peer, RawMessage, VideoElement } from '@/core/entities'; import { ChatType, ElementType, FileElement, Peer, RawMessage, VideoElement } from '@/core/entities';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';

View File

@ -2,7 +2,7 @@ import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import fs from 'fs'; import fs from 'fs';
import { join as joinPath } from 'node:path'; import { join as joinPath } from 'node:path';
import { calculateFileMD5, httpDownload } from '@/common/utils/file'; import { calculateFileMD5, httpDownload } from '@/common/file';
import { randomUUID } from 'crypto'; import { randomUUID } from 'crypto';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';

View File

@ -2,7 +2,7 @@ import BaseAction from '../BaseAction';
import { OB11ForwardMessage } from '@/onebot'; import { OB11ForwardMessage } from '@/onebot';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
const SchemaData = { const SchemaData = {
type: 'object', type: 'object',

View File

@ -1,9 +1,9 @@
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { OB11Message } from '@/onebot'; import { OB11Message } from '@/onebot';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { ChatType, RawMessage } from '@/core/entities'; import { ChatType, Peer, RawMessage } from '@/core/entities';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
interface Response { interface Response {
messages: OB11Message[]; messages: OB11Message[];
@ -13,7 +13,7 @@ const SchemaData = {
type: 'object', type: 'object',
properties: { properties: {
user_id: { type: ['number', 'string'] }, user_id: { type: ['number', 'string'] },
message_seq: { type: 'number' }, message_seq: { type: ['number', 'string'] },
count: { type: ['number', 'string'] }, count: { type: ['number', 'string'] },
reverseOrder: { type: ['boolean', 'string'] }, reverseOrder: { type: ['boolean', 'string'] },
}, },
@ -37,21 +37,19 @@ export default class GetFriendMsgHistory extends BaseAction<Payload, Response> {
if (!uid) throw `记录${payload.user_id}不存在`; if (!uid) throw `记录${payload.user_id}不存在`;
const friend = await NTQQFriendApi.isBuddy(uid); const friend = await NTQQFriendApi.isBuddy(uid);
const peer = { chatType: friend ? ChatType.KCHATTYPEC2C : ChatType.KCHATTYPETEMPC2CFROMGROUP, peerUid: uid }; const peer = { chatType: friend ? ChatType.KCHATTYPEC2C : ChatType.KCHATTYPETEMPC2CFROMGROUP, peerUid: uid };
const hasMessageSeq = !payload.message_seq ? !!payload.message_seq : !(payload.message_seq?.toString() === '' || payload.message_seq?.toString() === '0');
//拉取消息 //拉取消息
let msgList: RawMessage[]; const startMsgId = hasMessageSeq ? (MessageUnique.getMsgIdAndPeerByShortId(+payload.message_seq!)?.MsgId ?? payload.message_seq!.toString()) : '0';
if (!payload.message_seq || payload.message_seq == 0) { let msgList = hasMessageSeq ?
msgList = (await NTQQMsgApi.getLastestMsgByUids(peer, MsgCount)).msgList; (await NTQQMsgApi.getMsgHistory(peer, startMsgId, MsgCount)).msgList : (await NTQQMsgApi.getAioFirstViewLatestMsgs(peer, MsgCount)).msgList;
} else { if (msgList.length === 0) throw `消息${payload.message_seq}不存在`;
const startMsgId = MessageUnique.getMsgIdAndPeerByShortId(payload.message_seq)?.MsgId; //翻转消息
if (!startMsgId) throw `消息${payload.message_seq}不存在`;
msgList = (await NTQQMsgApi.getMsgHistory(peer, startMsgId, MsgCount)).msgList;
}
if (isReverseOrder) msgList.reverse(); if (isReverseOrder) msgList.reverse();
//转换序号
await Promise.all(msgList.map(async msg => { await Promise.all(msgList.map(async msg => {
msg.id = MessageUnique.createMsg({ guildId: '', chatType: msg.chatType, peerUid: msg.peerUid }, msg.msgId); msg.id = MessageUnique.createMsg({ guildId: '', chatType: msg.chatType, peerUid: msg.peerUid }, msg.msgId);
})); }));
//转换消息 //烘焙消息
const ob11MsgList = (await Promise.all( const ob11MsgList = (await Promise.all(
msgList.map(msg => this.obContext.apis.MsgApi.parseMessage(msg))) msgList.map(msg => this.obContext.apis.MsgApi.parseMessage(msg)))
).filter(msg => msg !== undefined); ).filter(msg => msg !== undefined);

View File

@ -3,7 +3,7 @@ import { OB11Message } from '@/onebot';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { ChatType, Peer, RawMessage } from '@/core/entities'; import { ChatType, Peer, RawMessage } from '@/core/entities';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
interface Response { interface Response {
messages: OB11Message[]; messages: OB11Message[];
@ -13,7 +13,7 @@ const SchemaData = {
type: 'object', type: 'object',
properties: { properties: {
group_id: { type: ['number', 'string'] }, group_id: { type: ['number', 'string'] },
message_seq: { type: 'number' }, message_seq: { type: ['number', 'string'] },
count: { type: ['number', 'string'] }, count: { type: ['number', 'string'] },
reverseOrder: { type: ['boolean', 'string'] }, reverseOrder: { type: ['boolean', 'string'] },
}, },
@ -32,21 +32,19 @@ export default class GoCQHTTPGetGroupMsgHistory extends BaseAction<Payload, Resp
const isReverseOrder = typeof payload.reverseOrder === 'string' ? payload.reverseOrder === 'true' : !!payload.reverseOrder; const isReverseOrder = typeof payload.reverseOrder === 'string' ? payload.reverseOrder === 'true' : !!payload.reverseOrder;
const MsgCount = +(payload.count ?? 20); const MsgCount = +(payload.count ?? 20);
const peer: Peer = { chatType: ChatType.KCHATTYPEGROUP, peerUid: payload.group_id.toString() }; const peer: Peer = { chatType: ChatType.KCHATTYPEGROUP, peerUid: payload.group_id.toString() };
const hasMessageSeq = !payload.message_seq ? !!payload.message_seq : !(payload.message_seq?.toString() === '' || payload.message_seq?.toString() === '0');
//拉取消息 //拉取消息
let msgList: RawMessage[]; const startMsgId = hasMessageSeq ? (MessageUnique.getMsgIdAndPeerByShortId(+payload.message_seq!)?.MsgId ?? payload.message_seq!.toString()) : '0';
if (!payload.message_seq || payload.message_seq == 0) { let msgList = hasMessageSeq ?
msgList = (await NTQQMsgApi.getLastestMsgByUids(peer, MsgCount)).msgList; (await NTQQMsgApi.getMsgHistory(peer, startMsgId, MsgCount)).msgList : (await NTQQMsgApi.getAioFirstViewLatestMsgs(peer, MsgCount)).msgList;
} else { if (msgList.length === 0) throw `消息${payload.message_seq}不存在`;
const startMsgId = MessageUnique.getMsgIdAndPeerByShortId(payload.message_seq)?.MsgId; //翻转消息
if (!startMsgId) throw `消息${payload.message_seq}不存在`;
msgList = (await NTQQMsgApi.getMsgHistory(peer, startMsgId, MsgCount)).msgList;
}
if (isReverseOrder) msgList.reverse(); if (isReverseOrder) msgList.reverse();
//转换序号
await Promise.all(msgList.map(async msg => { await Promise.all(msgList.map(async msg => {
msg.id = MessageUnique.createMsg({ guildId: '', chatType: msg.chatType, peerUid: msg.peerUid }, msg.msgId); msg.id = MessageUnique.createMsg({ guildId: '', chatType: msg.chatType, peerUid: msg.peerUid }, msg.msgId);
})); }));
//烘焙消息
//转换消息
const ob11MsgList = (await Promise.all( const ob11MsgList = (await Promise.all(
msgList.map(msg => this.obContext.apis.MsgApi.parseMessage(msg))) msgList.map(msg => this.obContext.apis.MsgApi.parseMessage(msg)))
).filter(msg => msg !== undefined); ).filter(msg => msg !== undefined);

View File

@ -1,7 +1,7 @@
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { JSONSchema } from 'json-schema-to-ts'; import { JSONSchema } from 'json-schema-to-ts';
import { sleep } from '@/common/utils/helper'; import { sleep } from '@/common/helper';
const SchemaData = { const SchemaData = {
type: 'object', type: 'object',

View File

@ -3,7 +3,7 @@ import { OB11User, OB11UserSex } from '@/onebot';
import { OB11Entities } from '@/onebot/helper/entities'; import { OB11Entities } from '@/onebot/helper/entities';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { calcQQLevel } from '@/common/utils/helper'; import { calcQQLevel } from '@/common/helper';
const SchemaData = { const SchemaData = {
type: 'object', type: 'object',

View File

@ -1,4 +1,4 @@
import { checkFileReceived, uri2local } from '@/common/utils/file'; import { checkFileReceived, uri2local } from '@/common/file';
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { unlink } from 'node:fs'; import { unlink } from 'node:fs';

View File

@ -1,7 +1,7 @@
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName, BaseCheckResult } from '../types'; import { ActionName, BaseCheckResult } from '../types';
import * as fs from 'node:fs'; import * as fs from 'node:fs';
import { checkFileReceived, uri2local } from '@/common/utils/file'; import { checkFileReceived, uri2local } from '@/common/file';
interface Payload { interface Payload {
file: string, file: string,

View File

@ -2,7 +2,7 @@ import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { ChatType } from '@/core/entities'; import { ChatType } from '@/core/entities';
import fs from 'fs'; import fs from 'fs';
import { uri2local } from '@/common/utils/file'; import { uri2local } from '@/common/file';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
const SchemaData = { const SchemaData = {

View File

@ -2,7 +2,7 @@ import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { ChatType, Peer, SendFileElement } from '@/core/entities'; import { ChatType, Peer, SendFileElement } from '@/core/entities';
import fs from 'fs'; import fs from 'fs';
import { uri2local } from '@/common/utils/file'; import { uri2local } from '@/common/file';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
const SchemaData = { const SchemaData = {

View File

@ -1,7 +1,7 @@
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
const SchemaData = { const SchemaData = {
type: 'object', type: 'object',

View File

@ -1,7 +1,7 @@
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
const SchemaData = { const SchemaData = {
type: 'object', type: 'object',

View File

@ -1,7 +1,7 @@
import { ActionName } from '../types'; import { ActionName } from '../types';
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
import { NodeIKernelMsgListener } from '@/core'; import { NodeIKernelMsgListener } from '@/core';
const SchemaData = { const SchemaData = {

View File

@ -2,7 +2,7 @@ import BaseAction from '../BaseAction';
import { ChatType, Peer } from '@/core/entities'; import { ChatType, Peer } from '@/core/entities';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
const SchemaData = { const SchemaData = {
type: 'object', type: 'object',

View File

@ -2,7 +2,7 @@ import { OB11Message } from '@/onebot';
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
export type ReturnDataType = OB11Message export type ReturnDataType = OB11Message

View File

@ -7,7 +7,7 @@ import {
} from '@/onebot/types'; } from '@/onebot/types';
import { ActionName, BaseCheckResult } from '@/onebot/action/types'; import { ActionName, BaseCheckResult } from '@/onebot/action/types';
import { decodeCQCode } from '@/onebot/helper/cqcode'; import { decodeCQCode } from '@/onebot/helper/cqcode';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
import { ChatType, ElementType, NapCatCore, Peer, RawMessage, SendMessageElement } from '@/core'; import { ChatType, ElementType, NapCatCore, Peer, RawMessage, SendMessageElement } from '@/core';
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';

View File

@ -1,7 +1,7 @@
import { ActionName } from '../types'; import { ActionName } from '../types';
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
const SchemaData = { const SchemaData = {
type: 'object', type: 'object',

View File

@ -1,6 +1,7 @@
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { napcat_version } from '@/common/framework/napcat';
import { napCatVersion } from '@/common/version';
export default class GetVersionInfo extends BaseAction<any, any> { export default class GetVersionInfo extends BaseAction<any, any> {
actionName = ActionName.GetVersionInfo; actionName = ActionName.GetVersionInfo;
@ -9,7 +10,7 @@ export default class GetVersionInfo extends BaseAction<any, any> {
return { return {
app_name: 'NapCat.Onebot', app_name: 'NapCat.Onebot',
protocol_version: 'v11', protocol_version: 'v11',
app_version: napcat_version, app_version: napCatVersion,
}; };
} }
} }

View File

@ -5,7 +5,7 @@ import { OB11GroupIncreaseEvent } from '../event/notice/OB11GroupIncreaseEvent';
import { OB11GroupDecreaseEvent } from '../event/notice/OB11GroupDecreaseEvent'; import { OB11GroupDecreaseEvent } from '../event/notice/OB11GroupDecreaseEvent';
import fastXmlParser from 'fast-xml-parser'; import fastXmlParser from 'fast-xml-parser';
import { OB11GroupMsgEmojiLikeEvent } from '../event/notice/OB11MsgEmojiLikeEvent'; import { OB11GroupMsgEmojiLikeEvent } from '../event/notice/OB11MsgEmojiLikeEvent';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
export class OneBotGroupApi { export class OneBotGroupApi {
obContext: NapCatOneBot11Adapter; obContext: NapCatOneBot11Adapter;

View File

@ -1,5 +1,5 @@
import { UUIDConverter } from '@/common/utils/helper'; import { UUIDConverter } from '@/common/helper';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
import { import {
AtType, AtType,
ChatType, ChatType,
@ -27,8 +27,8 @@ import {
import { OB11Entities } from '../helper'; import { OB11Entities } from '../helper';
import { EventType } from '@/onebot/event/OB11BaseEvent'; import { EventType } from '@/onebot/event/OB11BaseEvent';
import { encodeCQCode } from '@/onebot/helper/cqcode'; import { encodeCQCode } from '@/onebot/helper/cqcode';
import { uri2local } from '@/common/utils/file'; import { uri2local } from '@/common/file';
import { RequestUtil } from '@/common/utils/request'; import { RequestUtil } from '@/common/request';
import fs from 'node:fs'; import fs from 'node:fs';
import fsPromise from 'node:fs/promises'; import fsPromise from 'node:fs/promises';

View File

@ -14,7 +14,7 @@ import { ChatType, GroupRequestOperateTypes, NapCatCore, Peer } from '@/core';
import { OB11FriendRequestEvent } from '@/onebot/event/request/OB11FriendRequest'; import { OB11FriendRequestEvent } from '@/onebot/event/request/OB11FriendRequest';
import { OB11GroupRequestEvent } from '@/onebot/event/request/OB11GroupRequest'; import { OB11GroupRequestEvent } from '@/onebot/event/request/OB11GroupRequest';
import { normalize } from '@/onebot/action/msg/SendMsg'; import { normalize } from '@/onebot/action/msg/SendMsg';
import { isNull } from '@/common/utils/helper'; import { isNull } from '@/common/helper';
export class OneBotQuickActionApi { export class OneBotQuickActionApi {
constructor( constructor(

View File

@ -1,4 +1,4 @@
import { ConfigBase } from '@/common/utils/config-base'; import { ConfigBase } from '@/common/config-base';
import ob11DefaultConfig from '@/onebot/external/onebot11.json'; import ob11DefaultConfig from '@/onebot/external/onebot11.json';
import { NapCatCore } from '@/core'; import { NapCatCore } from '@/core';

View File

@ -1,4 +1,4 @@
import { calcQQLevel } from '@/common/utils/helper'; import { calcQQLevel } from '@/common/helper';
import { Friend, FriendV2, Group, GroupMember, SelfInfo, Sex, User } from '@/core'; import { Friend, FriendV2, Group, GroupMember, SelfInfo, Sex, User } from '@/core';
import { OB11Group, OB11GroupMember, OB11GroupMemberRole, OB11User, OB11UserSex } from '../types'; import { OB11Group, OB11GroupMember, OB11GroupMemberRole, OB11User, OB11UserSex } from '../types';

View File

@ -7,7 +7,7 @@ import { OB11GroupDecreaseEvent } from '../event/notice/OB11GroupDecreaseEvent';
import { OB11GroupUploadNoticeEvent } from '../event/notice/OB11GroupUploadNoticeEvent'; import { OB11GroupUploadNoticeEvent } from '../event/notice/OB11GroupUploadNoticeEvent';
import { OB11GroupPokeEvent } from '../event/notice/OB11PokeEvent'; import { OB11GroupPokeEvent } from '../event/notice/OB11PokeEvent';
import { OB11GroupEssenceEvent } from '../event/notice/OB11GroupEssenceEvent'; import { OB11GroupEssenceEvent } from '../event/notice/OB11GroupEssenceEvent';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
import { OB11GroupTitleEvent } from '../event/notice/OB11GroupTitleEvent'; import { OB11GroupTitleEvent } from '../event/notice/OB11GroupTitleEvent';
import { NapCatCore, RawMessage, ChatType, NTGrayTipElementSubTypeV2, TipGroupElementType, Peer } from '@/core'; import { NapCatCore, RawMessage, ChatType, NTGrayTipElementSubTypeV2, TipGroupElementType, Peer } from '@/core';

View File

@ -21,7 +21,7 @@ import {
OB11PassiveHttpAdapter, OB11PassiveHttpAdapter,
OB11PassiveWebSocketAdapter, OB11PassiveWebSocketAdapter,
} from '@/onebot/network'; } from '@/onebot/network';
import { NapCatPathWrapper } from '@/common/framework/napcat'; import { NapCatPathWrapper } from '@/common/path';
import { import {
OneBotFriendApi, OneBotFriendApi,
OneBotGroupApi, OneBotGroupApi,
@ -33,15 +33,15 @@ import {
import { ActionMap, createActionMap } from '@/onebot/action'; import { ActionMap, createActionMap } from '@/onebot/action';
import { WebUiDataRuntime } from '@/webui/src/helper/Data'; import { WebUiDataRuntime } from '@/webui/src/helper/Data';
import { OB11InputStatusEvent } from '@/onebot/event/notice/OB11InputStatusEvent'; import { OB11InputStatusEvent } from '@/onebot/event/notice/OB11InputStatusEvent';
import { MessageUnique } from '@/common/utils/message-unique'; import { MessageUnique } from '@/common/message-unique';
import { proxiedListenerOf } from '@/common/utils/proxy-handler'; import { proxiedListenerOf } from '@/common/proxy-handler';
import { OB11FriendRequestEvent } from '@/onebot/event/request/OB11FriendRequest'; import { OB11FriendRequestEvent } from '@/onebot/event/request/OB11FriendRequest';
import { OB11GroupAdminNoticeEvent } from '@/onebot/event/notice/OB11GroupAdminNoticeEvent'; import { OB11GroupAdminNoticeEvent } from '@/onebot/event/notice/OB11GroupAdminNoticeEvent';
import { GroupDecreaseSubType, OB11GroupDecreaseEvent } from '@/onebot/event/notice/OB11GroupDecreaseEvent'; import { GroupDecreaseSubType, OB11GroupDecreaseEvent } from '@/onebot/event/notice/OB11GroupDecreaseEvent';
import { OB11GroupRequestEvent } from '@/onebot/event/request/OB11GroupRequest'; import { OB11GroupRequestEvent } from '@/onebot/event/request/OB11GroupRequest';
import { OB11FriendRecallNoticeEvent } from '@/onebot/event/notice/OB11FriendRecallNoticeEvent'; import { OB11FriendRecallNoticeEvent } from '@/onebot/event/notice/OB11FriendRecallNoticeEvent';
import { OB11GroupRecallNoticeEvent } from '@/onebot/event/notice/OB11GroupRecallNoticeEvent'; import { OB11GroupRecallNoticeEvent } from '@/onebot/event/notice/OB11GroupRecallNoticeEvent';
import { LRUCache } from '@/common/utils/lru-cache'; import { LRUCache } from '@/common/lru-cache';
import { NT2GroupEvent, NT2PrivateEvent } from './helper'; import { NT2GroupEvent, NT2PrivateEvent } from './helper';
import { NodeIKernelRecentContactListener } from '@/core/listeners/NodeIKernelRecentContactListener'; import { NodeIKernelRecentContactListener } from '@/core/listeners/NodeIKernelRecentContactListener';

View File

@ -1,6 +1,6 @@
import { IOB11NetworkAdapter, OB11EmitEventContent } from '@/onebot/network/index'; import { IOB11NetworkAdapter, OB11EmitEventContent } from '@/onebot/network/index';
import { createHmac } from 'crypto'; import { createHmac } from 'crypto';
import { LogWrapper } from '@/common/utils/log'; import { LogWrapper } from '@/common/log';
import { QuickAction, QuickActionEvent } from '../types'; import { QuickAction, QuickActionEvent } from '../types';
import { NapCatCore } from '@/core'; import { NapCatCore } from '@/core';
import { NapCatOneBot11Adapter } from '..'; import { NapCatOneBot11Adapter } from '..';

View File

@ -4,7 +4,7 @@ import { OB11HeartbeatEvent } from '../event/meta/OB11HeartbeatEvent';
import { NapCatCore } from '@/core'; import { NapCatCore } from '@/core';
import { ActionName } from '@/onebot/action/types'; import { ActionName } from '@/onebot/action/types';
import { OB11Response } from '@/onebot/action/OB11Response'; import { OB11Response } from '@/onebot/action/OB11Response';
import { LogWrapper } from '@/common/utils/log'; import { LogWrapper } from '@/common/log';
import { ActionMap } from '@/onebot/action'; import { ActionMap } from '@/onebot/action';
import { LifeCycleSubType, OB11LifeCycleEvent } from '../event/meta/OB11LifeCycleEvent'; import { LifeCycleSubType, OB11LifeCycleEvent } from '../event/meta/OB11LifeCycleEvent';

View File

@ -5,7 +5,7 @@ import { Mutex } from 'async-mutex';
import { OB11Response } from '../action/OB11Response'; import { OB11Response } from '../action/OB11Response';
import { ActionName } from '../action/types'; import { ActionName } from '../action/types';
import { NapCatCore } from '@/core'; import { NapCatCore } from '@/core';
import { LogWrapper } from '@/common/utils/log'; import { LogWrapper } from '@/common/log';
import { OB11HeartbeatEvent } from '../event/meta/OB11HeartbeatEvent'; import { OB11HeartbeatEvent } from '../event/meta/OB11HeartbeatEvent';
import { IncomingMessage } from 'http'; import { IncomingMessage } from 'http';
import { ActionMap } from '@/onebot/action'; import { ActionMap } from '@/onebot/action';

View File

@ -1,9 +1,9 @@
import type { SelfInfo } from '@/core/entities'; import type { SelfInfo } from '@/core/entities';
import { LogWrapper } from '@/common/utils/log'; import { LogWrapper } from '@/common/log';
import { NodeIKernelLoginListener, NodeIKernelSessionListener } from '@/core/listeners'; import { NodeIKernelLoginListener, NodeIKernelSessionListener } from '@/core/listeners';
import { NodeIDependsAdapter, NodeIDispatcherAdapter, NodeIGlobalAdapter } from '@/core/adapters'; import { NodeIDependsAdapter, NodeIDispatcherAdapter, NodeIGlobalAdapter } from '@/core/adapters';
import { napcat_version, NapCatPathWrapper } from '@/common/framework/napcat'; import { NapCatPathWrapper } from '@/common/path';
import { import {
InstanceContext, InstanceContext,
loadQQWrapper, loadQQWrapper,
@ -12,10 +12,10 @@ import {
NodeIQQNTWrapperSession, NodeIQQNTWrapperSession,
WrapperNodeApi, WrapperNodeApi,
} from '@/core'; } from '@/core';
import { QQBasicInfoWrapper } from '@/common/utils/qq-basic-info'; import { QQBasicInfoWrapper } from '@/common/qq-basic-info';
import { hostname, systemVersion } from '@/common/utils/system'; import { hostname, systemVersion } from '@/common/system';
import { genSessionConfig } from '@/core/wrapper/helper'; import { genSessionConfig } from '@/core/wrapper/helper';
import { proxiedListenerOf } from '@/common/utils/proxy-handler'; import { proxiedListenerOf } from '@/common/proxy-handler';
import path from 'path'; import path from 'path';
import fs from 'fs'; import fs from 'fs';
@ -26,6 +26,7 @@ import qrcode from 'qrcode-terminal';
import { NapCatOneBot11Adapter } from '@/onebot'; import { NapCatOneBot11Adapter } from '@/onebot';
import { InitWebUi } from '@/webui'; import { InitWebUi } from '@/webui';
import { WebUiDataRuntime } from '@/webui/src/helper/Data'; import { WebUiDataRuntime } from '@/webui/src/helper/Data';
import { napCatVersion } from '@/common/version';
program.option('-q, --qq [number]', 'QQ号').parse(process.argv); program.option('-q, --qq [number]', 'QQ号').parse(process.argv);
const cmdOptions = program.opts(); const cmdOptions = program.opts();
@ -38,7 +39,7 @@ export async function NCoreInitShell() {
const logger = new LogWrapper(pathWrapper.logsPath); const logger = new LogWrapper(pathWrapper.logsPath);
const basicInfoWrapper = new QQBasicInfoWrapper({ logger }); const basicInfoWrapper = new QQBasicInfoWrapper({ logger });
const wrapper = loadQQWrapper(basicInfoWrapper.getFullQQVesion()); const wrapper = loadQQWrapper(basicInfoWrapper.getFullQQVesion());
logger.log(`[NapCat] [Core] NapCat.Core Version: ` + napcat_version); logger.log(`[NapCat] [Core] NapCat.Core Version: ` + napCatVersion);
InitWebUi(logger, pathWrapper).then().catch(logger.logError); InitWebUi(logger, pathWrapper).then().catch(logger.logError);
// from constructor // from constructor

View File

@ -1,7 +1,7 @@
import express from 'express'; import express from 'express';
import { ALLRouter } from './src/router'; import { ALLRouter } from './src/router';
import { LogWrapper } from '@/common/utils/log'; import { LogWrapper } from '@/common/log';
import { NapCatPathWrapper } from '@/common/framework/napcat'; import { NapCatPathWrapper } from '@/common/path';
import { WebUiConfigWrapper } from './src/helper/config'; import { WebUiConfigWrapper } from './src/helper/config';
const app = express(); const app = express();

View File

@ -30,7 +30,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('V2.2.15', 'napcat-update-button', 'secondary'), SettingButton('V2.2.16', 'napcat-update-button', 'secondary'),
), ),
]), ]),
SettingList([ SettingList([

View File

@ -164,7 +164,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("V2.2.15", "napcat-update-button", "secondary") SettingButton("V2.2.16", "napcat-update-button", "secondary")
) )
]), ]),
SettingList([ SettingList([