mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-03-01 00:00:26 +00:00
Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
896e1c209a | ||
|
|
cff07c7ce5 | ||
|
|
5c04b799a6 | ||
|
|
1fc4655ae1 | ||
|
|
eb07cdb715 | ||
|
|
964fd98914 | ||
|
|
f9764c9559 | ||
|
|
b71a4913eb | ||
|
|
f961830836 | ||
|
|
dd8b5f84a6 | ||
|
|
48ffd5597a | ||
|
|
1b73d68cbf | ||
|
|
5fec649425 | ||
|
|
052e7fa2b3 | ||
|
|
04e425d17a | ||
|
|
cbe0506577 | ||
|
|
32ec097f51 | ||
|
|
53f27ea9e2 | ||
|
|
41d94cd5e2 | ||
|
|
285d352bc8 | ||
|
|
a3b3836b8a | ||
|
|
b9f61cc0ee | ||
|
|
9998207346 | ||
|
|
4f47af233f | ||
|
|
6aadc2402d | ||
|
|
eb937b29e4 | ||
|
|
f44aca9a2f | ||
|
|
c34812bc9c | ||
|
|
d93b430034 | ||
|
|
c91e1378cf | ||
|
|
cad567dc3f | ||
|
|
82c8de00d0 | ||
|
|
f17abccfdc | ||
|
|
35af50bb73 | ||
|
|
5c72f771c3 | ||
|
|
62c9246368 | ||
|
|
d622178b25 | ||
|
|
9887eb8565 | ||
|
|
2f8569f30c | ||
|
|
82d0c51716 | ||
|
|
37fb2d68d7 |
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@@ -10,7 +10,7 @@ permissions: write-all
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
OPENROUTER_API_URL: https://91vip.futureppo.top/v1/chat/completions
|
OPENROUTER_API_URL: https://91vip.futureppo.top/v1/chat/completions
|
||||||
OPENROUTER_MODEL: "gemini-3-flash-preview"
|
OPENROUTER_MODEL: "deepseek-v3.2-chat"
|
||||||
RELEASE_NAME: "NapCat"
|
RELEASE_NAME: "NapCat"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -396,7 +396,7 @@ jobs:
|
|||||||
--arg system "$SYSTEM_PROMPT" \
|
--arg system "$SYSTEM_PROMPT" \
|
||||||
--arg user "$USER_CONTENT" \
|
--arg user "$USER_CONTENT" \
|
||||||
--arg model "$OPENROUTER_MODEL" \
|
--arg model "$OPENROUTER_MODEL" \
|
||||||
'{model: $model, messages:[{role:"system", content:$system},{role:"user", content:$user}], temperature:0.2, max_tokens:1500}')
|
'{model: $model, messages:[{role:"system", content:$system},{role:"user", content:$user}], temperature:0.2, max_tokens:5000}')
|
||||||
|
|
||||||
echo "=== OpenRouter request body ==="
|
echo "=== OpenRouter request body ==="
|
||||||
echo "$BODY" | jq .
|
echo "$BODY" | jq .
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -10,6 +10,9 @@ devconfig/*
|
|||||||
!.vscode/extensions.json
|
!.vscode/extensions.json
|
||||||
.idea/*
|
.idea/*
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
# Build
|
# Build
|
||||||
*.db
|
*.db
|
||||||
checkVersion.sh
|
checkVersion.sh
|
||||||
|
|||||||
17
README.md
17
README.md
@@ -11,15 +11,8 @@ _Modern protocol-side framework implemented based on NTQQ._
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## New Feature
|
## Notice
|
||||||
|
NapCat 当前正在寻找新的主要维护者,欢迎email到 nanaeonn@outlook.com ,在此期不会建立任何公开社区交流群,Napcat会保证此期间的正常更新。
|
||||||
在 v4.8.115+ 版本开始
|
|
||||||
|
|
||||||
1. NapCatQQ 支持 [Stream Api](https://napneko.github.io/develop/file)
|
|
||||||
2. NapCatQQ 推荐 message_id/user_id/group_id 均使用字符串类型
|
|
||||||
|
|
||||||
- [1] 解决 Docker/跨设备/大文件 的多媒体上下传问题
|
|
||||||
- [2] 采用字符串可以解决扩展到int64的问题,同时也可以解决部分语言(如JavaScript)对大整数支持不佳的问题,增加极少成本。
|
|
||||||
|
|
||||||
## Welcome
|
## Welcome
|
||||||
|
|
||||||
@@ -53,12 +46,6 @@ _Modern protocol-side framework implemented based on NTQQ._
|
|||||||
| Docs | [](https://napneko.pages.dev/) | [](https://napcat.top/) | [](https://napcat.top/) |
|
| Docs | [](https://napneko.pages.dev/) | [](https://napcat.top/) | [](https://napcat.top/) |
|
||||||
|:-:|:-:|:-:|:-:|
|
|:-:|:-:|:-:|:-:|
|
||||||
|
|
||||||
| QQ Group | [](https://qm.qq.com/q/CMmPbGw0jA) | [](https://qm.qq.com/q/8zJMLjqy2Y) | [](https://qm.qq.com/q/CMmPbGw0jA) | [](https://qm.qq.com/q/I6LU87a0Yq) |
|
|
||||||
|:-:|:-:|:-:|:-:|:-:|
|
|
||||||
|
|
||||||
| Telegram | [](https://t.me/napcatqq) |
|
|
||||||
|:-:|:-:|
|
|
||||||
|
|
||||||
| DeepWiki | [](https://deepwiki.com/NapNeko/NapCatQQ) |
|
| DeepWiki | [](https://deepwiki.com/NapNeko/NapCatQQ) |
|
||||||
|:-:|:-:|
|
|:-:|:-:|
|
||||||
|
|
||||||
|
|||||||
@@ -184,6 +184,35 @@ export function stringifyWithBigInt (obj: any) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function parseAppidFromMajorV2 (nodeMajor: string): string | undefined {
|
||||||
|
const marker = Buffer.from('QQAppId/', 'utf-8');
|
||||||
|
const filePath = path.resolve(nodeMajor);
|
||||||
|
const fileContent = fs.readFileSync(filePath);
|
||||||
|
|
||||||
|
let searchPosition = 0;
|
||||||
|
while (true) {
|
||||||
|
const index = fileContent.indexOf(marker, searchPosition);
|
||||||
|
if (index === -1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const start = index + marker.length;
|
||||||
|
const end = fileContent.indexOf(0x00, start);
|
||||||
|
if (end === -1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const content = fileContent.subarray(start, end);
|
||||||
|
const str = content.toString('utf-8');
|
||||||
|
if (/^\d+$/.test(str)) {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
searchPosition = end + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
export function parseAppidFromMajor (nodeMajor: string): string | undefined {
|
export function parseAppidFromMajor (nodeMajor: string): string | undefined {
|
||||||
const hexSequence = 'A4 09 00 00 00 35';
|
const hexSequence = 'A4 09 00 00 00 35';
|
||||||
const sequenceBytes = Buffer.from(hexSequence.replace(/ /g, ''), 'hex');
|
const sequenceBytes = Buffer.from(hexSequence.replace(/ /g, ''), 'hex');
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ export class NTQQPacketApi {
|
|||||||
this.pkt = new PacketClientSession(this.core);
|
this.pkt = new PacketClientSession(this.core);
|
||||||
await this.pkt.init(process.pid, table.recv, table.send);
|
await this.pkt.init(process.pid, table.recv, table.send);
|
||||||
try {
|
try {
|
||||||
await this.pkt.operation.FetchRkey(1500);
|
await this.pkt.operation.FetchRkey(3000);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.logger.logError('测试Packet状态异常', error);
|
this.logger.logError('测试Packet状态异常', error);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
24
packages/napcat-core/external/napcat.json
vendored
24
packages/napcat-core/external/napcat.json
vendored
@@ -1,9 +1,17 @@
|
|||||||
{
|
{
|
||||||
"fileLog": false,
|
"fileLog": false,
|
||||||
"consoleLog": true,
|
"consoleLog": true,
|
||||||
"fileLogLevel": "debug",
|
"fileLogLevel": "debug",
|
||||||
"consoleLogLevel": "info",
|
"consoleLogLevel": "info",
|
||||||
"packetBackend": "auto",
|
"packetBackend": "auto",
|
||||||
"packetServer": "",
|
"packetServer": "",
|
||||||
"o3HookMode": 1
|
"o3HookMode": 1,
|
||||||
}
|
"bypass": {
|
||||||
|
"hook": false,
|
||||||
|
"window": false,
|
||||||
|
"module": false,
|
||||||
|
"process": false,
|
||||||
|
"container": false,
|
||||||
|
"js": false
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,19 @@
|
|||||||
import { ConfigBase } from '@/napcat-core/helper/config-base';
|
import { ConfigBase } from '@/napcat-core/helper/config-base';
|
||||||
import { NapCatCore } from '@/napcat-core/index';
|
import { NapCatCore } from '@/napcat-core/index';
|
||||||
import { Type, Static } from '@sinclair/typebox';
|
import { Type, Static } from '@sinclair/typebox';
|
||||||
import { AnySchema } from 'ajv';
|
import Ajv, { AnySchema } from 'ajv';
|
||||||
|
import path from 'node:path';
|
||||||
|
import fs from 'node:fs';
|
||||||
|
import json5 from 'json5';
|
||||||
|
|
||||||
|
export const BypassOptionsSchema = Type.Object({
|
||||||
|
hook: Type.Boolean({ default: true }),
|
||||||
|
window: Type.Boolean({ default: true }),
|
||||||
|
module: Type.Boolean({ default: true }),
|
||||||
|
process: Type.Boolean({ default: true }),
|
||||||
|
container: Type.Boolean({ default: true }),
|
||||||
|
js: Type.Boolean({ default: true }),
|
||||||
|
});
|
||||||
|
|
||||||
export const NapcatConfigSchema = Type.Object({
|
export const NapcatConfigSchema = Type.Object({
|
||||||
fileLog: Type.Boolean({ default: false }),
|
fileLog: Type.Boolean({ default: false }),
|
||||||
@@ -11,10 +23,31 @@ export const NapcatConfigSchema = Type.Object({
|
|||||||
packetBackend: Type.String({ default: 'auto' }),
|
packetBackend: Type.String({ default: 'auto' }),
|
||||||
packetServer: Type.String({ default: '' }),
|
packetServer: Type.String({ default: '' }),
|
||||||
o3HookMode: Type.Number({ default: 0 }),
|
o3HookMode: Type.Number({ default: 0 }),
|
||||||
|
bypass: Type.Optional(BypassOptionsSchema),
|
||||||
});
|
});
|
||||||
|
|
||||||
export type NapcatConfig = Static<typeof NapcatConfigSchema>;
|
export type NapcatConfig = Static<typeof NapcatConfigSchema>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从指定配置目录读取 napcat.json,按 NapcatConfigSchema 校验并填充默认值
|
||||||
|
* 用于登录前(无 NapCatCore 实例时)的早期配置读取
|
||||||
|
*/
|
||||||
|
export function loadNapcatConfig (configPath: string): NapcatConfig {
|
||||||
|
const ajv = new Ajv({ useDefaults: true, coerceTypes: true });
|
||||||
|
const validate = ajv.compile<NapcatConfig>(NapcatConfigSchema);
|
||||||
|
let data: Record<string, unknown> = {};
|
||||||
|
try {
|
||||||
|
const configFile = path.join(configPath, 'napcat.json');
|
||||||
|
if (fs.existsSync(configFile)) {
|
||||||
|
data = json5.parse(fs.readFileSync(configFile, 'utf-8'));
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// 读取失败时使用 schema 默认值
|
||||||
|
}
|
||||||
|
validate(data);
|
||||||
|
return data as NapcatConfig;
|
||||||
|
}
|
||||||
|
|
||||||
export class NapCatConfigLoader extends ConfigBase<NapcatConfig> {
|
export class NapCatConfigLoader extends ConfigBase<NapcatConfig> {
|
||||||
constructor (core: NapCatCore, configPath: string, schema: AnySchema) {
|
constructor (core: NapCatCore, configPath: string, schema: AnySchema) {
|
||||||
super('napcat', core, configPath, schema);
|
super('napcat', core, configPath, schema);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import fs from 'node:fs';
|
import fs from 'node:fs';
|
||||||
import { systemPlatform } from 'napcat-common/src/system';
|
import { systemPlatform } from 'napcat-common/src/system';
|
||||||
import { getDefaultQQVersionConfigInfo, getQQPackageInfoPath, getQQVersionConfigPath, parseAppidFromMajor } from 'napcat-common/src/helper';
|
import { getDefaultQQVersionConfigInfo, getQQPackageInfoPath, getQQVersionConfigPath, parseAppidFromMajor, parseAppidFromMajorV2 } from 'napcat-common/src/helper';
|
||||||
import AppidTable from '@/napcat-core/external/appid.json';
|
import AppidTable from '@/napcat-core/external/appid.json';
|
||||||
import { LogWrapper } from './log';
|
import { LogWrapper } from './log';
|
||||||
import { getMajorPath } from '@/napcat-core/index';
|
import { getMajorPath } from '@/napcat-core/index';
|
||||||
@@ -107,7 +107,13 @@ export class QQBasicInfoWrapper {
|
|||||||
if (!this.QQMainPath) {
|
if (!this.QQMainPath) {
|
||||||
throw new Error('QQMainPath未定义 无法通过Major获取Appid');
|
throw new Error('QQMainPath未定义 无法通过Major获取Appid');
|
||||||
}
|
}
|
||||||
const majorPath = getMajorPath(QQVersion, this.QQMainPath);
|
const majorPath = getMajorPath(this.QQMainPath, QQVersion);
|
||||||
|
// 优先通过 QQAppId/ 标记搜索
|
||||||
|
const appidV2 = parseAppidFromMajorV2(majorPath);
|
||||||
|
if (appidV2) {
|
||||||
|
return appidV2;
|
||||||
|
}
|
||||||
|
// 回落到旧方式
|
||||||
const appid = parseAppidFromMajor(majorPath);
|
const appid = parseAppidFromMajor(majorPath);
|
||||||
return appid;
|
return appid;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import { NodeIKernelMsgListener, NodeIKernelProfileListener } from '@/napcat-cor
|
|||||||
import { proxiedListenerOf } from '@/napcat-core/helper/proxy-handler';
|
import { proxiedListenerOf } from '@/napcat-core/helper/proxy-handler';
|
||||||
import { NTQQPacketApi } from './apis/packet';
|
import { NTQQPacketApi } from './apis/packet';
|
||||||
import { NativePacketHandler } from './packet/handler/client';
|
import { NativePacketHandler } from './packet/handler/client';
|
||||||
|
import { Napi2NativeLoader } from './packet/handler/napi2nativeLoader';
|
||||||
import { container, ReceiverServiceRegistry } from './packet/handler/serviceRegister';
|
import { container, ReceiverServiceRegistry } from './packet/handler/serviceRegister';
|
||||||
import { appEvent } from './packet/handler/eventList';
|
import { appEvent } from './packet/handler/eventList';
|
||||||
import { TypedEventEmitter } from './packet/handler/typeEvent';
|
import { TypedEventEmitter } from './packet/handler/typeEvent';
|
||||||
@@ -314,6 +315,7 @@ export interface InstanceContext {
|
|||||||
readonly basicInfoWrapper: QQBasicInfoWrapper;
|
readonly basicInfoWrapper: QQBasicInfoWrapper;
|
||||||
readonly pathWrapper: NapCatPathWrapper;
|
readonly pathWrapper: NapCatPathWrapper;
|
||||||
readonly packetHandler: NativePacketHandler;
|
readonly packetHandler: NativePacketHandler;
|
||||||
|
readonly napi2nativeLoader: Napi2NativeLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface StableNTApiWrapper {
|
export interface StableNTApiWrapper {
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
import path, { dirname } from 'path';
|
|
||||||
import { fileURLToPath } from 'url';
|
|
||||||
import fs from 'fs';
|
|
||||||
import { constants } from 'node:os';
|
|
||||||
import { LogStack } from '@/napcat-core/packet/context/clientContext';
|
import { LogStack } from '@/napcat-core/packet/context/clientContext';
|
||||||
import { NapCoreContext } from '@/napcat-core/packet/context/napCoreContext';
|
import { NapCoreContext } from '@/napcat-core/packet/context/napCoreContext';
|
||||||
import { PacketLogger } from '@/napcat-core/packet/context/loggerContext';
|
import { PacketLogger } from '@/napcat-core/packet/context/loggerContext';
|
||||||
import { OidbPacket, PacketBuf } from '@/napcat-core/packet/transformer/base';
|
import { OidbPacket, PacketBuf } from '@/napcat-core/packet/transformer/base';
|
||||||
|
import { Napi2NativeLoader } from '@/napcat-core/packet/handler/napi2nativeLoader';
|
||||||
export interface RecvPacket {
|
export interface RecvPacket {
|
||||||
type: string, // 仅recv
|
type: string, // 仅recv
|
||||||
data: RecvPacketData;
|
data: RecvPacketData;
|
||||||
@@ -17,48 +14,36 @@ export interface RecvPacketData {
|
|||||||
data: Buffer;
|
data: Buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0 send 1 recv
|
|
||||||
export interface NativePacketExportType {
|
|
||||||
initHook?: (send: string, recv: string) => boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class NativePacketClient {
|
export class NativePacketClient {
|
||||||
protected readonly napcore: NapCoreContext;
|
protected readonly napcore: NapCoreContext;
|
||||||
protected readonly logger: PacketLogger;
|
protected readonly logger: PacketLogger;
|
||||||
protected readonly cb = new Map<string, (json: RecvPacketData) => Promise<any> | any>(); // hash-type callback
|
protected readonly cb = new Map<string, (json: RecvPacketData) => Promise<any> | any>(); // hash-type callback
|
||||||
|
protected readonly napi2nativeLoader: Napi2NativeLoader;
|
||||||
logStack: LogStack;
|
logStack: LogStack;
|
||||||
available: boolean = false;
|
available: boolean = false;
|
||||||
private readonly supportedPlatforms = ['win32.x64', 'linux.x64', 'linux.arm64', 'darwin.x64', 'darwin.arm64'];
|
|
||||||
private readonly MoeHooExport: { exports: NativePacketExportType; } = { exports: {} };
|
|
||||||
|
|
||||||
constructor (napCore: NapCoreContext, logger: PacketLogger, logStack: LogStack) {
|
constructor (napCore: NapCoreContext, logger: PacketLogger, logStack: LogStack, napi2nativeLoader: Napi2NativeLoader) {
|
||||||
this.napcore = napCore;
|
this.napcore = napCore;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.logStack = logStack;
|
this.logStack = logStack;
|
||||||
|
this.napi2nativeLoader = napi2nativeLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
check (): boolean {
|
check (): boolean {
|
||||||
const platform = process.platform + '.' + process.arch;
|
if (!this.napi2nativeLoader.loaded) {
|
||||||
if (!this.supportedPlatforms.includes(platform)) {
|
this.logStack.pushLogWarn('NativePacketClient: Napi2NativeLoader 未成功加载');
|
||||||
this.logStack.pushLogWarn(`NativePacketClient: 不支持的平台: ${platform}`);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const moehoo_path = path.join(dirname(fileURLToPath(import.meta.url)), './native/napi2native/napi2native.' + platform + '.node');
|
|
||||||
if (!fs.existsSync(moehoo_path)) {
|
|
||||||
this.logStack.pushLogWarn(`NativePacketClient: 缺失运行时文件: ${moehoo_path}`);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
async init (_pid: number, recv: string, send: string): Promise<void> {
|
async init (_pid: number, recv: string, send: string): Promise<void> {
|
||||||
const platform = process.platform + '.' + process.arch;
|
|
||||||
const isNewQQ = this.napcore.basicInfo.requireMinNTQQBuild('40824');
|
const isNewQQ = this.napcore.basicInfo.requireMinNTQQBuild('40824');
|
||||||
if (isNewQQ) {
|
if (isNewQQ) {
|
||||||
const moehoo_path = path.join(dirname(fileURLToPath(import.meta.url)), './native/napi2native/napi2native.' + platform + '.node');
|
const success = this.napi2nativeLoader.initHook(send, recv);
|
||||||
process.dlopen(this.MoeHooExport, moehoo_path, constants.dlopen.RTLD_LAZY);
|
if (success) {
|
||||||
this.MoeHooExport?.exports.initHook?.(send, recv);
|
this.available = true;
|
||||||
this.available = true;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { NativePacketClient } from '@/napcat-core/packet/client/nativeClient';
|
|||||||
import { OidbPacket } from '@/napcat-core/packet/transformer/base';
|
import { OidbPacket } from '@/napcat-core/packet/transformer/base';
|
||||||
import { PacketLogger } from '@/napcat-core/packet/context/loggerContext';
|
import { PacketLogger } from '@/napcat-core/packet/context/loggerContext';
|
||||||
import { NapCoreContext } from '@/napcat-core/packet/context/napCoreContext';
|
import { NapCoreContext } from '@/napcat-core/packet/context/napCoreContext';
|
||||||
|
import { Napi2NativeLoader } from '@/napcat-core/packet/handler/napi2nativeLoader';
|
||||||
|
|
||||||
export class LogStack {
|
export class LogStack {
|
||||||
private stack: string[] = [];
|
private stack: string[] = [];
|
||||||
@@ -43,12 +44,14 @@ export class PacketClientContext {
|
|||||||
private readonly napCore: NapCoreContext;
|
private readonly napCore: NapCoreContext;
|
||||||
private readonly logger: PacketLogger;
|
private readonly logger: PacketLogger;
|
||||||
private readonly logStack: LogStack;
|
private readonly logStack: LogStack;
|
||||||
|
private readonly napi2nativeLoader: Napi2NativeLoader;
|
||||||
private readonly _client: NativePacketClient;
|
private readonly _client: NativePacketClient;
|
||||||
|
|
||||||
constructor (napCore: NapCoreContext, logger: PacketLogger) {
|
constructor (napCore: NapCoreContext, logger: PacketLogger, napi2nativeLoader: Napi2NativeLoader) {
|
||||||
this.napCore = napCore;
|
this.napCore = napCore;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.logStack = new LogStack(logger);
|
this.logStack = new LogStack(logger);
|
||||||
|
this.napi2nativeLoader = napi2nativeLoader;
|
||||||
this._client = this.newClient();
|
this._client = this.newClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,14 +67,14 @@ export class PacketClientContext {
|
|||||||
await this._client.init(pid, recv, send);
|
await this._client.init(pid, recv, send);
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendOidbPacket<T extends boolean = false>(pkt: OidbPacket, rsp?: T, timeout?: number): Promise<T extends true ? Buffer : void> {
|
async sendOidbPacket<T extends boolean = false> (pkt: OidbPacket, rsp?: T, timeout?: number): Promise<T extends true ? Buffer : void> {
|
||||||
const raw = await this._client.sendOidbPacket(pkt, rsp, timeout);
|
const raw = await this._client.sendOidbPacket(pkt, rsp, timeout);
|
||||||
return raw.data as T extends true ? Buffer : void;
|
return raw.data as T extends true ? Buffer : void;
|
||||||
}
|
}
|
||||||
|
|
||||||
private newClient (): NativePacketClient {
|
private newClient (): NativePacketClient {
|
||||||
this.logger.info('使用 NativePacketClient 作为后端');
|
this.logger.info('使用 NativePacketClient 作为后端');
|
||||||
const client = new NativePacketClient(this.napCore, this.logger, this.logStack);
|
const client = new NativePacketClient(this.napCore, this.logger, this.logStack, this.napi2nativeLoader);
|
||||||
if (!client.check()) {
|
if (!client.check()) {
|
||||||
throw new Error('[Core] [Packet] NativePacketClient 不可用,NapCat.Packet将不会加载!');
|
throw new Error('[Core] [Packet] NativePacketClient 不可用,NapCat.Packet将不会加载!');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,5 +34,9 @@ export class NapCoreContext {
|
|||||||
return this.core.configLoader.configData;
|
return this.core.configLoader.configData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get napi2nativeLoader () {
|
||||||
|
return this.core.context.napi2nativeLoader;
|
||||||
|
}
|
||||||
|
|
||||||
sendSsoCmdReqByContend = (cmd: string, data: Buffer) => this.core.context.session.getMsgService().sendSsoCmdReqByContend(cmd, data);
|
sendSsoCmdReqByContend = (cmd: string, data: Buffer) => this.core.context.session.getMsgService().sendSsoCmdReqByContend(cmd, data);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export class PacketContext {
|
|||||||
this.msgConverter = new PacketMsgConverter();
|
this.msgConverter = new PacketMsgConverter();
|
||||||
this.napcore = new NapCoreContext(core);
|
this.napcore = new NapCoreContext(core);
|
||||||
this.logger = new PacketLogger(this.napcore);
|
this.logger = new PacketLogger(this.napcore);
|
||||||
this.client = new PacketClientContext(this.napcore, this.logger);
|
this.client = new PacketClientContext(this.napcore, this.logger, this.napcore.napi2nativeLoader);
|
||||||
this.highway = new PacketHighwayContext(this.napcore, this.logger, this.client);
|
this.highway = new PacketHighwayContext(this.napcore, this.logger, this.client);
|
||||||
this.operation = new PacketOperationContext(this);
|
this.operation = new PacketOperationContext(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ export class NativePacketHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async init (version: string): Promise<boolean> {
|
async init (version: string, o3HookMode: boolean = false): Promise<boolean> {
|
||||||
const version_arch = version + '-' + process.arch;
|
const version_arch = version + '-' + process.arch;
|
||||||
try {
|
try {
|
||||||
if (!this.loaded) {
|
if (!this.loaded) {
|
||||||
@@ -215,7 +215,7 @@ export class NativePacketHandler {
|
|||||||
|
|
||||||
this.MoeHooExport.exports.initHook?.(send, recv, (type: PacketType, uin: string, cmd: string, seq: number, hex_data: string) => {
|
this.MoeHooExport.exports.initHook?.(send, recv, (type: PacketType, uin: string, cmd: string, seq: number, hex_data: string) => {
|
||||||
this.emitPacket(type, uin, cmd, seq, hex_data);
|
this.emitPacket(type, uin, cmd, seq, hex_data);
|
||||||
}, true);
|
}, o3HookMode);
|
||||||
this.logger.log('[PacketHandler] 初始化成功');
|
this.logger.log('[PacketHandler] 初始化成功');
|
||||||
return true;
|
return true;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
90
packages/napcat-core/packet/handler/napi2nativeLoader.ts
Normal file
90
packages/napcat-core/packet/handler/napi2nativeLoader.ts
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
import path, { dirname } from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
import fs from 'fs';
|
||||||
|
import { constants } from 'node:os';
|
||||||
|
import { LogWrapper } from '../../helper/log';
|
||||||
|
|
||||||
|
export interface BypassOptions {
|
||||||
|
hook?: boolean;
|
||||||
|
window?: boolean;
|
||||||
|
module?: boolean;
|
||||||
|
process?: boolean;
|
||||||
|
container?: boolean;
|
||||||
|
js?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Napi2NativeExportType {
|
||||||
|
initHook?: (send: string, recv: string) => boolean;
|
||||||
|
setVerbose?: (verbose: boolean) => void; // 默认关闭日志
|
||||||
|
enableAllBypasses?: (options?: BypassOptions) => boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Napi2NativeLoader {
|
||||||
|
private readonly supportedPlatforms = ['win32.x64', 'linux.x64', 'linux.arm64', 'darwin.x64', 'darwin.arm64'];
|
||||||
|
private readonly exports: { exports: Napi2NativeExportType; } = { exports: {} };
|
||||||
|
protected readonly logger: LogWrapper;
|
||||||
|
private _loaded: boolean = false;
|
||||||
|
|
||||||
|
constructor ({ logger }: { logger: LogWrapper; }) {
|
||||||
|
this.logger = logger;
|
||||||
|
this.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
private load (): void {
|
||||||
|
const platform = process.platform + '.' + process.arch;
|
||||||
|
|
||||||
|
if (!this.supportedPlatforms.includes(platform)) {
|
||||||
|
this.logger.logWarn(`Napi2NativeLoader: 不支持的平台: ${platform}`);
|
||||||
|
this._loaded = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const nativeModulePath = path.join(
|
||||||
|
dirname(fileURLToPath(import.meta.url)),
|
||||||
|
'./native/napi2native/napi2native.' + platform + '.node'
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!fs.existsSync(nativeModulePath)) {
|
||||||
|
this.logger.logWarn(`Napi2NativeLoader: 缺失运行时文件: ${nativeModulePath}`);
|
||||||
|
this._loaded = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
process.dlopen(this.exports, nativeModulePath, constants.dlopen.RTLD_LAZY);
|
||||||
|
this._loaded = true;
|
||||||
|
this.logger.log('[Napi2NativeLoader] 加载成功');
|
||||||
|
} catch (error) {
|
||||||
|
this.logger.logError('Napi2NativeLoader 加载出错:', error);
|
||||||
|
this._loaded = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get loaded (): boolean {
|
||||||
|
return this._loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
get nativeExports (): Napi2NativeExportType {
|
||||||
|
return this.exports.exports;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化 Hook
|
||||||
|
* @param send send 偏移地址
|
||||||
|
* @param recv recv 偏移地址
|
||||||
|
* @returns 是否初始化成功
|
||||||
|
*/
|
||||||
|
initHook (send: string, recv: string): boolean {
|
||||||
|
if (!this._loaded) {
|
||||||
|
this.logger.logWarn('Napi2NativeLoader 未成功加载,无法初始化 Hook');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return this.nativeExports.initHook?.(send, recv) ?? false;
|
||||||
|
} catch (error) {
|
||||||
|
this.logger.logError('Napi2NativeLoader initHook 出错:', error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
7
packages/napcat-core/services/NodeIKernelAVSDKService.ts
Normal file
7
packages/napcat-core/services/NodeIKernelAVSDKService.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
export interface NodeIKernelAVSDKService {
|
||||||
|
addKernelAVSDKListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelAVSDKListener (listenerId: number): void;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
15
packages/napcat-core/services/NodeIKernelAddBuddyService.ts
Normal file
15
packages/napcat-core/services/NodeIKernelAddBuddyService.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
export interface NodeIKernelAddBuddyService {
|
||||||
|
addBuddy (arg1: string, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
getAddBuddyRequestTag (arg1: string, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
getBuddySetting (arg1: string, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
getSmartInfo (arg1: string, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
queryUinSafetyFlag (arg1: string, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
requestInfoByAccount (arg1: string, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -2,17 +2,17 @@ import { AlbumCommentReplyContent, AlbumFeedLikePublish, AlbumListRequest, Album
|
|||||||
|
|
||||||
export interface NodeIKernelAlbumService {
|
export interface NodeIKernelAlbumService {
|
||||||
|
|
||||||
setAlbumServiceInfo(...args: unknown[]): unknown;// needs 3 arguments
|
setAlbumServiceInfo (arg1: string, arg2: string, arg3: string): unknown;// needs 3 arguments
|
||||||
|
|
||||||
getMainPage(...args: unknown[]): unknown;// needs 2 arguments
|
getMainPage (arg1: unknown, arg2: unknown): unknown;// needs 2 arguments
|
||||||
|
|
||||||
getAlbumList(params: {
|
getAlbumList (params: {
|
||||||
qun_id: string,
|
qun_id: string,
|
||||||
attach_info: string,
|
attach_info: string,
|
||||||
seq: number,
|
seq: number,
|
||||||
request_time_line: {
|
request_time_line: {
|
||||||
request_invoke_time: string
|
request_invoke_time: string;
|
||||||
}
|
};
|
||||||
}): Promise<{
|
}): Promise<{
|
||||||
response: {
|
response: {
|
||||||
seq: number,
|
seq: number,
|
||||||
@@ -21,57 +21,57 @@ export interface NodeIKernelAlbumService {
|
|||||||
trace_id: string,
|
trace_id: string,
|
||||||
is_from_cache: boolean,
|
is_from_cache: boolean,
|
||||||
request_time_line: unknown,
|
request_time_line: unknown,
|
||||||
album_list: Array<{ name: string, album_id: string }>,
|
album_list: Array<{ name: string, album_id: string; }>,
|
||||||
attach_info: string,
|
attach_info: string,
|
||||||
has_more: boolean,
|
has_more: boolean,
|
||||||
right: unknown,
|
right: unknown,
|
||||||
banner: unknown
|
banner: unknown;
|
||||||
}
|
};
|
||||||
}>
|
}>;
|
||||||
getAlbumInfo(...args: unknown[]): unknown;// needs 1 arguments
|
getAlbumInfo (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
deleteAlbum(...args: unknown[]): unknown;// needs 3 arguments
|
deleteAlbum (arg1: number, arg2: string, arg3: string): unknown;// needs 3 arguments
|
||||||
|
|
||||||
addAlbum(...args: unknown[]): unknown;// needs 2 arguments
|
addAlbum (arg1: unknown, arg2: unknown): unknown;// needs 2 arguments
|
||||||
|
|
||||||
deleteMedias(seq: number, group_code: string, album_id: string, media_ids: string[], ban_ids: unknown[]): Promise<unknown>;// needs 4 arguments
|
deleteMedias (seq: number, group_code: string, album_id: string, media_ids: string[], ban_ids: unknown[]): Promise<unknown>;// needs 4 arguments
|
||||||
|
|
||||||
modifyAlbum(...args: unknown[]): unknown;// needs 3 arguments
|
modifyAlbum (arg1: number, arg2: unknown, arg3: Array<unknown>[]): unknown;// needs 3 arguments
|
||||||
|
|
||||||
getMediaList(param: AlbumListRequest): Promise<{
|
getMediaList (param: AlbumListRequest): Promise<{
|
||||||
response: {
|
response: {
|
||||||
seq: number,
|
seq: number,
|
||||||
result: number,
|
result: number,
|
||||||
errMs: string, // 没错就是errMs不是errMsg
|
errMs: string, // 没错就是errMs不是errMsg
|
||||||
trace_id: string,
|
trace_id: string,
|
||||||
request_time_line: unknown,
|
request_time_line: unknown,
|
||||||
}
|
};
|
||||||
}>;// needs 1 arguments
|
}>;// needs 1 arguments
|
||||||
|
|
||||||
quoteToQzone(...args: unknown[]): unknown;// needs 1 arguments
|
quoteToQzone (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
quoteToQunAlbum(...args: unknown[]): unknown;// needs 1 arguments
|
quoteToQunAlbum (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
queryQuoteToQunAlbumStatus(...args: unknown[]): unknown;// needs 1 arguments
|
queryQuoteToQunAlbumStatus (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
getQunFeeds(...args: unknown[]): unknown;// needs 1 arguments
|
getQunFeeds (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
getQunFeedDetail(...args: unknown[]): unknown;// needs 1 arguments
|
getQunFeedDetail (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
getQunNoticeList(...args: unknown[]): unknown;// needs 4 arguments
|
getQunNoticeList (arg1: number, arg2: unknown, arg3: string, arg4: string): unknown;// needs 4 arguments
|
||||||
|
|
||||||
getQunComment(...args: unknown[]): unknown;// needs 1 arguments
|
getQunComment (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
getQunLikes(...args: unknown[]): unknown;// needs 4 arguments
|
getQunLikes (arg1: number, arg2: unknown, arg3: string, arg4: string): unknown;// needs 4 arguments
|
||||||
|
|
||||||
deleteQunFeed(...args: unknown[]): unknown;// needs 1 arguments
|
deleteQunFeed (arg: unknown): unknown;// needs 1 arguments
|
||||||
// seq random
|
// seq random
|
||||||
// stCommonExt {"map_info":[],"map_bytes_info":[],"map_user_account":[]}
|
// stCommonExt {"map_info":[],"map_bytes_info":[],"map_user_account":[]}
|
||||||
// qunId string
|
// qunId string
|
||||||
doQunComment(seq: number, ext: {
|
doQunComment (seq: number, ext: {
|
||||||
map_info: unknown[],
|
map_info: unknown[],
|
||||||
map_bytes_info: unknown[],
|
map_bytes_info: unknown[],
|
||||||
map_user_account: unknown[]
|
map_user_account: unknown[];
|
||||||
},
|
},
|
||||||
qunId: string,
|
qunId: string,
|
||||||
commentType: number,
|
commentType: number,
|
||||||
@@ -79,23 +79,23 @@ export interface NodeIKernelAlbumService {
|
|||||||
content: AlbumCommentReplyContent,
|
content: AlbumCommentReplyContent,
|
||||||
): Promise<unknown>;// needs 6 arguments
|
): Promise<unknown>;// needs 6 arguments
|
||||||
|
|
||||||
doQunReply(...args: unknown[]): unknown;// needs 7 arguments
|
doQunReply (arg1: number, arg2: unknown, arg3: string, arg4: number, arg5: unknown, arg6: unknown, arg7: unknown): unknown;// needs 7 arguments
|
||||||
|
|
||||||
doQunLike(
|
doQunLike (
|
||||||
seq: number,
|
seq: number,
|
||||||
ext: {
|
ext: {
|
||||||
map_info: unknown[],
|
map_info: unknown[],
|
||||||
map_bytes_info: unknown[],
|
map_bytes_info: unknown[],
|
||||||
map_user_account: unknown[]
|
map_user_account: unknown[];
|
||||||
},
|
},
|
||||||
param: {
|
param: {
|
||||||
// {"id":"421_1_0_1012959257|V61Yiali4PELg90bThrH4Bo2iI1M5Kab|V5bCgAxMDEyOTU5MjU3e*KqaLVYdic!^||^421_1_0_1012959257|V61Yiali4PELg90bThrH4Bo2iI1M5Kab|17560336594^||^1","status":1}
|
// {"id":"421_1_0_1012959257|V61Yiali4PELg90bThrH4Bo2iI1M5Kab|V5bCgAxMDEyOTU5MjU3e*KqaLVYdic!^||^421_1_0_1012959257|V61Yiali4PELg90bThrH4Bo2iI1M5Kab|17560336594^||^1","status":1}
|
||||||
id: string,
|
id: string,
|
||||||
status: number
|
status: number;
|
||||||
},
|
},
|
||||||
like: AlbumFeedLikePublish
|
like: AlbumFeedLikePublish
|
||||||
): Promise<unknown>;// needs 5 arguments
|
): Promise<unknown>;// needs 5 arguments
|
||||||
|
|
||||||
getRedPoints(...args: unknown[]): unknown;// needs 3 arguments
|
getRedPoints (arg1: string, arg2: number, arg3: string): unknown;// needs 3 arguments
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ export interface NodeIKernelAvatarService {
|
|||||||
|
|
||||||
forceDownloadGroupAvatar(arg1: unknown, arg2: unknown): unknown;
|
forceDownloadGroupAvatar(arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
getGroupPortraitPath(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
getGroupPortraitPath(arg1: string, arg2: number, arg3: number): unknown;
|
||||||
|
|
||||||
forceDownloadGroupPortrait(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
forceDownloadGroupPortrait(arg1: string, arg2: number, arg3: number): unknown;
|
||||||
|
|
||||||
getAvatarPaths(arg1: unknown, arg2: unknown): unknown;
|
getAvatarPaths(arg1: Array<unknown>[], arg2: number): unknown;
|
||||||
|
|
||||||
getGroupAvatarPaths(arg1: unknown, arg2: unknown): unknown;
|
getGroupAvatarPaths(arg1: Array<unknown>[], arg2: string): unknown;
|
||||||
|
|
||||||
getConfGroupAvatarPaths(arg: unknown): unknown;
|
getConfGroupAvatarPaths(arg: unknown): unknown;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
export interface NodeIKernelBdhUploadService {
|
||||||
|
addKernelBdhUploadListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelBdhUploadListener (listenerId: number): void;
|
||||||
|
|
||||||
|
setBdhTestEnv (arg1: string, arg2: number): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -130,5 +130,21 @@ export interface NodeIKernelBuddyService {
|
|||||||
|
|
||||||
getBuddyRecommendContactArkJson (uid: string, phoneNumber: string): Promise<GeneralCallResult & { arkMsg: string; }>;
|
getBuddyRecommendContactArkJson (uid: string, phoneNumber: string): Promise<GeneralCallResult & { arkMsg: string; }>;
|
||||||
|
|
||||||
|
checkIsBuddyAsync (uid: string): Promise<unknown>;
|
||||||
|
|
||||||
|
areBuddies (callFrom: string, uids: string[]): unknown;
|
||||||
|
|
||||||
|
getCategoryById (id: number): unknown;
|
||||||
|
|
||||||
|
addCategoryV2 (name: string, buddyUids?: unknown): Promise<unknown>;
|
||||||
|
|
||||||
isNull (): boolean;
|
isNull (): boolean;
|
||||||
|
|
||||||
|
getAddFriendBlockedList (): unknown;
|
||||||
|
|
||||||
|
getAddFriendBlockedRedPoint (): unknown;
|
||||||
|
|
||||||
|
reportAddFriendBlocked (): unknown;
|
||||||
|
|
||||||
|
setWXMsgNotify (arg: unknown): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,91 +1,91 @@
|
|||||||
import { GeneralCallResult } from './common';
|
import { GeneralCallResult } from './common';
|
||||||
|
|
||||||
export interface NodeIKernelCollectionService {
|
export interface NodeIKernelCollectionService {
|
||||||
addKernelCollectionListener(...args: unknown[]): void;// needs 1 arguments
|
addKernelCollectionListener (listener: unknown): void;// needs 1 arguments
|
||||||
|
|
||||||
removeKernelCollectionListener(listenerId: number): void;
|
removeKernelCollectionListener (listenerId: number): void;
|
||||||
|
|
||||||
getCollectionItemList(param: {
|
getCollectionItemList (param: {
|
||||||
category: number,
|
category: number,
|
||||||
groupId: number,
|
groupId: number,
|
||||||
forceSync: boolean,
|
forceSync: boolean,
|
||||||
forceFromDb: boolean,
|
forceFromDb: boolean,
|
||||||
timeStamp: string,
|
timeStamp: string,
|
||||||
count: number,
|
count: number,
|
||||||
searchDown: boolean
|
searchDown: boolean;
|
||||||
}): Promise<GeneralCallResult &
|
}): Promise<GeneralCallResult &
|
||||||
{
|
{
|
||||||
collectionSearchList: {
|
collectionSearchList: {
|
||||||
collectionItemList: Array<
|
collectionItemList: Array<
|
||||||
{
|
{
|
||||||
cid: string,
|
cid: string,
|
||||||
type: number,
|
type: number,
|
||||||
status: number,
|
status: number,
|
||||||
author: {
|
author: {
|
||||||
type: number,
|
type: number,
|
||||||
numId: string,
|
numId: string,
|
||||||
strId: string,
|
strId: string,
|
||||||
groupId: string,
|
groupId: string,
|
||||||
groupName: string,
|
groupName: string,
|
||||||
uid: string
|
uid: string;
|
||||||
},
|
},
|
||||||
bid: number,
|
bid: number,
|
||||||
category: number,
|
category: number,
|
||||||
createTime: string,
|
createTime: string,
|
||||||
collectTime: string,
|
collectTime: string,
|
||||||
modifyTime: string,
|
modifyTime: string,
|
||||||
sequence: string,
|
sequence: string,
|
||||||
shareUrl: string,
|
shareUrl: string,
|
||||||
customGroupId: number,
|
customGroupId: number,
|
||||||
securityBeat: boolean,
|
securityBeat: boolean,
|
||||||
summary: {
|
summary: {
|
||||||
textSummary: unknown,
|
textSummary: unknown,
|
||||||
linkSummary: unknown,
|
linkSummary: unknown,
|
||||||
gallerySummary: unknown,
|
gallerySummary: unknown,
|
||||||
audioSummary: unknown,
|
audioSummary: unknown,
|
||||||
videoSummary: unknown,
|
videoSummary: unknown,
|
||||||
fileSummary: unknown,
|
fileSummary: unknown,
|
||||||
locationSummary: unknown,
|
locationSummary: unknown,
|
||||||
richMediaSummary: unknown,
|
richMediaSummary: unknown,
|
||||||
}
|
};
|
||||||
}>,
|
}>,
|
||||||
hasMore: boolean,
|
hasMore: boolean,
|
||||||
bottomTimeStamp: string
|
bottomTimeStamp: string;
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
>;
|
>;
|
||||||
|
|
||||||
getCollectionContent(...args: unknown[]): unknown;// needs 5 arguments
|
getCollectionContent (arg1: string, arg2: number, arg3: string, arg4: string, arg5: boolean): unknown;// needs 5 arguments
|
||||||
|
|
||||||
getCollectionCustomGroupList(...args: unknown[]): unknown;// needs 0 arguments
|
getCollectionCustomGroupList (): unknown;// needs 0 arguments
|
||||||
|
|
||||||
getCollectionUserInfo(...args: unknown[]): unknown;// needs 0 arguments
|
getCollectionUserInfo (): unknown;// needs 0 arguments
|
||||||
|
|
||||||
searchCollectionItemList(...args: unknown[]): unknown;// needs 2 arguments
|
searchCollectionItemList (arg1: string, arg2: unknown): unknown;// needs 2 arguments
|
||||||
|
|
||||||
addMsgToCollection(...args: unknown[]): unknown;// needs 2 arguments
|
addMsgToCollection (arg1: unknown, arg2: unknown): unknown;// needs 2 arguments
|
||||||
|
|
||||||
collectionArkShare(...args: unknown[]): unknown;// needs 1 arguments
|
collectionArkShare (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
collectionFileForward(...args: unknown[]): unknown;// needs 3 arguments
|
collectionFileForward (arg1: number, arg2: string, arg3: unknown): unknown;// needs 3 arguments
|
||||||
|
|
||||||
downloadCollectionFile(...args: unknown[]): unknown;// needs 4 arguments
|
downloadCollectionFile (arg1: string, arg2: string, arg3: unknown, arg4: string): unknown;// needs 4 arguments
|
||||||
|
|
||||||
downloadCollectionFileThumbPic(...args: unknown[]): unknown;// needs 4 arguments
|
downloadCollectionFileThumbPic (arg1: string, arg2: string, arg3: unknown, arg4: number): unknown;// needs 4 arguments
|
||||||
|
|
||||||
downloadCollectionPic(...args: unknown[]): unknown;// needs 3 arguments
|
downloadCollectionPic (arg1: string, arg2: string, arg3: unknown): unknown;// needs 3 arguments
|
||||||
|
|
||||||
cancelDownloadCollectionFile(...args: unknown[]): unknown;// needs 1 arguments
|
cancelDownloadCollectionFile (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
deleteCollectionItemList(...args: unknown[]): unknown;// needs 1 arguments
|
deleteCollectionItemList (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
editCollectionItem(...args: unknown[]): unknown;// needs 2 arguments
|
editCollectionItem (arg1: unknown, arg2: unknown): unknown;// needs 2 arguments
|
||||||
|
|
||||||
getEditPicInfoByPath(...args: unknown[]): unknown;// needs 1 arguments
|
getEditPicInfoByPath (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
collectionFastUpload(...args: unknown[]): unknown;// needs 1 arguments
|
collectionFastUpload (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
editCollectionItemAfterFastUpload(...args: unknown[]): unknown;// needs 2 arguments
|
editCollectionItemAfterFastUpload (arg1: unknown, arg2: unknown): unknown;// needs 2 arguments
|
||||||
|
|
||||||
createNewCollectionItem(...args: unknown[]): unknown;// needs 1 arguments
|
createNewCollectionItem (arg: unknown): unknown;// needs 1 arguments
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
export interface NodeIKernelConfigMgrService {
|
||||||
|
addKernelConfigMgrListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelConfigMgrListener (listenerId: number): void;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
export interface NodeIKernelDbToolsService {
|
export interface NodeIKernelDbToolsService {
|
||||||
|
|
||||||
depositDatabase(...args: unknown[]): unknown;
|
depositDatabase (arg: unknown): unknown;
|
||||||
|
|
||||||
backupDatabase(...args: unknown[]): unknown;
|
backupDatabase (arg: unknown): unknown;
|
||||||
|
|
||||||
retrieveDatabase(...args: unknown[]): unknown;
|
retrieveDatabase (arg: unknown): unknown;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
export interface NodeIKernelDirectSessionService {
|
||||||
|
addKernelDirectSessionListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelDirectSessionListener (listenerId: number): void;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -1,3 +1,13 @@
|
|||||||
export interface NodeIKernelECDHService {
|
export interface NodeIKernelECDHService {
|
||||||
sendOIDBECRequest: (data: Uint8Array) => Promise<Uint8Array>;
|
sendOIDBECRequest: (data: Uint8Array) => Promise<Uint8Array>;
|
||||||
|
|
||||||
|
init (): unknown;
|
||||||
|
|
||||||
|
setIsDebug (isDebug: boolean): unknown;
|
||||||
|
|
||||||
|
setGuid (guid: string): unknown;
|
||||||
|
|
||||||
|
sendOIDBRequest (cmd: number, serviceType: number, subCmd: number, data: string, extraData: unknown): Promise<unknown>;
|
||||||
|
|
||||||
|
sendSSORequest (cmd: string, serviceType: number, data: string, extraData: unknown): Promise<unknown>;
|
||||||
}
|
}
|
||||||
|
|||||||
5
packages/napcat-core/services/NodeIKernelEmojiService.ts
Normal file
5
packages/napcat-core/services/NodeIKernelEmojiService.ts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
export interface NodeIKernelEmojiService {
|
||||||
|
getAIGCEmojiList (arg1: unknown, arg2: boolean): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
19
packages/napcat-core/services/NodeIKernelFeedService.ts
Normal file
19
packages/napcat-core/services/NodeIKernelFeedService.ts
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
export interface NodeIKernelFeedService {
|
||||||
|
addKernelFeedListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelFeedListener (listenerId: number): void;
|
||||||
|
|
||||||
|
getChannelDraft (arg1: string, arg2: number): unknown;
|
||||||
|
|
||||||
|
getFeedCount (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getFeedLikeUserList (arg1: unknown, arg2: number): unknown;
|
||||||
|
|
||||||
|
getFeedRichMediaFilePath (arg1: number, arg2: string, arg3: string, arg4: number, arg5: boolean): unknown;
|
||||||
|
|
||||||
|
getJoinedRecommendItems (arg1: unknown, arg2: boolean): unknown;
|
||||||
|
|
||||||
|
setChannelDraft (arg1: string, arg2: string, arg3: number): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -1,37 +1,41 @@
|
|||||||
import { NodeIKernelFileAssistantListener } from '@/napcat-core/index';
|
import { NodeIKernelFileAssistantListener } from '@/napcat-core/index';
|
||||||
|
|
||||||
export interface NodeIKernelFileAssistantService {
|
export interface NodeIKernelFileAssistantService {
|
||||||
addKernelFileAssistantListener(listener: NodeIKernelFileAssistantListener): unknown;
|
addKernelFileAssistantListener (listener: NodeIKernelFileAssistantListener): unknown;
|
||||||
|
|
||||||
removeKernelFileAssistantListener(arg1: unknown[]): unknown;
|
removeKernelFileAssistantListener (arg1: unknown[]): unknown;
|
||||||
|
|
||||||
getFileAssistantList(arg1: unknown[]): unknown;
|
getFileAssistantList (arg1: unknown[]): unknown;
|
||||||
|
|
||||||
getMoreFileAssistantList(arg1: unknown[]): unknown;
|
getMoreFileAssistantList (arg1: unknown[]): unknown;
|
||||||
|
|
||||||
getFileSessionList(): unknown;
|
getFileSessionList (): unknown;
|
||||||
|
|
||||||
searchFile(keywords: string[], params: { resultType: number, pageLimit: number }, resultId: number): number;
|
searchFile (keywords: string[], params: { resultType: number, pageLimit: number; }, resultId: number): number;
|
||||||
|
|
||||||
resetSearchFileSortType(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
resetSearchFileSortType (arg1: number, arg2: number, arg3: number): unknown;
|
||||||
|
|
||||||
searchMoreFile(arg1: unknown[]): unknown;
|
searchMoreFile (arg1: unknown[]): unknown;
|
||||||
|
|
||||||
cancelSearchFile(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
cancelSearchFile (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
downloadFile(fileIds: string[]): { result: number, errMsg: string };
|
downloadFile (fileIds: string[]): { result: number, errMsg: string; };
|
||||||
|
|
||||||
forwardFile(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
forwardFile (arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
cancelFileAction(arg1: unknown[]): unknown;
|
cancelFileAction (arg1: unknown[]): unknown;
|
||||||
|
|
||||||
retryFileAction(arg1: unknown[]): unknown;
|
retryFileAction (arg1: unknown[]): unknown;
|
||||||
|
|
||||||
deleteFile(arg1: unknown[]): unknown;
|
deleteFile (arg1: unknown[]): unknown;
|
||||||
|
|
||||||
saveAs(arg1: unknown, arg2: unknown): unknown;
|
saveAs (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
saveAsWithRename(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
saveAsWithRename (arg1: string, arg2: string, arg3: string): unknown;
|
||||||
|
|
||||||
isNull(): boolean;
|
getFilePathCount (arg: unknown): unknown;
|
||||||
|
|
||||||
|
updateRecentOperateForMsg (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
export interface NodeIKernelFileBridgeClientService {
|
||||||
|
addKernelFileBridgeClientListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelFileBridgeClientListener (listenerId: number): void;
|
||||||
|
|
||||||
|
getPageContent (arg1: boolean, arg2: string): unknown;
|
||||||
|
|
||||||
|
getThumbnail (arg1: boolean, arg2: string, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
searchFolderForFiles (arg1: string, arg2: string, arg3: string): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
export interface NodeIKernelFileBridgeHostService {
|
||||||
|
addKernelFileBridgeHostListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelFileBridgeHostListener (listenerId: number): void;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -24,13 +24,13 @@ export interface NodeIKernelFlashTransferService {
|
|||||||
seq: number;
|
seq: number;
|
||||||
}>; // 2 arg 重点 // 自动上传
|
}>; // 2 arg 重点 // 自动上传
|
||||||
|
|
||||||
createMergeShareTask (...args: unknown[]): unknown; // 2 arg
|
createMergeShareTask (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
updateFlashTransfer (...args: unknown[]): unknown; // 2 arg
|
updateFlashTransfer (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
getFileSetList (...args: unknown[]): unknown; // 1 arg
|
getFileSetList (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
getFileSetListCount (...args: unknown[]): unknown; // 1 arg
|
getFileSetListCount (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取file set 的信息
|
* 获取file set 的信息
|
||||||
@@ -50,11 +50,11 @@ export interface NodeIKernelFlashTransferService {
|
|||||||
rsp: FileListResponse;
|
rsp: FileListResponse;
|
||||||
}>; // 1 arg 这个方法QQ有bug??? 并没有,是我参数有问题
|
}>; // 1 arg 这个方法QQ有bug??? 并没有,是我参数有问题
|
||||||
|
|
||||||
getDownloadedFileCount (...args: unknown[]): unknown; // 1 arg
|
getDownloadedFileCount (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
getLocalFileList (...args: unknown[]): unknown; // 3 arg
|
getLocalFileList (arg1: number, arg2: string, arg3: Array<unknown>[]): unknown; // 3 arg
|
||||||
|
|
||||||
batchRemoveUserFileSetHistory (...args: unknown[]): unknown; // 1 arg
|
batchRemoveUserFileSetHistory (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取分享链接
|
* 获取分享链接
|
||||||
@@ -73,26 +73,26 @@ export interface NodeIKernelFlashTransferService {
|
|||||||
fileSetId: string;
|
fileSetId: string;
|
||||||
}>; // 1 arg code == share code
|
}>; // 1 arg code == share code
|
||||||
|
|
||||||
batchRemoveFile (...args: unknown[]): unknown; // 1 arg
|
batchRemoveFile (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
checkUploadPathValid (...args: unknown[]): unknown; // 1 arg
|
checkUploadPathValid (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
cleanFailedFiles (...args: unknown[]): unknown; // 2 arg
|
cleanFailedFiles (arg1: number, arg2: Array<unknown>[]): unknown; // 2 arg
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 暂停所有的任务
|
* 暂停所有的任务
|
||||||
*/
|
*/
|
||||||
resumeAllUnfinishedTasks (): unknown; // 0 arg !!
|
resumeAllUnfinishedTasks (): unknown; // 0 arg !!
|
||||||
|
|
||||||
addFileSetUploadListener (...args: unknown[]): unknown; // 1 arg
|
addFileSetUploadListener (listener: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
removeFileSetUploadListener (...args: unknown[]): unknown; // 1 arg
|
removeFileSetUploadListener (listenerId: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 开始上传任务 适用于已暂停的
|
* 开始上传任务 适用于已暂停的
|
||||||
* @param fileSetId
|
* @param fileSetId
|
||||||
*/
|
*/
|
||||||
startFileSetUpload (fileSetId: string): void; // 1 arg 并不是新建任务,应该是暂停后的启动
|
startFileSetUpload (fileSetId: unknown): void; // 1 arg 并不是新建任务,应该是暂停后的启动
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结束,无法再次启动
|
* 结束,无法再次启动
|
||||||
@@ -110,27 +110,27 @@ export interface NodeIKernelFlashTransferService {
|
|||||||
* 继续上传
|
* 继续上传
|
||||||
* @param args
|
* @param args
|
||||||
*/
|
*/
|
||||||
resumeFileSetUpload (...args: unknown[]): unknown; // 1 arg 继续
|
resumeFileSetUpload (fileSetId: unknown): unknown; // 1 arg 继续
|
||||||
|
|
||||||
pauseFileUpload (...args: unknown[]): unknown; // 1 arg
|
pauseFileUpload (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
resumeFileUpload (...args: unknown[]): unknown; // 1 arg
|
resumeFileUpload (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
stopFileUpload (...args: unknown[]): unknown; // 1 arg
|
stopFileUpload (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
asyncGetThumbnailPath (...args: unknown[]): unknown; // 2 arg
|
asyncGetThumbnailPath (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
setDownLoadDefaultFileDir (...args: unknown[]): unknown; // 1 arg
|
setDownLoadDefaultFileDir (dir: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
setFileSetDownloadDir (...args: unknown[]): unknown; // 2 arg
|
setFileSetDownloadDir (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
getFileSetDownloadDir (...args: unknown[]): unknown; // 1 arg
|
getFileSetDownloadDir (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
setFlashTransferDir (...args: unknown[]): unknown; // 2 arg
|
setFlashTransferDir (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
addFileSetDownloadListener (...args: unknown[]): unknown; // 1 arg
|
addFileSetDownloadListener (listener: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
removeFileSetDownloadListener (...args: unknown[]): unknown; // 1 arg
|
removeFileSetDownloadListener (listenerId: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 开始下载file set的函数 同开始上传
|
* 开始下载file set的函数 同开始上传
|
||||||
@@ -154,13 +154,13 @@ export interface NodeIKernelFlashTransferService {
|
|||||||
extraInfo: 0;
|
extraInfo: 0;
|
||||||
}>; // 2 arg
|
}>; // 2 arg
|
||||||
|
|
||||||
startFileListDownLoad (...args: unknown[]): unknown; // 4 arg // 大概率是选择set里面的部分文件进行下载,没必要,不想写
|
startFileListDownLoad (arg1: string, arg2: number, arg3: Array<unknown>[], arg4: unknown): unknown; // 4 arg // 大概率是选择set里面的部分文件进行下载,没必要,不想写
|
||||||
|
|
||||||
pauseFileListDownLoad (...args: unknown[]): unknown; // 2 arg
|
pauseFileListDownLoad (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
resumeFileListDownLoad (...args: unknown[]): unknown; // 2 arg
|
resumeFileListDownLoad (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
stopFileListDownLoad (...args: unknown[]): unknown; // 2 arg
|
stopFileListDownLoad (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
startThumbnailListDownload (fileSetId: string): Promise<GeneralCallResult>; // 1 arg // 缩略图下载
|
startThumbnailListDownload (fileSetId: string): Promise<GeneralCallResult>; // 1 arg // 缩略图下载
|
||||||
|
|
||||||
@@ -174,31 +174,31 @@ export interface NodeIKernelFlashTransferService {
|
|||||||
expireTimestampSeconds: string;
|
expireTimestampSeconds: string;
|
||||||
}>; // 1 arg
|
}>; // 1 arg
|
||||||
|
|
||||||
startFileListDownLoadBySessionId (...args: unknown[]): unknown; // 2 arg
|
startFileListDownLoadBySessionId (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
addFileSetSimpleStatusListener (...args: unknown[]): unknown; // 2 arg
|
addFileSetSimpleStatusListener (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
addFileSetSimpleStatusMonitoring (...args: unknown[]): unknown; // 2 arg
|
addFileSetSimpleStatusMonitoring (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
removeFileSetSimpleStatusMonitoring (...args: unknown[]): unknown; // 2 arg
|
removeFileSetSimpleStatusMonitoring (arg1: unknown, arg2: unknown): unknown; // 2 arg
|
||||||
|
|
||||||
removeFileSetSimpleStatusListener (...args: unknown[]): unknown; // 1 arg
|
removeFileSetSimpleStatusListener (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
addDesktopFileSetSimpleStatusListener (...args: unknown[]): unknown; // 1 arg
|
addDesktopFileSetSimpleStatusListener (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
addDesktopFileSetSimpleStatusMonitoring (...args: unknown[]): unknown; // 1 arg
|
addDesktopFileSetSimpleStatusMonitoring (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
removeDesktopFileSetSimpleStatusMonitoring (...args: unknown[]): unknown; // 1 arg
|
removeDesktopFileSetSimpleStatusMonitoring (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
removeDesktopFileSetSimpleStatusListener (...args: unknown[]): unknown; // 1 arg
|
removeDesktopFileSetSimpleStatusListener (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
addFileSetSimpleUploadInfoListener (...args: unknown[]): unknown; // 1 arg
|
addFileSetSimpleUploadInfoListener (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
addFileSetSimpleUploadInfoMonitoring (...args: unknown[]): unknown; // 1 arg
|
addFileSetSimpleUploadInfoMonitoring (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
removeFileSetSimpleUploadInfoMonitoring (...args: unknown[]): unknown; // 1 arg
|
removeFileSetSimpleUploadInfoMonitoring (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
removeFileSetSimpleUploadInfoListener (...args: unknown[]): unknown; // 1 arg
|
removeFileSetSimpleUploadInfoListener (arg: unknown): unknown; // 1 arg
|
||||||
/**
|
/**
|
||||||
* 发送闪传消息
|
* 发送闪传消息
|
||||||
* @param sendArgs
|
* @param sendArgs
|
||||||
@@ -211,9 +211,9 @@ export interface NodeIKernelFlashTransferService {
|
|||||||
};
|
};
|
||||||
}>; // 1 arg 估计是file set id
|
}>; // 1 arg 估计是file set id
|
||||||
|
|
||||||
addFlashTransferTaskInfoListener (...args: unknown[]): unknown; // 1 arg
|
addFlashTransferTaskInfoListener (listener: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
removeFlashTransferTaskInfoListener (...args: unknown[]): unknown; // 1 arg
|
removeFlashTransferTaskInfoListener (listenerId: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
retrieveLocalLastFailedSetTasksInfo (): unknown; // 0 arg
|
retrieveLocalLastFailedSetTasksInfo (): unknown; // 0 arg
|
||||||
|
|
||||||
@@ -227,77 +227,77 @@ export interface NodeIKernelFlashTransferService {
|
|||||||
};
|
};
|
||||||
}>; // 1 arg
|
}>; // 1 arg
|
||||||
|
|
||||||
getLocalFileListByStatuses (...args: unknown[]): unknown; // 1 arg
|
getLocalFileListByStatuses (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
addTransferStateListener (...args: unknown[]): unknown; // 1 arg
|
addTransferStateListener (listener: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
removeTransferStateListener (...args: unknown[]): unknown; // 1 arg
|
removeTransferStateListener (listenerId: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
getFileSetFirstClusteringList (...args: unknown[]): unknown; // 3 arg
|
getFileSetFirstClusteringList (arg1: number, arg2: string, arg3: number): unknown; // 3 arg
|
||||||
|
|
||||||
getFileSetClusteringList (...args: unknown[]): unknown; // 1 arg
|
getFileSetClusteringList (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
addFileSetClusteringListListener (...args: unknown[]): unknown; // 1 arg
|
addFileSetClusteringListListener (listener: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
removeFileSetClusteringListListener (...args: unknown[]): unknown; // 1 arg
|
removeFileSetClusteringListListener (listenerId: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
getFileSetClusteringDetail (...args: unknown[]): unknown; // 1 arg
|
getFileSetClusteringDetail (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
doAIOFlashTransferBubbleActionWithStatus (...args: unknown[]): unknown; // 4 arg
|
doAIOFlashTransferBubbleActionWithStatus (arg1: string, arg2: number, arg3: number, arg4: unknown): unknown; // 4 arg
|
||||||
|
|
||||||
getFilesTransferProgress (...args: unknown[]): unknown; // 1 arg
|
getFilesTransferProgress (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
pollFilesTransferProgress (...args: unknown[]): unknown; // 1 arg
|
pollFilesTransferProgress (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
cancelPollFilesTransferProgress (...args: unknown[]): unknown; // 1 arg
|
cancelPollFilesTransferProgress (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
checkDownloadStatusBeforeLocalFileOper (...args: unknown[]): unknown; // 3 arg
|
checkDownloadStatusBeforeLocalFileOper (arg1: number, arg2: string, arg3: string): unknown; // 3 arg
|
||||||
|
|
||||||
getCompressedFileFolder (...args: unknown[]): unknown; // 1 arg
|
getCompressedFileFolder (arg: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
addFolderListener (...args: unknown[]): unknown; // 1 arg
|
addFolderListener (listener: unknown): unknown; // 1 arg
|
||||||
|
|
||||||
removeFolderListener (...args: unknown[]): unknown;
|
removeFolderListener (listenerId: unknown): unknown;
|
||||||
|
|
||||||
addCompressedFileListener (...args: unknown[]): unknown;
|
addCompressedFileListener (listener: unknown): unknown;
|
||||||
|
|
||||||
removeCompressedFileListener (...args: unknown[]): unknown;
|
removeCompressedFileListener (listenerId: unknown): unknown;
|
||||||
|
|
||||||
getFileCategoryList (...args: unknown[]): unknown;
|
getFileCategoryList (arg: unknown): unknown;
|
||||||
|
|
||||||
addDeviceStatusListener (...args: unknown[]): unknown;
|
addDeviceStatusListener (listener: unknown): unknown;
|
||||||
|
|
||||||
removeDeviceStatusListener (...args: unknown[]): unknown;
|
removeDeviceStatusListener (listenerId: unknown): unknown;
|
||||||
|
|
||||||
checkDeviceStatus (...args: unknown[]): unknown;
|
checkDeviceStatus (arg: unknown): unknown;
|
||||||
|
|
||||||
pauseAllTasks (...args: unknown[]): unknown; // 2 arg
|
pauseAllTasks (arg1: number, arg2: number): unknown; // 2 arg
|
||||||
|
|
||||||
resumePausedTasksAfterDeviceStatus (...args: unknown[]): unknown;
|
resumePausedTasksAfterDeviceStatus (arg: unknown): unknown;
|
||||||
|
|
||||||
onSystemGoingToSleep (...args: unknown[]): unknown;
|
onSystemGoingToSleep (arg: unknown): unknown;
|
||||||
|
|
||||||
onSystemWokeUp (...args: unknown[]): unknown;
|
onSystemWokeUp (arg: unknown): unknown;
|
||||||
|
|
||||||
getFileMetas (...args: unknown[]): unknown;
|
getFileMetas (arg: unknown): unknown;
|
||||||
|
|
||||||
addDownloadCntStatisticsListener (...args: unknown[]): unknown;
|
addDownloadCntStatisticsListener (listener: unknown): unknown;
|
||||||
|
|
||||||
removeDownloadCntStatisticsListener (...args: unknown[]): unknown;
|
removeDownloadCntStatisticsListener (listenerId: unknown): unknown;
|
||||||
|
|
||||||
detectPrivacyInfoInPaths (...args: unknown[]): unknown;
|
detectPrivacyInfoInPaths (arg: unknown): unknown;
|
||||||
|
|
||||||
getFileThumbnailUrl (...args: unknown[]): unknown;
|
getFileThumbnailUrl (arg: unknown): unknown;
|
||||||
|
|
||||||
handleDownloadFinishAfterSaveToAlbum (...args: unknown[]): unknown;
|
handleDownloadFinishAfterSaveToAlbum (arg: unknown): unknown;
|
||||||
|
|
||||||
checkBatchFilesDownloadStatus (...args: unknown[]): unknown;
|
checkBatchFilesDownloadStatus (arg: unknown): unknown;
|
||||||
|
|
||||||
onCheckAlbumStorageStatusResult (...args: unknown[]): unknown;
|
onCheckAlbumStorageStatusResult (arg: unknown): unknown;
|
||||||
|
|
||||||
addFileAlbumStorageListener (...args: unknown[]): unknown;
|
addFileAlbumStorageListener (listener: unknown): unknown;
|
||||||
|
|
||||||
removeFileAlbumStorageListener (...args: unknown[]): unknown;
|
removeFileAlbumStorageListener (listenerId: unknown): unknown;
|
||||||
|
|
||||||
refreshFolderStatus (...args: unknown[]): unknown;
|
refreshFolderStatus (arg: unknown): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,29 +16,29 @@ import { GeneralCallResult } from '@/napcat-core/services/common';
|
|||||||
|
|
||||||
export interface NodeIKernelGroupService {
|
export interface NodeIKernelGroupService {
|
||||||
|
|
||||||
modifyGroupExtInfoV2(groupExtInfo: GroupExtInfo, groupExtFilter: GroupExtFilter): Promise<GeneralCallResult &
|
modifyGroupExtInfoV2 (groupExtInfo: GroupExtInfo, groupExtFilter: GroupExtFilter): Promise<GeneralCallResult &
|
||||||
{
|
{
|
||||||
result: {
|
result: {
|
||||||
groupCode: string,
|
groupCode: string,
|
||||||
result: number
|
result: number;
|
||||||
}
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
// --->
|
// --->
|
||||||
// 待启用 For Next Version 3.2.0
|
// 待启用 For Next Version 3.2.0
|
||||||
// isTroopMember ? 0 : 111
|
// isTroopMember ? 0 : 111
|
||||||
getGroupMemberMaxNum(groupCode: string, serviceType: number): Promise<unknown>;
|
getGroupMemberMaxNum (groupCode: string, serviceType: number): Promise<unknown>;
|
||||||
|
|
||||||
getAllGroupPrivilegeFlag(troopUinList: string[], serviceType: number): Promise<unknown>;
|
getAllGroupPrivilegeFlag (troopUinList: string[], serviceType: number): Promise<unknown>;
|
||||||
// <---
|
// <---
|
||||||
getGroupExt0xEF0Info(enableGroupCodes: string[], bannedGroupCodes: string[], filter: GroupExt0xEF0InfoFilter, forceFetch: boolean):
|
getGroupExt0xEF0Info (enableGroupCodes: string[], bannedGroupCodes: string[], filter: GroupExt0xEF0InfoFilter, forceFetch: boolean):
|
||||||
Promise<GeneralCallResult & { result: { groupExtInfos: Map<string, unknown> } }>;
|
Promise<GeneralCallResult & { result: { groupExtInfos: Map<string, unknown>; }; }>;
|
||||||
|
|
||||||
kickMemberV2(param: KickMemberV2Req): Promise<GeneralCallResult>;
|
kickMemberV2 (param: KickMemberV2Req): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
quitGroupV2(param: { groupCode: string; needDeleteLocalMsg: boolean; }): Promise<GeneralCallResult>;
|
quitGroupV2 (param: { groupCode: string; needDeleteLocalMsg: boolean; }): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
getMemberCommonInfo(Req: {
|
getMemberCommonInfo (Req: {
|
||||||
groupCode: string,
|
groupCode: string,
|
||||||
startUin: string,
|
startUin: string,
|
||||||
identifyFlag: string,
|
identifyFlag: string,
|
||||||
@@ -54,39 +54,39 @@ export interface NodeIKernelGroupService {
|
|||||||
memberNum: number,
|
memberNum: number,
|
||||||
filterMethod: string,
|
filterMethod: string,
|
||||||
onlineFlag: string,
|
onlineFlag: string,
|
||||||
realSpecialTitleFlag: number
|
realSpecialTitleFlag: number;
|
||||||
}): Promise<unknown>;
|
}): Promise<unknown>;
|
||||||
|
|
||||||
getGroupMemberLevelInfo(groupCode: string): Promise<unknown>;
|
getGroupMemberLevelInfo (groupCode: string): Promise<unknown>;
|
||||||
|
|
||||||
getGroupInfoForJoinGroup(groupCode: string, needPrivilegeFlag: boolean, serviceType: number): Promise<unknown>;
|
getGroupInfoForJoinGroup (groupCode: string, needPrivilegeFlag: boolean, serviceType: number): Promise<unknown>;
|
||||||
|
|
||||||
getGroupHonorList(req: { groupCodes: Array<string> }): Promise<unknown>;
|
getGroupHonorList (req: { groupCodes: Array<string>; }): Promise<unknown>;
|
||||||
|
|
||||||
getUinByUids(uins: string[]): Promise<{
|
getUinByUids (uins: string[]): Promise<{
|
||||||
errCode: number,
|
errCode: number,
|
||||||
errMsg: string,
|
errMsg: string,
|
||||||
uins: Map<string, string>
|
uins: Map<string, string>;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
getUidByUins(uins: string[]): Promise<{
|
getUidByUins (uins: string[]): Promise<{
|
||||||
errCode: number,
|
errCode: number,
|
||||||
errMsg: string,
|
errMsg: string,
|
||||||
uids: Map<string, string>
|
uids: Map<string, string>;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
checkGroupMemberCache(arrayList: Array<string>): Promise<unknown>;
|
checkGroupMemberCache (arrayList: Array<string>): Promise<unknown>;
|
||||||
|
|
||||||
getGroupLatestEssenceList(groupCode: string): Promise<unknown>;
|
getGroupLatestEssenceList (groupCode: string): Promise<unknown>;
|
||||||
|
|
||||||
shareDigest(Req: {
|
shareDigest (Req: {
|
||||||
appId: string,
|
appId: string,
|
||||||
appType: number,
|
appType: number,
|
||||||
msgStyle: number,
|
msgStyle: number,
|
||||||
recvUin: string,
|
recvUin: string,
|
||||||
sendType: number,
|
sendType: number,
|
||||||
clientInfo: {
|
clientInfo: {
|
||||||
platform: number
|
platform: number;
|
||||||
},
|
},
|
||||||
richMsg: {
|
richMsg: {
|
||||||
usingArk: boolean,
|
usingArk: boolean,
|
||||||
@@ -94,122 +94,122 @@ export interface NodeIKernelGroupService {
|
|||||||
summary: string,
|
summary: string,
|
||||||
url: string,
|
url: string,
|
||||||
pictureUrl: string,
|
pictureUrl: string,
|
||||||
brief: string
|
brief: string;
|
||||||
}
|
};
|
||||||
}): Promise<unknown>;
|
}): Promise<unknown>;
|
||||||
|
|
||||||
isEssenceMsg(req: { groupCode: string, msgRandom: number, msgSeq: number }): Promise<unknown>;
|
isEssenceMsg (req: { groupCode: string, msgRandom: number, msgSeq: number; }): Promise<unknown>;
|
||||||
|
|
||||||
queryCachedEssenceMsg(req: { groupCode: string, msgRandom: number, msgSeq: number }): Promise<{ items: Array<unknown> }>;
|
queryCachedEssenceMsg (req: { groupCode: string, msgRandom: number, msgSeq: number; }): Promise<{ items: Array<unknown>; }>;
|
||||||
|
|
||||||
fetchGroupEssenceList(req: {
|
fetchGroupEssenceList (req: {
|
||||||
groupCode: string,
|
groupCode: string,
|
||||||
pageStart: number,
|
pageStart: number,
|
||||||
pageLimit: number
|
pageLimit: number;
|
||||||
}, Arg: unknown): Promise<unknown>;
|
}, Arg: string): Promise<unknown>;
|
||||||
|
|
||||||
getAllMemberList(groupCode: string, forceFetch: boolean): Promise<{
|
getAllMemberList (groupCode: string, forceFetch: boolean): Promise<{
|
||||||
errCode: number,
|
errCode: number,
|
||||||
errMsg: string,
|
errMsg: string,
|
||||||
result: {
|
result: {
|
||||||
ids: Array<{
|
ids: Array<{
|
||||||
uid: string,
|
uid: string,
|
||||||
index: number// 0
|
index: number;// 0
|
||||||
}>,
|
}>,
|
||||||
infos: Map<string, GroupMember>,
|
infos: Map<string, GroupMember>,
|
||||||
finish: true,
|
finish: true,
|
||||||
hasRobot: false
|
hasRobot: false;
|
||||||
}
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
setHeader(uid: string, path: string): Promise<GeneralCallResult>;
|
setHeader (uid: string, path: string): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
addKernelGroupListener(listener: NodeIKernelGroupListener): number;
|
addKernelGroupListener (listener: NodeIKernelGroupListener): number;
|
||||||
|
|
||||||
removeKernelGroupListener(listenerId: number): void;
|
removeKernelGroupListener (listenerId: number): void;
|
||||||
|
|
||||||
createMemberListScene(groupCode: string, scene: string): string;
|
createMemberListScene (groupCode: string, scene: string): string;
|
||||||
|
|
||||||
destroyMemberListScene(SceneId: string): void;
|
destroyMemberListScene (SceneId: string): void;
|
||||||
|
|
||||||
getNextMemberList(sceneId: string, groupMemberInfoListId: { index: number, uid: string } | undefined, num: number): Promise<{
|
getNextMemberList (sceneId: string, groupMemberInfoListId: { index: number, uid: string; } | undefined, num: number): Promise<{
|
||||||
errCode: number,
|
errCode: number,
|
||||||
errMsg: string,
|
errMsg: string,
|
||||||
result: { ids: string[], infos: Map<string, GroupMember>, finish: boolean, hasRobot: boolean }
|
result: { ids: string[], infos: Map<string, GroupMember>, finish: boolean, hasRobot: boolean; };
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
getPrevMemberList(): unknown;
|
getPrevMemberList (): unknown;
|
||||||
|
|
||||||
monitorMemberList(): unknown;
|
monitorMemberList (): unknown;
|
||||||
|
|
||||||
searchMember(sceneId: string, keywords: string[]): unknown;
|
searchMember (sceneId: string, keywords: string[]): unknown;
|
||||||
|
|
||||||
getMemberInfo(group_id: string, uids: string[], forceFetch: boolean): Promise<GeneralCallResult>;
|
getMemberInfo (group_id: string, uids: string[], forceFetch: boolean): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
kickMember(groupCode: string, memberUids: string[], refuseForever: boolean, kickReason: string): Promise<void>;
|
kickMember (groupCode: string, memberUids: string[], refuseForever: boolean, kickReason: string): Promise<void>;
|
||||||
|
|
||||||
modifyMemberRole(groupCode: string, uid: string, role: NTGroupMemberRole): void;
|
modifyMemberRole (groupCode: string, uid: string, role: NTGroupMemberRole): void;
|
||||||
|
|
||||||
modifyMemberCardName(groupCode: string, uid: string, cardName: string): void;
|
modifyMemberCardName (groupCode: string, uid: string, cardName: string): void;
|
||||||
|
|
||||||
getTransferableMemberInfo(groupCode: string): unknown;// 获取整个群的
|
getTransferableMemberInfo (groupCode: string): unknown;// 获取整个群的
|
||||||
|
|
||||||
transferGroup(uid: string): void;
|
transferGroup (uid: string): void;
|
||||||
|
|
||||||
getGroupList(force: boolean): Promise<GeneralCallResult>;
|
getGroupList (force: boolean): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
getGroupExtList(force: boolean): Promise<GeneralCallResult>;
|
getGroupExtList (force: boolean): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
getGroupDetailInfo(groupCode: string, groupInfoSource: GroupInfoSource): Promise<GeneralCallResult>;
|
getGroupDetailInfo (groupCode: string, groupInfoSource: GroupInfoSource): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
getMemberExtInfo(param: GroupExtParam): Promise<unknown>;// req
|
getMemberExtInfo (param: GroupExtParam): Promise<unknown>;// req
|
||||||
|
|
||||||
getGroupAllInfo(groupId: string, sourceId: number): Promise<unknown>;
|
getGroupAllInfo (groupId: string, sourceId: number): Promise<unknown>;
|
||||||
|
|
||||||
getDiscussExistInfo(): unknown;
|
getDiscussExistInfo (): unknown;
|
||||||
|
|
||||||
getGroupConfMember(): unknown;
|
getGroupConfMember (): unknown;
|
||||||
|
|
||||||
getGroupMsgMask(): unknown;
|
getGroupMsgMask (): unknown;
|
||||||
|
|
||||||
getGroupPortrait(): void;
|
getGroupPortrait (): void;
|
||||||
|
|
||||||
modifyGroupName(groupCode: string, groupName: string, isNormalMember: boolean): Promise<GeneralCallResult>;
|
modifyGroupName (groupCode: string, groupName: string, isNormalMember: boolean): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
modifyGroupRemark(groupCode: string, remark: string): Promise<GeneralCallResult>;
|
modifyGroupRemark (groupCode: string, remark: string): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
modifyGroupDetailInfo(groupCode: string, arg: unknown): void;
|
modifyGroupDetailInfo (groupCode: string, arg: unknown): void;
|
||||||
|
|
||||||
// 第二个参数在大多数情况为0 设置群成员权限 例如上传群文件权限和群成员付费/加入邀请加入时为8
|
// 第二个参数在大多数情况为0 设置群成员权限 例如上传群文件权限和群成员付费/加入邀请加入时为8
|
||||||
modifyGroupDetailInfoV2(param: GroupDetailInfoV2Param, arg: number): Promise<GeneralCallResult>;
|
modifyGroupDetailInfoV2 (param: GroupDetailInfoV2Param, arg: number): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
setGroupMsgMask(groupCode: string, arg: unknown): void;
|
setGroupMsgMask (groupCode: string, arg: unknown): void;
|
||||||
|
|
||||||
changeGroupShieldSettingTemp(groupCode: string, arg: unknown): void;
|
changeGroupShieldSettingTemp (groupCode: string, arg: unknown): void;
|
||||||
|
|
||||||
inviteToGroup(arg: unknown): void;
|
inviteToGroup (arg: unknown): void;
|
||||||
|
|
||||||
inviteMembersToGroup(args: unknown[]): void;
|
inviteMembersToGroup (args: unknown[]): void;
|
||||||
|
|
||||||
inviteMembersToGroupWithMsg(args: unknown): void;
|
inviteMembersToGroupWithMsg (args: unknown): void;
|
||||||
|
|
||||||
createGroup(arg: unknown): void;
|
createGroup (arg: unknown): void;
|
||||||
|
|
||||||
createGroupWithMembers(arg: unknown): void;
|
createGroupWithMembers (arg: unknown): void;
|
||||||
|
|
||||||
quitGroup(groupCode: string): void;
|
quitGroup (groupCode: string): void;
|
||||||
|
|
||||||
destroyGroup(groupCode: string): void;
|
destroyGroup (groupCode: string): void;
|
||||||
|
|
||||||
getSingleScreenNotifies(doubt: boolean, startSeq: string, count: number): Promise<GeneralCallResult>;
|
getSingleScreenNotifies (doubt: boolean, startSeq: string, count: number): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
clearGroupNotifies(groupCode: string): void;
|
clearGroupNotifies (groupCode: string): void;
|
||||||
|
|
||||||
getGroupNotifiesUnreadCount(doubt: boolean): Promise<GeneralCallResult>;
|
getGroupNotifiesUnreadCount (doubt: boolean): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
clearGroupNotifiesUnreadCount(doubt: boolean): void;
|
clearGroupNotifiesUnreadCount (doubt: boolean): void;
|
||||||
|
|
||||||
operateSysNotify(
|
operateSysNotify (
|
||||||
doubt: boolean,
|
doubt: boolean,
|
||||||
operateMsg: {
|
operateMsg: {
|
||||||
operateType: NTGroupRequestOperateTypes,
|
operateType: NTGroupRequestOperateTypes,
|
||||||
@@ -217,80 +217,277 @@ export interface NodeIKernelGroupService {
|
|||||||
seq: string,
|
seq: string,
|
||||||
type: GroupNotifyMsgType,
|
type: GroupNotifyMsgType,
|
||||||
groupCode: string,
|
groupCode: string,
|
||||||
postscript: string
|
postscript: string;
|
||||||
}
|
};
|
||||||
}): Promise<void>;
|
}): Promise<void>;
|
||||||
|
|
||||||
setTop(groupCode: string, isTop: boolean): void;
|
setTop (groupCode: string, isTop: boolean): void;
|
||||||
|
|
||||||
getGroupBulletin(groupCode: string): unknown;
|
getGroupBulletin (groupCode: string): unknown;
|
||||||
|
|
||||||
deleteGroupBulletin(groupCode: string, seq: string, noticeId: string): void;
|
deleteGroupBulletin (groupCode: string, seq: string, noticeId: string): void;
|
||||||
|
|
||||||
publishGroupBulletin(groupCode: string, pskey: string, data: unknown): Promise<GeneralCallResult>;
|
publishGroupBulletin (groupCode: string, pskey: string, data: unknown): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
publishInstructionForNewcomers(groupCode: string, arg: unknown): void;
|
publishInstructionForNewcomers (groupCode: string, arg: unknown): void;
|
||||||
|
|
||||||
uploadGroupBulletinPic(groupCode: string, pskey: string, imagePath: string): Promise<GeneralCallResult & {
|
uploadGroupBulletinPic (groupCode: string, pskey: string, imagePath: string): Promise<GeneralCallResult & {
|
||||||
errCode: number;
|
errCode: number;
|
||||||
picInfo?: {
|
picInfo?: {
|
||||||
id: string,
|
id: string,
|
||||||
width: number,
|
width: number,
|
||||||
height: number
|
height: number;
|
||||||
}
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
downloadGroupBulletinRichMedia(groupCode: string): unknown;
|
downloadGroupBulletinRichMedia (groupCode: string): unknown;
|
||||||
|
|
||||||
getGroupBulletinList(groupCode: string): unknown;
|
getGroupBulletinList (groupCode: string): unknown;
|
||||||
|
|
||||||
getGroupStatisticInfo(groupCode: string): unknown;
|
getGroupStatisticInfo (groupCode: string): unknown;
|
||||||
|
|
||||||
getGroupRemainAtTimes(groupCode: string): Promise<Omit<GeneralCallResult, 'result'> & {
|
getGroupRemainAtTimes (groupCode: string): Promise<Omit<GeneralCallResult, 'result'> & {
|
||||||
errCode: number,
|
errCode: number,
|
||||||
atInfo: {
|
atInfo: {
|
||||||
canAtAll: boolean
|
canAtAll: boolean;
|
||||||
RemainAtAllCountForUin: number
|
RemainAtAllCountForUin: number;
|
||||||
RemainAtAllCountForGroup: number
|
RemainAtAllCountForGroup: number;
|
||||||
atTimesMsg: string
|
atTimesMsg: string;
|
||||||
canNotAtAllMsg: ''
|
canNotAtAllMsg: '';
|
||||||
}
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
getJoinGroupNoVerifyFlag(groupCode: string): unknown;
|
getJoinGroupNoVerifyFlag (groupCode: string): unknown;
|
||||||
|
|
||||||
getGroupArkInviteState(groupCode: string): unknown;
|
getGroupArkInviteState (groupCode: string): unknown;
|
||||||
|
|
||||||
reqToJoinGroup(groupCode: string, arg: unknown): void;
|
reqToJoinGroup (groupCode: string, arg: unknown): void;
|
||||||
|
|
||||||
setGroupShutUp(groupCode: string, shutUp: boolean): Promise<GeneralCallResult>;
|
setGroupShutUp (groupCode: string, shutUp: boolean): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
getGroupShutUpMemberList(groupCode: string): Promise<GeneralCallResult>;
|
getGroupShutUpMemberList (groupCode: string): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
setMemberShutUp(groupCode: string, memberTimes: { uid: string, timeStamp: number }[]): Promise<GeneralCallResult>;
|
setMemberShutUp (groupCode: string, memberTimes: { uid: string, timeStamp: number; }[]): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
getGroupRecommendContactArkJson(groupCode: string): Promise<GeneralCallResult & { arkJson: string }>;
|
getGroupRecommendContactArkJson (groupCode: string): Promise<GeneralCallResult & { arkJson: string; }>;
|
||||||
|
|
||||||
getJoinGroupLink(param: {
|
getJoinGroupLink (param: {
|
||||||
groupCode: string,
|
groupCode: string,
|
||||||
srcId: number, // 73
|
srcId: number, // 73
|
||||||
needShortUrl: boolean, // true
|
needShortUrl: boolean, // true
|
||||||
additionalParam: string// ''
|
additionalParam: string;// ''
|
||||||
}): Promise<GeneralCallResult & { url?: string }>;
|
}): Promise<GeneralCallResult & { url?: string; }>;
|
||||||
|
|
||||||
modifyGroupExtInfo(groupCode: string, arg: unknown): void;
|
modifyGroupExtInfo (groupCode: string, arg: unknown): void;
|
||||||
|
|
||||||
addGroupEssence(param: {
|
addGroupEssence (param: {
|
||||||
groupCode: string
|
groupCode: string;
|
||||||
msgRandom: number,
|
msgRandom: number,
|
||||||
msgSeq: number
|
msgSeq: number;
|
||||||
}): Promise<unknown>;
|
}): Promise<unknown>;
|
||||||
|
|
||||||
removeGroupEssence(param: {
|
removeGroupEssence (param: {
|
||||||
groupCode: string
|
groupCode: string;
|
||||||
msgRandom: number,
|
msgRandom: number,
|
||||||
msgSeq: number
|
msgSeq: number;
|
||||||
}): Promise<unknown>;
|
}): Promise<unknown>;
|
||||||
|
|
||||||
isNull(): boolean;
|
isNull (): boolean;
|
||||||
|
|
||||||
|
// --- Methods from IDA binary analysis ---
|
||||||
|
clearGroupNotifyLocalUnreadCount (groupCode: string, arg: number): unknown;
|
||||||
|
|
||||||
|
getCardAppList (groupCode: string, arg: boolean): unknown;
|
||||||
|
|
||||||
|
getGroupBulletinDetail (arg1: string, arg2: string, arg3: string, arg4: boolean): unknown;
|
||||||
|
|
||||||
|
getGroupBulletinReadUsers (arg1: string, arg2: string, arg3: string, arg4: number, arg5: number, arg6: number): unknown;
|
||||||
|
|
||||||
|
getGroupDetailInfoByFilter (arg1: unknown, arg2: number, arg3: number, arg4: boolean): unknown;
|
||||||
|
|
||||||
|
getGroupDetailInfoForMqq (arg1: string, arg2: number, arg3: number, arg4: boolean): unknown;
|
||||||
|
|
||||||
|
getMemberInfoForMqq (arg1: string, arg2: Array<unknown>[], arg3: boolean): unknown;
|
||||||
|
|
||||||
|
getMemberInfoForMqqV2 (arg1: string, arg2: Array<unknown>[], arg3: boolean, arg4: string): unknown;
|
||||||
|
|
||||||
|
getRecGroups (arg1: string, arg2: unknown, arg3: string): unknown;
|
||||||
|
|
||||||
|
getSingleScreenNotifiesV2 (arg1: boolean, arg2: string, arg3: number, arg4: number): unknown;
|
||||||
|
|
||||||
|
modifyWxNotifyStatus (arg1: string, arg2: number): unknown;
|
||||||
|
|
||||||
|
operateSpecialFocus (arg1: string, arg2: Array<unknown>[], arg3: number): unknown;
|
||||||
|
|
||||||
|
remindGroupBulletinRead (arg1: string, arg2: string, arg3: string): unknown;
|
||||||
|
|
||||||
|
transferGroupV2 (arg1: string, arg2: string, arg3: string): unknown;
|
||||||
|
|
||||||
|
operateSysNotifyV2 (arg1: unknown, arg2: unknown): Promise<unknown>;
|
||||||
|
|
||||||
|
getAllMemberListV2 (groupCode: string, arg: unknown): unknown;
|
||||||
|
|
||||||
|
createGroupV2 (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
modifyGroupExtInfoV2 (groupExtInfo: GroupExtInfo, groupExtFilter: GroupExtFilter): Promise<GeneralCallResult & {
|
||||||
|
result: { groupCode: string, result: number; };
|
||||||
|
}>;
|
||||||
|
|
||||||
|
modifyGroupDetailInfoV2 (param: GroupDetailInfoV2Param, arg: number): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
|
setGroupMsgMaskV2 (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupSquareRedpointInfo (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupSquareHomeHead (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getCapsuleApp (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getCapsuleAppPro (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getMemberInfoCache (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupSecLevelInfo (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getSubGroupInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getSwitchStatusForEssenceMsg (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getTeamUpDetail (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getTeamUpList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getTeamUpMembers (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getTeamUpTemplateList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getTopicPage (arg1: string, arg2: string, arg3: string, arg4: string): unknown;
|
||||||
|
|
||||||
|
getTopicRecall (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getWxNotifyStatus (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupPayToJoinStatus (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupSeqAndJoinTimeForGrayTips (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupTagRecords (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupBindGuilds (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupFlagForThirdApp (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupMsgLimitFreq (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupMedalList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupDBVersion (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupInviteNoAuthLimitNum (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getAIOBindGuildInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getAppCenter (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getAICommonVoice (arg: unknown): unknown;
|
||||||
|
|
||||||
|
groupBlacklistDelApply (arg: unknown): unknown;
|
||||||
|
|
||||||
|
groupBlacklistGetAllApply (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchGroupNotify (arg: unknown): unknown;
|
||||||
|
|
||||||
|
queryJoinGroupCanNoVerify (arg: unknown): unknown;
|
||||||
|
|
||||||
|
halfScreenPullNotice (arg: unknown): unknown;
|
||||||
|
|
||||||
|
halfScreenReportClick (arg: unknown): unknown;
|
||||||
|
|
||||||
|
joinGroup (arg: unknown): unknown;
|
||||||
|
|
||||||
|
listAllAIVoice (arg: unknown): unknown;
|
||||||
|
|
||||||
|
miniAppGetGroupInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
postTeamUp (arg: unknown): unknown;
|
||||||
|
|
||||||
|
queryAIOBindGuild (arg: unknown): unknown;
|
||||||
|
|
||||||
|
removeGroupFromGroupList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
saveAIVoice (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setActiveExtGroup (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setAIOBindGuild (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setCapsuleSwitch (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setGroupAppList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setGroupGeoInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setGroupRelationToGuild (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setRcvJoinVerifyMsg (arg: unknown): unknown;
|
||||||
|
|
||||||
|
teamUpCreateGroup (arg: unknown): unknown;
|
||||||
|
|
||||||
|
teamUpInviteToGroup (arg: unknown): unknown;
|
||||||
|
|
||||||
|
teamUpRequestToJoin (arg: unknown): unknown;
|
||||||
|
|
||||||
|
teamUpSubmitDeadline (arg: unknown): unknown;
|
||||||
|
|
||||||
|
topicFeedback (arg: unknown): unknown;
|
||||||
|
|
||||||
|
topicReport (arg: unknown): unknown;
|
||||||
|
|
||||||
|
shareTopic (arg: unknown): unknown;
|
||||||
|
|
||||||
|
unbindAllGuilds (arg: unknown): unknown;
|
||||||
|
|
||||||
|
updateGroupInfoByMqq (arg: unknown): unknown;
|
||||||
|
|
||||||
|
updateMemberInfoByMqq (arg: unknown): unknown;
|
||||||
|
|
||||||
|
updateTeamUp (arg: unknown): unknown;
|
||||||
|
|
||||||
|
applyTeamUp (arg: unknown): unknown;
|
||||||
|
|
||||||
|
deleteTeamUp (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getFindPageRecommendGroup (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getTransferableMemberInfo (groupCode: string): unknown;
|
||||||
|
|
||||||
|
createGroupProfileShare (arg: unknown): unknown;
|
||||||
|
|
||||||
|
destroyMemberListScene (sceneId: string): void;
|
||||||
|
|
||||||
|
clearGroupSquareRedpointCache (arg: unknown): unknown;
|
||||||
|
|
||||||
|
checkGroupMemberCache (arrayList: Array<string>): Promise<unknown>;
|
||||||
|
|
||||||
|
cleanCapsuleCache (arg: unknown): unknown;
|
||||||
|
|
||||||
|
downloadGroupBulletinRichMedia (groupCode: string): unknown;
|
||||||
|
|
||||||
|
kickMemberV2 (param: KickMemberV2Req): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
|
destroyGroupV2 (arg: unknown): unknown;
|
||||||
|
|
||||||
|
quitGroupV2 (param: { groupCode: string; needDeleteLocalMsg: boolean; }): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
|
inviteToGroupV2 (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupMsgMask (): unknown;
|
||||||
|
|
||||||
|
batchQueryCachedGroupDetailInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupMemberLevelInfo (groupCode: string): Promise<unknown>;
|
||||||
|
|
||||||
|
getIllegalMemberList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGroupRecommendContactArkJsonToWechat (arg: unknown): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
export interface NodeIKernelGroupTabService {
|
||||||
|
addListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeListener (listenerId: number): void;
|
||||||
|
|
||||||
|
getGroupTab (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
15
packages/napcat-core/services/NodeIKernelHandOffService.ts
Normal file
15
packages/napcat-core/services/NodeIKernelHandOffService.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
export interface NodeIKernelHandOffService {
|
||||||
|
addKernelHandOffListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelHandOffListener (listenerId: number): void;
|
||||||
|
|
||||||
|
changeHandOffActivities (arg: unknown): unknown;
|
||||||
|
|
||||||
|
deleteRecentHandOffActivities (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getHandOffActivities (arg: unknown): unknown;
|
||||||
|
|
||||||
|
sendCapsulePanelActivities (arg1: string, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
export interface NodeIKernelLiteBusinessService {
|
||||||
|
addListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeListener (listenerId: number): void;
|
||||||
|
|
||||||
|
clearLiteBusiness (arg1: string, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
clickLiteAction (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
exposeLiteAction (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getLiteBusiness (arg1: string, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getRevealTofuAuthority (arg: unknown): unknown;
|
||||||
|
|
||||||
|
recentRevealExposure (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
7
packages/napcat-core/services/NodeIKernelLockService.ts
Normal file
7
packages/napcat-core/services/NodeIKernelLockService.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
export interface NodeIKernelLockService {
|
||||||
|
addKernelLockListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelLockListener (listenerId: number): void;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -29,10 +29,11 @@ export interface PasswordLoginArgType {
|
|||||||
uin: string;
|
uin: string;
|
||||||
passwordMd5: string;// passwMD5
|
passwordMd5: string;// passwMD5
|
||||||
step: number;// 猜测是需要二次认证 参数 一次为0
|
step: number;// 猜测是需要二次认证 参数 一次为0
|
||||||
newDeviceLoginSig: string;
|
newDeviceLoginSig: Uint8Array;
|
||||||
proofWaterSig: string;
|
proofWaterSig: Uint8Array;
|
||||||
proofWaterRand: string;
|
proofWaterRand: Uint8Array;
|
||||||
proofWaterSid: string;
|
proofWaterSid: Uint8Array;
|
||||||
|
unusualDeviceCheckSig: Uint8Array;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LoginListItem {
|
export interface LoginListItem {
|
||||||
@@ -63,7 +64,9 @@ export interface QuickLoginResult {
|
|||||||
export interface NodeIKernelLoginService {
|
export interface NodeIKernelLoginService {
|
||||||
getMsfStatus: () => number;
|
getMsfStatus: () => number;
|
||||||
|
|
||||||
setLoginMiscData (arg0: string, value: string): unknown;
|
setLoginMiscData (key: string, value: string): unknown;
|
||||||
|
|
||||||
|
getLoginMiscData (key: string): Promise<GeneralCallResult & { value: string; }>;
|
||||||
|
|
||||||
getMachineGuid (): string;
|
getMachineGuid (): string;
|
||||||
|
|
||||||
@@ -73,14 +76,12 @@ export interface NodeIKernelLoginService {
|
|||||||
|
|
||||||
addKernelLoginListener (listener: NodeIKernelLoginListener): number;
|
addKernelLoginListener (listener: NodeIKernelLoginListener): number;
|
||||||
|
|
||||||
removeKernelLoginListener (listener: number): void;
|
removeKernelLoginListener (listenerId: number): void;
|
||||||
|
|
||||||
initConfig (config: LoginInitConfig): void;
|
initConfig (config: LoginInitConfig): void;
|
||||||
|
|
||||||
getLoginMiscData (data: string): Promise<GeneralCallResult & { value: string; }>;
|
|
||||||
|
|
||||||
getLoginList (): Promise<{
|
getLoginList (): Promise<{
|
||||||
result: number, // 0是ok
|
result: number,
|
||||||
LocalLoginInfoList: LoginListItem[];
|
LocalLoginInfoList: LoginListItem[];
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
@@ -89,4 +90,32 @@ export interface NodeIKernelLoginService {
|
|||||||
passwordLogin (param: PasswordLoginArgType): Promise<QuickLoginResult>;
|
passwordLogin (param: PasswordLoginArgType): Promise<QuickLoginResult>;
|
||||||
|
|
||||||
getQRCodePicture (): boolean;
|
getQRCodePicture (): boolean;
|
||||||
|
|
||||||
|
destroy (): unknown;
|
||||||
|
|
||||||
|
cancel (): unknown;
|
||||||
|
|
||||||
|
abortPolling (): unknown;
|
||||||
|
|
||||||
|
startPolling (): unknown;
|
||||||
|
|
||||||
|
deleteLoginInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isHasLoginInfo (uin: string): boolean;
|
||||||
|
|
||||||
|
loadNoLoginUnitedConfig (arg: unknown): unknown;
|
||||||
|
|
||||||
|
loginUnusualDevice (arg: unknown): unknown;
|
||||||
|
|
||||||
|
registerUnitedConfigPushGroupList (groupList: unknown): unknown;
|
||||||
|
|
||||||
|
resetLoginInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setAutoLogin (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setRemerberPwd (remember: boolean): unknown;
|
||||||
|
|
||||||
|
online (): unknown;
|
||||||
|
|
||||||
|
offline (): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ enum ProxyType {
|
|||||||
}
|
}
|
||||||
export interface NodeIKernelMSFService {
|
export interface NodeIKernelMSFService {
|
||||||
getServerTime (): string;
|
getServerTime (): string;
|
||||||
|
getMsfStatus (): number;
|
||||||
|
online (): unknown;
|
||||||
|
offline (): unknown;
|
||||||
setNetworkProxy (param: {
|
setNetworkProxy (param: {
|
||||||
userName: string,
|
userName: string,
|
||||||
userPwd: string,
|
userPwd: string,
|
||||||
@@ -50,4 +53,5 @@ export interface NodeIKernelMSFService {
|
|||||||
accountType: number,
|
accountType: number,
|
||||||
transInfoMap: Map<string, unknown>;
|
transInfoMap: Map<string, unknown>;
|
||||||
}): Promise<Buffer>;
|
}): Promise<Buffer>;
|
||||||
|
onMsfPushForTesting (arg1: unknown, arg2: unknown): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
export interface NodeIKernelMiniAppService {
|
||||||
|
addKernelMiniAppListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelMiniAppListener (listenerId: number): void;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -1,27 +1,27 @@
|
|||||||
export interface NodeIKernelMsgBackupService {
|
export interface NodeIKernelMsgBackupService {
|
||||||
addKernelMsgBackupListener(listener: unknown): number;
|
addKernelMsgBackupListener (listener: unknown): number;
|
||||||
|
|
||||||
removeKernelMsgBackupListener(listenerId: number): void;
|
removeKernelMsgBackupListener (listenerId: number): void;
|
||||||
|
|
||||||
getMsgBackupLocation(...args: unknown[]): unknown;// needs 0 arguments
|
getMsgBackupLocation (): unknown;// needs 0 arguments
|
||||||
|
|
||||||
setMsgBackupLocation(...args: unknown[]): unknown;// needs 1 arguments
|
setMsgBackupLocation (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
requestMsgBackup(...args: unknown[]): unknown;// needs 0 arguments
|
requestMsgBackup (): unknown;// needs 0 arguments
|
||||||
|
|
||||||
requestMsgRestore(...args: unknown[]): unknown;// needs 1 arguments
|
requestMsgRestore (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
requestMsgMigrate(...args: unknown[]): unknown;// needs 1 arguments
|
requestMsgMigrate (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
getLocalStorageBackup(...args: unknown[]): unknown;// needs 0 arguments
|
getLocalStorageBackup (): unknown;// needs 0 arguments
|
||||||
|
|
||||||
deleteLocalBackup(...args: unknown[]): unknown;// needs 1 arguments
|
deleteLocalBackup (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
clearCache(...args: unknown[]): unknown;// needs 0 arguments
|
clearCache (): unknown;// needs 0 arguments
|
||||||
|
|
||||||
start(...args: unknown[]): unknown;// needs 1 arguments
|
start (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
stop(...args: unknown[]): unknown;// needs 1 arguments
|
stop (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
pause(...args: unknown[]): unknown;// needs 2 arguments
|
pause (arg1: unknown, arg2: unknown): unknown;// needs 2 arguments
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { ElementType, MessageElement, Peer, RawMessage, FileElement, SendMessageElement } from '@/napcat-core/types';
|
import { ElementType, MessageElement, Peer, RawMessage, FileElement, SendMessageElement, AvRecordElement, TofuRecordElement } from '@/napcat-core/types';
|
||||||
import { NodeIKernelMsgListener } from '@/napcat-core/listeners/NodeIKernelMsgListener';
|
import { NodeIKernelMsgListener } from '@/napcat-core/listeners/NodeIKernelMsgListener';
|
||||||
import { GeneralCallResult } from '@/napcat-core/services/common';
|
import { GeneralCallResult } from '@/napcat-core/services/common';
|
||||||
import { MsgReqType, QueryMsgsParams, TmpChatInfoApi } from '@/napcat-core/types/msg';
|
import { MsgReqType, QueryMsgsParams, TmpChatInfoApi, MsgTypeFilter, MsgIdentity, SgrpStreamParams, GrayTipJsonInfo, ForwardFileInfo, LocalGrayTipInfo, TokenInfo, BackGroundInfo } from '@/napcat-core/types/msg';
|
||||||
|
|
||||||
export interface NodeIKernelMsgService {
|
export interface NodeIKernelMsgService {
|
||||||
buildMultiForwardMsg (req: { srcMsgIds: Array<string>, srcContact: Peer; }): Promise<GeneralCallResult & { rspInfo: { elements: unknown; }; }>;
|
buildMultiForwardMsg (req: { srcMsgIds: Array<string>, srcContact: Peer; }): Promise<GeneralCallResult & { rspInfo: { elements: unknown; }; }>;
|
||||||
@@ -10,21 +10,21 @@ export interface NodeIKernelMsgService {
|
|||||||
|
|
||||||
addKernelMsgListener (nodeIKernelMsgListener: NodeIKernelMsgListener): number;
|
addKernelMsgListener (nodeIKernelMsgListener: NodeIKernelMsgListener): number;
|
||||||
|
|
||||||
sendMsg (msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<unknown, unknown>): Promise<GeneralCallResult>;
|
sendMsg (msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<number, unknown>): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
recallMsg (peer: Peer, msgIds: string[]): Promise<GeneralCallResult>;
|
recallMsg (peer: Peer, msgIds: string[]): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
addKernelMsgImportToolListener (arg: unknown): unknown;
|
addKernelMsgImportToolListener (listener: unknown): string;
|
||||||
|
|
||||||
removeKernelMsgListener (args: unknown): unknown;
|
removeKernelMsgListener (listenerId: string): void;
|
||||||
|
|
||||||
addKernelTempChatSigListener (...args: unknown[]): unknown;
|
addKernelTempChatSigListener (listener: unknown): string;
|
||||||
|
|
||||||
removeKernelTempChatSigListener (...args: unknown[]): unknown;
|
removeKernelTempChatSigListener (listenerId: string): void;
|
||||||
|
|
||||||
setAutoReplyTextList (AutoReplyText: Array<unknown>, i2: number): unknown;
|
setAutoReplyTextList (AutoReplyText: Array<unknown>, i2: number): unknown;
|
||||||
|
|
||||||
getAutoReplyTextList (...args: unknown[]): unknown;
|
getAutoReplyTextList (): unknown;
|
||||||
|
|
||||||
getOnLineDev (): void;
|
getOnLineDev (): void;
|
||||||
|
|
||||||
@@ -52,85 +52,85 @@ export interface NodeIKernelMsgService {
|
|||||||
|
|
||||||
downloadOnlineStatusCommonByUrl (arg0: string, arg1: string): unknown;
|
downloadOnlineStatusCommonByUrl (arg0: string, arg1: string): unknown;
|
||||||
|
|
||||||
setToken (arg: unknown): unknown;
|
setToken (tokenInfo: TokenInfo): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
switchForeGround (): unknown;
|
switchForeGround (): unknown;
|
||||||
|
|
||||||
switchBackGround (arg: unknown): unknown;
|
switchBackGround (info: BackGroundInfo): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
setTokenForMqq (token: string): unknown;
|
setTokenForMqq (token: string): unknown;
|
||||||
|
|
||||||
switchForeGroundForMqq (...args: unknown[]): unknown;
|
switchForeGroundForMqq (data: string | Uint8Array): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
switchBackGroundForMqq (...args: unknown[]): unknown;
|
switchBackGroundForMqq (data: string | Uint8Array): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
getMsgSetting (...args: unknown[]): unknown;
|
getMsgSetting (): unknown;
|
||||||
|
|
||||||
setMsgSetting (...args: unknown[]): unknown;
|
setMsgSetting (setting: unknown): unknown;
|
||||||
|
|
||||||
addSendMsg (...args: unknown[]): unknown;
|
addSendMsg (msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<number, unknown>): unknown;
|
||||||
|
|
||||||
cancelSendMsg (peer: Peer, msgId: string): Promise<void>;
|
cancelSendMsg (peer: Peer, msgId: string): Promise<void>;
|
||||||
|
|
||||||
switchToOfflineSendMsg (peer: Peer, MsgId: string): unknown;
|
switchToOfflineSendMsg (peer: Peer, MsgId: string): unknown;
|
||||||
|
|
||||||
reqToOfflineSendMsg (...args: unknown[]): unknown;
|
reqToOfflineSendMsg (peer: Peer, msgId: string): unknown;
|
||||||
|
|
||||||
refuseReceiveOnlineFileMsg (peer: Peer, MsgId: string): unknown;
|
refuseReceiveOnlineFileMsg (peer: Peer, MsgId: string): unknown;
|
||||||
|
|
||||||
resendMsg (peer: Peer, msgId: string): Promise<void>;
|
resendMsg (peer: Peer, msgId: string): Promise<void>;
|
||||||
|
|
||||||
recallMsg (...args: unknown[]): unknown;
|
reeditRecallMsg (peer: Peer, msgId: string): unknown;
|
||||||
|
|
||||||
reeditRecallMsg (...args: unknown[]): unknown;
|
forwardMsg (msgIds: string[], peer: Peer, dstPeers: Peer[], commentElements: unknown): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
forwardMsg (...args: unknown[]): Promise<GeneralCallResult>;
|
forwardMsgWithComment (msgIds: string[], srcContact: Peer, dstContacts: Peer[], commentElements: Array<unknown>, arg5: unknown): unknown;
|
||||||
|
|
||||||
forwardMsgWithComment (...args: unknown[]): unknown;
|
forwardSubMsgWithComment (msgIds: string[], subMsgIds: string[], srcContact: Peer, dstContacts: Peer[], commentElements: Array<unknown>, arg6: unknown): unknown;
|
||||||
|
|
||||||
forwardSubMsgWithComment (...args: unknown[]): unknown;
|
forwardRichMsgInVist (richMsgInfos: Array<unknown>, dstContacts: Peer[]): unknown;
|
||||||
|
|
||||||
forwardRichMsgInVist (...args: unknown[]): unknown;
|
forwardFile (fileInfo: ForwardFileInfo, peer: Peer): unknown;
|
||||||
|
|
||||||
forwardFile (...args: unknown[]): unknown;
|
multiForwardMsg (peer: Peer, srcContact: Peer, msgIds: string[]): unknown;
|
||||||
|
|
||||||
multiForwardMsg (...args: unknown[]): unknown;
|
multiForwardMsgWithComment (msgInfos: Array<unknown>, srcContact: Peer, dstContact: Peer, commentElements: Array<unknown>, arg5: unknown): unknown;
|
||||||
|
|
||||||
multiForwardMsgWithComment (...args: unknown[]): unknown;
|
deleteRecallMsg (peer: Peer, msgId: string): unknown;
|
||||||
|
|
||||||
deleteRecallMsg (...args: unknown[]): unknown;
|
deleteRecallMsgForLocal (peer: Peer, msgId: string): unknown;
|
||||||
|
|
||||||
deleteRecallMsgForLocal (...args: unknown[]): unknown;
|
addLocalGrayTipMsg (peer: Peer, grayTipInfo: LocalGrayTipInfo, isUnread: boolean): unknown;
|
||||||
|
|
||||||
addLocalGrayTipMsg (...args: unknown[]): unknown;
|
addLocalJsonGrayTipMsg (arg1: Peer, arg2: GrayTipJsonInfo, arg3: boolean, arg4: boolean): unknown;
|
||||||
|
|
||||||
addLocalJsonGrayTipMsg (...args: unknown[]): unknown;
|
addLocalJsonGrayTipMsgExt (arg1: Peer, arg2: MsgIdentity, arg3: GrayTipJsonInfo, arg4: boolean, arg5: boolean): unknown;
|
||||||
|
|
||||||
addLocalJsonGrayTipMsgExt (...args: unknown[]): unknown;
|
IsLocalJsonTipValid (tipType: number): boolean;
|
||||||
|
|
||||||
IsLocalJsonTipValid (...args: unknown[]): unknown;
|
addLocalAVRecordMsg (peer: Peer, avRecord: AvRecordElement): unknown;
|
||||||
|
|
||||||
addLocalAVRecordMsg (...args: unknown[]): unknown;
|
addLocalTofuRecordMsg (peer: Peer, tofuRecord: TofuRecordElement): unknown;
|
||||||
|
|
||||||
addLocalTofuRecordMsg (...args: unknown[]): unknown;
|
|
||||||
|
|
||||||
addLocalRecordMsg (Peer: Peer, msgId: string, ele: MessageElement, attr: Array<unknown> | number, front: boolean): Promise<unknown>;
|
addLocalRecordMsg (Peer: Peer, msgId: string, ele: MessageElement, attr: Array<unknown> | number, front: boolean): Promise<unknown>;
|
||||||
|
|
||||||
|
addLocalRecordMsgWithExtInfos (peer: Peer, msgId: string, extInfos: unknown): unknown;
|
||||||
|
|
||||||
deleteMsg (Peer: Peer, msgIds: Array<string>): Promise<unknown>;
|
deleteMsg (Peer: Peer, msgIds: Array<string>): Promise<unknown>;
|
||||||
|
|
||||||
updateElementExtBufForUI (...args: unknown[]): unknown;
|
updateElementExtBufForUI (arg1: Peer, arg2: string, arg3: string, arg4: string | Uint8Array): unknown;
|
||||||
|
|
||||||
updateMsgRecordExtPbBufForUI (...args: unknown[]): unknown;
|
updateMsgRecordExtPbBufForUI (arg1: Peer, arg2: string, arg3: unknown): unknown;
|
||||||
|
|
||||||
startMsgSync (...args: unknown[]): unknown;
|
startMsgSync (): unknown;
|
||||||
|
|
||||||
startGuildMsgSync (...args: unknown[]): unknown;
|
startGuildMsgSync (): unknown;
|
||||||
|
|
||||||
isGuildChannelSync (...args: unknown[]): unknown;
|
isGuildChannelSync (): unknown;
|
||||||
|
|
||||||
getMsgUniqueId (UniqueId: string): string;
|
getMsgUniqueId (UniqueId: string): string;
|
||||||
|
|
||||||
isMsgMatched (...args: unknown[]): unknown;
|
isMsgMatched (matchInfo: unknown): unknown;
|
||||||
|
|
||||||
getOnlineFileMsgs (peer: Peer): Promise<GeneralCallResult & {
|
getOnlineFileMsgs (peer: Peer): Promise<GeneralCallResult & {
|
||||||
msgList: {
|
msgList: {
|
||||||
@@ -147,7 +147,7 @@ export interface NodeIKernelMsgService {
|
|||||||
}[]; // 一大坨,懒得写
|
}[]; // 一大坨,懒得写
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
getAllOnlineFileMsgs (...args: unknown[]): unknown;
|
getAllOnlineFileMsgs (): unknown;
|
||||||
|
|
||||||
getLatestDbMsgs (peer: Peer, cnt: number): Promise<GeneralCallResult & {
|
getLatestDbMsgs (peer: Peer, cnt: number): Promise<GeneralCallResult & {
|
||||||
msgList: RawMessage[];
|
msgList: RawMessage[];
|
||||||
@@ -171,7 +171,7 @@ export interface NodeIKernelMsgService {
|
|||||||
}>;
|
}>;
|
||||||
|
|
||||||
// @deprecated
|
// @deprecated
|
||||||
getMsgsWithMsgTimeAndClientSeqForC2C (...args: unknown[]): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
getMsgsWithMsgTimeAndClientSeqForC2C (peer: Peer, arg2: string, arg3: string, arg4: number, arg5: boolean, arg6: boolean, arg7: boolean): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
||||||
|
|
||||||
getMsgsWithStatus (params: {
|
getMsgsWithStatus (params: {
|
||||||
peer: Peer;
|
peer: Peer;
|
||||||
@@ -186,6 +186,7 @@ export interface NodeIKernelMsgService {
|
|||||||
getMsgsBySeqRange (peer: Peer, startSeq: string, endSeq: string): Promise<GeneralCallResult & {
|
getMsgsBySeqRange (peer: Peer, startSeq: string, endSeq: string): Promise<GeneralCallResult & {
|
||||||
msgList: RawMessage[];
|
msgList: RawMessage[];
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
// @deprecated
|
// @deprecated
|
||||||
getMsgsBySeqAndCount (peer: Peer, seq: string, count: number, desc: boolean, isReverseOrder: boolean): Promise<GeneralCallResult & {
|
getMsgsBySeqAndCount (peer: Peer, seq: string, count: number, desc: boolean, isReverseOrder: boolean): Promise<GeneralCallResult & {
|
||||||
msgList: RawMessage[];
|
msgList: RawMessage[];
|
||||||
@@ -211,19 +212,19 @@ export interface NodeIKernelMsgService {
|
|||||||
|
|
||||||
getSourceOfReplyMsgByClientSeqAndTime (peer: Peer, clientSeq: string, time: string, replyMsgId: string): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
getSourceOfReplyMsgByClientSeqAndTime (peer: Peer, clientSeq: string, time: string, replyMsgId: string): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
||||||
|
|
||||||
getMsgsByTypeFilter (peer: Peer, msgId: string, cnt: unknown, queryOrder: boolean, typeFilter: {
|
getMsgsByTypeFilter (peer: Peer, msgId: string, cnt: Array<unknown>, queryOrder: boolean, typeFilter: {
|
||||||
type: number,
|
type: number,
|
||||||
subtype: Array<number>;
|
subtype: Array<number>;
|
||||||
}): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
}): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
||||||
|
|
||||||
getMsgsByTypeFilters (peer: Peer, msgId: string, cnt: unknown, queryOrder: boolean, typeFilters: Array<{
|
getMsgsByTypeFilters (peer: Peer, msgId: string, cnt: number, queryOrder: boolean, typeFilters: Array<{
|
||||||
type: number,
|
type: number,
|
||||||
subtype: Array<number>;
|
subtype: Array<number>;
|
||||||
}>): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
}>): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
||||||
|
|
||||||
getMsgWithAbstractByFilterParam (...args: unknown[]): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
getMsgWithAbstractByFilterParam (arg1: Peer, arg2: string, arg3: string, arg4: number, arg5: MsgTypeFilter): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
||||||
|
|
||||||
queryMsgsWithFilter (...args: unknown[]): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
queryMsgsWithFilter (msgId: string, msgTime: string, param: QueryMsgsParams): Promise<GeneralCallResult & { msgList: RawMessage[]; }>;
|
||||||
|
|
||||||
// queryMsgsWithFilterVer2(MsgId: string, MsgTime: string, param: QueryMsgsParams): Promise<unknown>;
|
// queryMsgsWithFilterVer2(MsgId: string, MsgTime: string, param: QueryMsgsParams): Promise<unknown>;
|
||||||
|
|
||||||
@@ -235,11 +236,11 @@ export interface NodeIKernelMsgService {
|
|||||||
msgList: RawMessage[];
|
msgList: RawMessage[];
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
setMsgRichInfoFlag (...args: unknown[]): unknown;
|
setMsgRichInfoFlag (flag: boolean): void;
|
||||||
|
|
||||||
queryPicOrVideoMsgs (msgId: string, msgTime: string, megSeq: string, param: QueryMsgsParams): Promise<unknown>;
|
queryPicOrVideoMsgs (msgId: string, msgTime: string, megSeq: string, param: QueryMsgsParams): Promise<unknown>;
|
||||||
|
|
||||||
queryPicOrVideoMsgsDesktop (...args: unknown[]): unknown;
|
queryPicOrVideoMsgsDesktop (msgId: string, msgTime: string, msgSeq: string, param: QueryMsgsParams): unknown;
|
||||||
|
|
||||||
queryEmoticonMsgs (msgId: string, msgTime: string, msgSeq: string, Params: QueryMsgsParams): Promise<unknown>;
|
queryEmoticonMsgs (msgId: string, msgTime: string, msgSeq: string, Params: QueryMsgsParams): Promise<unknown>;
|
||||||
|
|
||||||
@@ -247,81 +248,81 @@ export interface NodeIKernelMsgService {
|
|||||||
|
|
||||||
queryMsgsAndAbstractsWithFilter (msgId: string, msgTime: string, megSeq: string, param: QueryMsgsParams): unknown;
|
queryMsgsAndAbstractsWithFilter (msgId: string, msgTime: string, megSeq: string, param: QueryMsgsParams): unknown;
|
||||||
|
|
||||||
setFocusOnGuild (...args: unknown[]): unknown;
|
setFocusOnGuild (arg: unknown): unknown;
|
||||||
|
|
||||||
setFocusSession (...args: unknown[]): unknown;
|
setFocusSession (arg: unknown): unknown;
|
||||||
|
|
||||||
enableFilterUnreadInfoNotify (...args: unknown[]): unknown;
|
enableFilterUnreadInfoNotify (arg: unknown): unknown;
|
||||||
|
|
||||||
enableFilterMsgAbstractNotify (...args: unknown[]): unknown;
|
enableFilterMsgAbstractNotify (arg: unknown): unknown;
|
||||||
|
|
||||||
onScenesChangeForSilenceMode (...args: unknown[]): unknown;
|
onScenesChangeForSilenceMode (arg: unknown): unknown;
|
||||||
|
|
||||||
getContactUnreadCnt (...args: unknown[]): unknown;
|
getContactUnreadCnt (peers: Peer[]): unknown;
|
||||||
|
|
||||||
getUnreadCntInfo (...args: unknown[]): unknown;
|
getUnreadCntInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
getGuildUnreadCntInfo (...args: unknown[]): unknown;
|
getGuildUnreadCntInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
getGuildUnreadCntTabInfo (...args: unknown[]): unknown;
|
getGuildUnreadCntTabInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
getAllGuildUnreadCntInfo (...args: unknown[]): unknown;
|
getAllGuildUnreadCntInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
getAllJoinGuildCnt (...args: unknown[]): unknown;
|
getAllJoinGuildCnt (arg: unknown): unknown;
|
||||||
|
|
||||||
getAllDirectSessionUnreadCntInfo (...args: unknown[]): unknown;
|
getAllDirectSessionUnreadCntInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
getCategoryUnreadCntInfo (...args: unknown[]): unknown;
|
getCategoryUnreadCntInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
getGuildFeedsUnreadCntInfo (...args: unknown[]): unknown;
|
getGuildFeedsUnreadCntInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
setUnVisibleChannelCntInfo (...args: unknown[]): unknown;
|
setUnVisibleChannelCntInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
setUnVisibleChannelTypeCntInfo (...args: unknown[]): unknown;
|
setUnVisibleChannelTypeCntInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
setVisibleGuildCntInfo (...args: unknown[]): unknown;
|
setVisibleGuildCntInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
setMsgRead (peer: Peer): Promise<GeneralCallResult>;
|
setMsgRead (peer: Peer): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
setAllC2CAndGroupMsgRead (): Promise<unknown>;
|
setAllC2CAndGroupMsgRead (): Promise<unknown>;
|
||||||
|
|
||||||
setGuildMsgRead (...args: unknown[]): unknown;
|
setGuildMsgRead (arg: unknown): unknown;
|
||||||
|
|
||||||
setAllGuildMsgRead (...args: unknown[]): unknown;
|
setAllGuildMsgRead (arg: unknown): unknown;
|
||||||
|
|
||||||
setMsgReadAndReport (...args: unknown[]): unknown;
|
setMsgReadAndReport (peer: Peer, msg: RawMessage): unknown;
|
||||||
|
|
||||||
setSpecificMsgReadAndReport (...args: unknown[]): unknown;
|
setSpecificMsgReadAndReport (arg1: Peer, arg2: string): unknown;
|
||||||
|
|
||||||
setLocalMsgRead (...args: unknown[]): unknown;
|
setLocalMsgRead (peer: Peer): unknown;
|
||||||
|
|
||||||
setGroupGuildMsgRead (...args: unknown[]): unknown;
|
setGroupGuildMsgRead (arg: unknown): unknown;
|
||||||
|
|
||||||
getGuildGroupTransData (...args: unknown[]): unknown;
|
getGuildGroupTransData (arg: unknown): unknown;
|
||||||
|
|
||||||
setGroupGuildBubbleRead (...args: unknown[]): unknown;
|
setGroupGuildBubbleRead (arg: unknown): unknown;
|
||||||
|
|
||||||
getGuildGroupBubble (...args: unknown[]): unknown;
|
getGuildGroupBubble (arg: unknown): unknown;
|
||||||
|
|
||||||
fetchGroupGuildUnread (...args: unknown[]): unknown;
|
fetchGroupGuildUnread (arg: unknown): unknown;
|
||||||
|
|
||||||
setGroupGuildFlag (...args: unknown[]): unknown;
|
setGroupGuildFlag (arg: unknown): unknown;
|
||||||
|
|
||||||
setGuildUDCFlag (...args: unknown[]): unknown;
|
setGuildUDCFlag (arg: unknown): unknown;
|
||||||
|
|
||||||
setGuildTabUserFlag (...args: unknown[]): unknown;
|
setGuildTabUserFlag (arg: unknown): unknown;
|
||||||
|
|
||||||
setBuildMode (flag: number/* 0 1 3 */): unknown;
|
setBuildMode (flag: number/* 0 1 3 */): unknown;
|
||||||
|
|
||||||
setConfigurationServiceData (...args: unknown[]): unknown;
|
setConfigurationServiceData (arg: unknown): unknown;
|
||||||
|
|
||||||
setMarkUnreadFlag (...args: unknown[]): unknown;
|
setMarkUnreadFlag (peer: Peer, unread: boolean): unknown;
|
||||||
|
|
||||||
getChannelEventFlow (...args: unknown[]): unknown;
|
getChannelEventFlow (arg: unknown): unknown;
|
||||||
|
|
||||||
getMsgEventFlow (...args: unknown[]): unknown;
|
getMsgEventFlow (arg: unknown): unknown;
|
||||||
|
|
||||||
getRichMediaFilePathForMobileQQSend (...args: unknown[]): unknown;
|
getRichMediaFilePathForMobileQQSend (arg: unknown): unknown;
|
||||||
|
|
||||||
getRichMediaFilePathForGuild (arg: {
|
getRichMediaFilePathForGuild (arg: {
|
||||||
md5HexStr: string,
|
md5HexStr: string,
|
||||||
@@ -334,15 +335,15 @@ export interface NodeIKernelMsgService {
|
|||||||
file_uuid: '';
|
file_uuid: '';
|
||||||
}): string;
|
}): string;
|
||||||
|
|
||||||
assembleMobileQQRichMediaFilePath (...args: unknown[]): unknown;
|
assembleMobileQQRichMediaFilePath (arg: unknown): unknown;
|
||||||
|
|
||||||
getFileThumbSavePathForSend (thumbSize: number, createNeed: boolean): string;
|
getFileThumbSavePathForSend (thumbSize: number, createNeed: boolean): string;
|
||||||
|
|
||||||
getFileThumbSavePath (...args: unknown[]): unknown;
|
getFileThumbSavePath (arg1: string, arg2: number, arg3: boolean): unknown;
|
||||||
|
|
||||||
translatePtt2Text (msgId: string, peer: Peer, msgElement: MessageElement): unknown;
|
translatePtt2Text (msgId: string, peer: Peer, msgElement: MessageElement): unknown;
|
||||||
|
|
||||||
setPttPlayedState (...args: unknown[]): unknown;
|
setPttPlayedState (arg1: string, arg2: Peer, arg3: string): unknown;
|
||||||
|
|
||||||
fetchFavEmojiList (str: string, num: number, backward: boolean, forceRefresh: boolean): Promise<GeneralCallResult & {
|
fetchFavEmojiList (str: string, num: number, backward: boolean, forceRefresh: boolean): Promise<GeneralCallResult & {
|
||||||
emojiInfoList: Array<{
|
emojiInfoList: Array<{
|
||||||
@@ -368,49 +369,49 @@ export interface NodeIKernelMsgService {
|
|||||||
}>;
|
}>;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
addFavEmoji (...args: unknown[]): unknown;
|
addFavEmoji (arg: unknown): unknown;
|
||||||
|
|
||||||
fetchMarketEmoticonList (...args: unknown[]): unknown;
|
fetchMarketEmoticonList (arg1: number, arg2: number): unknown;
|
||||||
|
|
||||||
fetchMarketEmoticonShowImage (...args: unknown[]): unknown;
|
fetchMarketEmoticonShowImage (arg: unknown): unknown;
|
||||||
|
|
||||||
fetchMarketEmoticonAioImage (...args: unknown[]): unknown;
|
fetchMarketEmoticonAioImage (arg: unknown): unknown;
|
||||||
|
|
||||||
fetchMarketEmotionJsonFile (...args: unknown[]): unknown;
|
fetchMarketEmotionJsonFile (arg: unknown): unknown;
|
||||||
|
|
||||||
getMarketEmoticonPath (...args: unknown[]): unknown;
|
getMarketEmoticonPath (arg1: number, arg2: Array<unknown>[], arg3: number): unknown;
|
||||||
|
|
||||||
getMarketEmoticonPathBySync (...args: unknown[]): unknown;
|
getMarketEmoticonPathBySync (arg1: number, arg2: Array<unknown>[], arg3: number): unknown;
|
||||||
|
|
||||||
fetchMarketEmoticonFaceImages (...args: unknown[]): unknown;
|
fetchMarketEmoticonFaceImages (arg: unknown): unknown;
|
||||||
|
|
||||||
fetchMarketEmoticonAuthDetail (...args: unknown[]): unknown;
|
fetchMarketEmoticonAuthDetail (arg: unknown): unknown;
|
||||||
|
|
||||||
getFavMarketEmoticonInfo (...args: unknown[]): unknown;
|
getFavMarketEmoticonInfo (tabId: number, emojiId: string): unknown;
|
||||||
|
|
||||||
addRecentUsedFace (...args: unknown[]): unknown;
|
addRecentUsedFace (arg: unknown): unknown;
|
||||||
|
|
||||||
getRecentUsedFaceList (...args: unknown[]): unknown;
|
getRecentUsedFaceList (arg: unknown): unknown;
|
||||||
|
|
||||||
getMarketEmoticonEncryptKeys (...args: unknown[]): unknown;
|
getMarketEmoticonEncryptKeys (arg1: number, arg2: Array<unknown>[]): unknown;
|
||||||
|
|
||||||
downloadEmojiPic (...args: unknown[]): unknown;
|
downloadEmojiPic (arg1: number, arg2: Array<unknown>[], arg3: number, arg4: Map<unknown, unknown>): unknown;
|
||||||
|
|
||||||
deleteFavEmoji (...args: unknown[]): unknown;
|
deleteFavEmoji (arg: unknown): unknown;
|
||||||
|
|
||||||
modifyFavEmojiDesc (...args: unknown[]): unknown;
|
modifyFavEmojiDesc (arg: unknown): unknown;
|
||||||
|
|
||||||
queryFavEmojiByDesc (...args: unknown[]): unknown;
|
queryFavEmojiByDesc (arg: unknown): unknown;
|
||||||
|
|
||||||
getHotPicInfoListSearchString (...args: unknown[]): unknown;
|
getHotPicInfoListSearchString (arg1: string, arg2: string, arg3: number, arg4: number, arg5: boolean): unknown;
|
||||||
|
|
||||||
getHotPicSearchResult (...args: unknown[]): unknown;
|
getHotPicSearchResult (arg: unknown): unknown;
|
||||||
|
|
||||||
getHotPicHotWords (...args: unknown[]): unknown;
|
getHotPicHotWords (arg: unknown): unknown;
|
||||||
|
|
||||||
getHotPicJumpInfo (...args: unknown[]): unknown;
|
getHotPicJumpInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
getEmojiResourcePath (...args: unknown[]): unknown;
|
getEmojiResourcePath (arg: unknown): unknown;
|
||||||
|
|
||||||
JoinDragonGroupEmoji (JoinDragonGroupEmojiReq: {
|
JoinDragonGroupEmoji (JoinDragonGroupEmojiReq: {
|
||||||
latestMsgSeq: string,
|
latestMsgSeq: string,
|
||||||
@@ -419,17 +420,17 @@ export interface NodeIKernelMsgService {
|
|||||||
peerContact: Peer;
|
peerContact: Peer;
|
||||||
}): Promise<unknown>;
|
}): Promise<unknown>;
|
||||||
|
|
||||||
getMsgAbstracts (...args: unknown[]): unknown;
|
getMsgAbstracts (arg: unknown): unknown;
|
||||||
|
|
||||||
getMsgAbstract (...args: unknown[]): unknown;
|
getMsgAbstract (arg1: Peer, arg2: string): unknown;
|
||||||
|
|
||||||
getMsgAbstractList (...args: unknown[]): unknown;
|
getMsgAbstractList (arg: unknown): unknown;
|
||||||
|
|
||||||
getMsgAbstractListBySeqRange (...args: unknown[]): unknown;
|
getMsgAbstractListBySeqRange (arg: unknown): unknown;
|
||||||
|
|
||||||
refreshMsgAbstracts (...args: unknown[]): unknown;
|
refreshMsgAbstracts (arg: unknown): unknown;
|
||||||
|
|
||||||
refreshMsgAbstractsByGuildIds (...args: unknown[]): unknown;
|
refreshMsgAbstractsByGuildIds (arg: unknown): unknown;
|
||||||
|
|
||||||
getRichMediaElement (arg: {
|
getRichMediaElement (arg: {
|
||||||
msgId: string,
|
msgId: string,
|
||||||
@@ -440,7 +441,7 @@ export interface NodeIKernelMsgService {
|
|||||||
downloadType: number,
|
downloadType: number,
|
||||||
}): Promise<any>;
|
}): Promise<any>;
|
||||||
|
|
||||||
cancelGetRichMediaElement (...args: unknown[]): unknown;
|
cancelGetRichMediaElement (arg: unknown): unknown;
|
||||||
|
|
||||||
refuseGetRichMediaElement (args: {
|
refuseGetRichMediaElement (args: {
|
||||||
msgId: string,
|
msgId: string,
|
||||||
@@ -451,7 +452,7 @@ export interface NodeIKernelMsgService {
|
|||||||
downSourceType: number, // 1
|
downSourceType: number, // 1
|
||||||
}): Promise<void>;
|
}): Promise<void>;
|
||||||
|
|
||||||
switchToOfflineGetRichMediaElement (...args: unknown[]): unknown;
|
switchToOfflineGetRichMediaElement (arg: unknown): unknown;
|
||||||
|
|
||||||
downloadRichMedia (args: {
|
downloadRichMedia (args: {
|
||||||
fileModelId: string,
|
fileModelId: string,
|
||||||
@@ -473,21 +474,21 @@ export interface NodeIKernelMsgService {
|
|||||||
guildId: string;
|
guildId: string;
|
||||||
}): Promise<unknown>;
|
}): Promise<unknown>;
|
||||||
|
|
||||||
getFirstUnreadCommonMsg (...args: unknown[]): unknown;
|
getFirstUnreadCommonMsg (arg: unknown): unknown;
|
||||||
|
|
||||||
getFirstUnreadAtmeMsg (...args: unknown[]): unknown;
|
getFirstUnreadAtmeMsg (peer: Peer): unknown;
|
||||||
|
|
||||||
getFirstUnreadAtallMsg (...args: unknown[]): unknown;
|
getFirstUnreadAtallMsg (peer: Peer): unknown;
|
||||||
|
|
||||||
getNavigateInfo (...args: unknown[]): unknown;
|
getNavigateInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
getChannelFreqLimitInfo (...args: unknown[]): unknown;
|
getChannelFreqLimitInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
getRecentUseEmojiList (...args: unknown[]): unknown;
|
getRecentUseEmojiList (): unknown;
|
||||||
|
|
||||||
getRecentEmojiList (...args: unknown[]): unknown;
|
getRecentEmojiList (arg: unknown): unknown;
|
||||||
|
|
||||||
setMsgEmojiLikes (...args: unknown[]): unknown;
|
setMsgEmojiLikes (peer: Peer, msgSeq: string, emojiId: string, emojiType: string, setOrCancel: boolean): unknown;
|
||||||
|
|
||||||
getMsgEmojiLikesList (peer: Peer, msgSeq: string, emojiId: string, emojiType: string, cookie: string, bForward: boolean, number: number): Promise<{
|
getMsgEmojiLikesList (peer: Peer, msgSeq: string, emojiId: string, emojiType: string, cookie: string, bForward: boolean, number: number): Promise<{
|
||||||
result: number,
|
result: number,
|
||||||
@@ -503,7 +504,7 @@ export interface NodeIKernelMsgService {
|
|||||||
isFirstPage: boolean;
|
isFirstPage: boolean;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
setMsgEmojiLikesForRole (...args: unknown[]): unknown;
|
setMsgEmojiLikesForRole (arg1: Peer, arg2: string, arg3: string, arg4: string, arg5: string, arg6: string, arg7: boolean, arg8: boolean, arg9: SgrpStreamParams): unknown;
|
||||||
|
|
||||||
clickInlineKeyboardButton (params: {
|
clickInlineKeyboardButton (params: {
|
||||||
guildId?: string,
|
guildId?: string,
|
||||||
@@ -516,7 +517,7 @@ export interface NodeIKernelMsgService {
|
|||||||
chatType: number; // 1私聊 2群
|
chatType: number; // 1私聊 2群
|
||||||
}): Promise<GeneralCallResult & { status: number, promptText: string, promptType: number, promptIcon: number; }>;
|
}): Promise<GeneralCallResult & { status: number, promptText: string, promptType: number, promptIcon: number; }>;
|
||||||
|
|
||||||
setCurOnScreenMsg (...args: unknown[]): unknown;
|
setCurOnScreenMsg (arg: unknown): unknown;
|
||||||
|
|
||||||
setCurOnScreenMsgForMsgEvent (peer: Peer, msgRegList: Map<string, Uint8Array>): void;
|
setCurOnScreenMsgForMsgEvent (peer: Peer, msgRegList: Map<string, Uint8Array>): void;
|
||||||
|
|
||||||
@@ -524,91 +525,91 @@ export interface NodeIKernelMsgService {
|
|||||||
|
|
||||||
setMiscData (key: string, value: string): unknown;
|
setMiscData (key: string, value: string): unknown;
|
||||||
|
|
||||||
getBookmarkData (...args: unknown[]): unknown;
|
getBookmarkData (key: string): unknown;
|
||||||
|
|
||||||
setBookmarkData (...args: unknown[]): unknown;
|
setBookmarkData (key: string, value: string): unknown;
|
||||||
|
|
||||||
sendShowInputStatusReq (ChatType: number, EventType: number, toUid: string): Promise<unknown>;
|
sendShowInputStatusReq (ChatType: number, EventType: number, toUid: string): Promise<unknown>;
|
||||||
|
|
||||||
queryCalendar (...args: unknown[]): unknown;
|
queryCalendar (peer: Peer, msgTime: number): unknown;
|
||||||
|
|
||||||
queryFirstMsgSeq (peer: Peer, ...args: unknown[]): unknown;
|
queryFirstMsgSeq (peer: Peer, msgTime: number): unknown;
|
||||||
|
|
||||||
queryRoamCalendar (...args: unknown[]): unknown;
|
queryRoamCalendar (peer: Peer, msgTime: number): unknown;
|
||||||
|
|
||||||
queryFirstRoamMsg (...args: unknown[]): unknown;
|
queryFirstRoamMsg (peer: Peer, msgTime: number): unknown;
|
||||||
|
|
||||||
fetchLongMsg (peer: Peer, msgId: string): unknown;
|
fetchLongMsg (peer: Peer, msgId: string): unknown;
|
||||||
|
|
||||||
fetchLongMsgWithCb (...args: unknown[]): unknown;
|
fetchLongMsgWithCb (peer: Peer, msgId: number): unknown;
|
||||||
|
|
||||||
setIsStopKernelFetchLongMsg (...args: unknown[]): unknown;
|
setIsStopKernelFetchLongMsg (arg: unknown): unknown;
|
||||||
|
|
||||||
insertGameResultAsMsgToDb (...args: unknown[]): unknown;
|
insertGameResultAsMsgToDb (arg: unknown): unknown;
|
||||||
|
|
||||||
getMultiMsg (...args: unknown[]): Promise<GeneralCallResult & {
|
getMultiMsg (arg1: Peer, arg2: string, arg3: string): Promise<GeneralCallResult & {
|
||||||
msgList: RawMessage[];
|
msgList: RawMessage[];
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
setDraft (...args: unknown[]): unknown;
|
setDraft (arg1: Peer, arg2: Array<unknown>[]): unknown;
|
||||||
|
|
||||||
getDraft (...args: unknown[]): unknown;
|
getDraft (peer: Peer): unknown;
|
||||||
|
|
||||||
deleteDraft (...args: unknown[]): unknown;
|
deleteDraft (peer: Peer): unknown;
|
||||||
|
|
||||||
getRecentHiddenSesionList (...args: unknown[]): unknown;
|
getRecentHiddenSesionList (): unknown;
|
||||||
|
|
||||||
setRecentHiddenSession (...args: unknown[]): unknown;
|
setRecentHiddenSession (arg: unknown): unknown;
|
||||||
|
|
||||||
delRecentHiddenSession (...args: unknown[]): unknown;
|
delRecentHiddenSession (arg: unknown): unknown;
|
||||||
|
|
||||||
getCurHiddenSession (...args: unknown[]): unknown;
|
getCurHiddenSession (): unknown;
|
||||||
|
|
||||||
setCurHiddenSession (...args: unknown[]): unknown;
|
setCurHiddenSession (arg: unknown): unknown;
|
||||||
|
|
||||||
setReplyDraft (...args: unknown[]): unknown;
|
setReplyDraft (arg1: Peer, arg2: string, arg3: Array<unknown>[]): unknown;
|
||||||
|
|
||||||
getReplyDraft (...args: unknown[]): unknown;
|
getReplyDraft (arg1: Peer, arg2: string): unknown;
|
||||||
|
|
||||||
deleteReplyDraft (...args: unknown[]): unknown;
|
deleteReplyDraft (arg1: Peer, arg2: string): unknown;
|
||||||
|
|
||||||
getFirstUnreadAtMsg (peer: Peer): unknown;
|
getFirstUnreadAtMsg (peer: Peer): unknown;
|
||||||
|
|
||||||
clearMsgRecords (...args: unknown[]): unknown;
|
clearMsgRecords (peer: Peer): unknown;
|
||||||
|
|
||||||
IsExistOldDb (...args: unknown[]): unknown;
|
IsExistOldDb (): unknown;
|
||||||
|
|
||||||
canImportOldDbMsg (...args: unknown[]): unknown;
|
canImportOldDbMsg (): unknown;
|
||||||
|
|
||||||
setPowerStatus (isPowerOn: boolean): unknown;
|
setPowerStatus (isPowerOn: boolean): unknown;
|
||||||
|
|
||||||
canProcessDataMigration (...args: unknown[]): unknown;
|
canProcessDataMigration (): unknown;
|
||||||
|
|
||||||
importOldDbMsg (...args: unknown[]): unknown;
|
importOldDbMsg (): unknown;
|
||||||
|
|
||||||
stopImportOldDbMsgAndroid (...args: unknown[]): unknown;
|
stopImportOldDbMsgAndroid (): unknown;
|
||||||
|
|
||||||
isMqqDataImportFinished (...args: unknown[]): unknown;
|
isMqqDataImportFinished (): unknown;
|
||||||
|
|
||||||
getMqqDataImportTableNames (...args: unknown[]): unknown;
|
getMqqDataImportTableNames (): unknown;
|
||||||
|
|
||||||
getCurChatImportStatusByUin (...args: unknown[]): unknown;
|
getCurChatImportStatusByUin (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
getDataImportUserLevel (): unknown;
|
getDataImportUserLevel (): unknown;
|
||||||
|
|
||||||
getMsgQRCode (...args: unknown[]): unknown;
|
getMsgQRCode (): unknown;
|
||||||
|
|
||||||
getGuestMsgAbstracts (...args: unknown[]): unknown;
|
getGuestMsgAbstracts (arg: unknown): unknown;
|
||||||
|
|
||||||
getGuestMsgByRange (...args: unknown[]): unknown;
|
getGuestMsgByRange (arg: unknown): unknown;
|
||||||
|
|
||||||
getGuestMsgAbstractByRange (...args: unknown[]): unknown;
|
getGuestMsgAbstractByRange (arg: unknown): unknown;
|
||||||
|
|
||||||
registerSysMsgNotification (...args: unknown[]): unknown;
|
registerSysMsgNotification (arg1: number, arg2: string, arg3: Array<unknown>[]): unknown;
|
||||||
|
|
||||||
unregisterSysMsgNotification (...args: unknown[]): unknown;
|
unregisterSysMsgNotification (arg1: number, arg2: string, arg3: Array<unknown>[]): unknown;
|
||||||
|
|
||||||
enterOrExitAio (...args: unknown[]): unknown;
|
enterOrExitAio (arg: unknown): unknown;
|
||||||
|
|
||||||
prepareTempChat (args: unknown): unknown;
|
prepareTempChat (args: unknown): unknown;
|
||||||
|
|
||||||
@@ -616,66 +617,66 @@ export interface NodeIKernelMsgService {
|
|||||||
|
|
||||||
getTempChatInfo (ChatType: number, Uid: string): Promise<TmpChatInfoApi>;
|
getTempChatInfo (ChatType: number, Uid: string): Promise<TmpChatInfoApi>;
|
||||||
|
|
||||||
setContactLocalTop (...args: unknown[]): unknown;
|
setContactLocalTop (peer: Peer, isTop: boolean): unknown;
|
||||||
|
|
||||||
switchAnonymousChat (...args: unknown[]): unknown;
|
switchAnonymousChat (arg1: string, arg2: boolean): unknown;
|
||||||
|
|
||||||
renameAnonyChatNick (...args: unknown[]): unknown;
|
renameAnonyChatNick (arg: unknown): unknown;
|
||||||
|
|
||||||
getAnonymousInfo (...args: unknown[]): unknown;
|
getAnonymousInfo (peer: Peer): unknown;
|
||||||
|
|
||||||
updateAnonymousInfo (...args: unknown[]): unknown;
|
updateAnonymousInfo (peer: Peer, arg2: unknown): unknown;
|
||||||
|
|
||||||
sendSummonMsg (peer: Peer, MsgElement: unknown, MsgAttributeInfo: unknown): Promise<unknown>;// 频道的东西
|
sendSummonMsg (peer: Peer, MsgElement: unknown, MsgAttributeInfo: unknown): Promise<unknown>;// 频道的东西
|
||||||
|
|
||||||
outputGuildUnreadInfo (...args: unknown[]): unknown;
|
outputGuildUnreadInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
checkMsgWithUrl (...args: unknown[]): unknown;
|
checkMsgWithUrl (arg: unknown): unknown;
|
||||||
|
|
||||||
checkTabListStatus (...args: unknown[]): unknown;
|
checkTabListStatus (): unknown;
|
||||||
|
|
||||||
getABatchOfContactMsgBoxInfo (...args: unknown[]): unknown;
|
getABatchOfContactMsgBoxInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
insertMsgToMsgBox (peer: Peer, msgId: string, arg: 2006): unknown;
|
insertMsgToMsgBox (peer: Peer, msgId: string, arg: 2006): unknown;
|
||||||
|
|
||||||
isHitEmojiKeyword (...args: unknown[]): unknown;
|
isHitEmojiKeyword (arg: unknown): unknown;
|
||||||
|
|
||||||
getKeyWordRelatedEmoji (...args: unknown[]): unknown;
|
getKeyWordRelatedEmoji (arg: unknown): unknown;
|
||||||
|
|
||||||
recordEmoji (...args: unknown[]): unknown;
|
recordEmoji (type: number, emojiList: Array<unknown>): unknown;
|
||||||
|
|
||||||
fetchGetHitEmotionsByWord (args: unknown): Promise<unknown>;// 表情推荐?
|
fetchGetHitEmotionsByWord (args: unknown): Promise<unknown>;// 表情推荐?
|
||||||
|
|
||||||
deleteAllRoamMsgs (...args: unknown[]): unknown;// 漫游消息?
|
deleteAllRoamMsgs (arg1: number, arg2: string): unknown;// 漫游消息?
|
||||||
|
|
||||||
packRedBag (...args: unknown[]): unknown;
|
packRedBag (arg: unknown): unknown;
|
||||||
|
|
||||||
grabRedBag (...args: unknown[]): unknown;
|
grabRedBag (arg: unknown): unknown;
|
||||||
|
|
||||||
pullDetail (...args: unknown[]): unknown;
|
pullDetail (arg: unknown): unknown;
|
||||||
|
|
||||||
selectPasswordRedBag (...args: unknown[]): unknown;
|
selectPasswordRedBag (arg: unknown): unknown;
|
||||||
|
|
||||||
pullRedBagPasswordList (...args: unknown[]): unknown;
|
pullRedBagPasswordList (): unknown;
|
||||||
|
|
||||||
requestTianshuAdv (...args: unknown[]): unknown;
|
requestTianshuAdv (arg: unknown): unknown;
|
||||||
|
|
||||||
tianshuReport (...args: unknown[]): unknown;
|
tianshuReport (arg: unknown): unknown;
|
||||||
|
|
||||||
tianshuMultiReport (...args: unknown[]): unknown;
|
tianshuMultiReport (arg: unknown): unknown;
|
||||||
|
|
||||||
GetMsgSubType (a0: number, a1: number): unknown;
|
GetMsgSubType (a0: number, a1: number): unknown;
|
||||||
|
|
||||||
setIKernelPublicAccountAdapter (...args: unknown[]): unknown;
|
setIKernelPublicAccountAdapter (arg: unknown): unknown;
|
||||||
|
|
||||||
// tempChatGameSession有关
|
// tempChatGameSession有关
|
||||||
createUidFromTinyId (fromTinyId: string, toTinyId: string): string;
|
createUidFromTinyId (fromTinyId: string, toTinyId: string): string;
|
||||||
|
|
||||||
dataMigrationGetDataAvaiableContactList (...args: unknown[]): unknown;
|
dataMigrationGetDataAvaiableContactList (): unknown;
|
||||||
|
|
||||||
dataMigrationGetMsgList (...args: unknown[]): unknown;
|
dataMigrationGetMsgList (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
dataMigrationStopOperation (...args: unknown[]): unknown;
|
dataMigrationStopOperation (arg: unknown): unknown;
|
||||||
|
|
||||||
dataMigrationImportMsgPbRecord (DataMigrationMsgInfo: Array<{
|
dataMigrationImportMsgPbRecord (DataMigrationMsgInfo: Array<{
|
||||||
extensionData: string;// "Hex"
|
extensionData: string;// "Hex"
|
||||||
@@ -696,38 +697,37 @@ export interface NodeIKernelMsgService {
|
|||||||
msgType: number;
|
msgType: number;
|
||||||
}): unknown;
|
}): unknown;
|
||||||
|
|
||||||
dataMigrationGetResourceLocalDestinyPath (...args: unknown[]): unknown;
|
dataMigrationGetResourceLocalDestinyPath (arg: unknown): unknown;
|
||||||
|
|
||||||
dataMigrationSetIOSPathPrefix (...args: unknown[]): unknown;
|
dataMigrationSetIOSPathPrefix (arg: unknown): unknown;
|
||||||
|
|
||||||
getServiceAssistantSwitch (...args: unknown[]): unknown;
|
getServiceAssistantSwitch (arg: unknown): unknown;
|
||||||
|
|
||||||
setServiceAssistantSwitch (...args: unknown[]): unknown;
|
setServiceAssistantSwitch (arg: unknown): unknown;
|
||||||
|
|
||||||
setSubscribeFolderUsingSmallRedPoint (...args: unknown[]): unknown;
|
setSubscribeFolderUsingSmallRedPoint (arg: unknown): unknown;
|
||||||
|
|
||||||
clearGuildNoticeRedPoint (...args: unknown[]): unknown;
|
clearGuildNoticeRedPoint (arg: unknown): unknown;
|
||||||
|
|
||||||
clearFeedNoticeRedPoint (...args: unknown[]): unknown;
|
clearFeedNoticeRedPoint (arg: unknown): unknown;
|
||||||
|
|
||||||
clearFeedSquareRead (...args: unknown[]): unknown;
|
clearFeedSquareRead (arg: unknown): unknown;
|
||||||
|
|
||||||
IsC2CStyleChatType (...args: unknown[]): unknown;
|
IsC2CStyleChatType (chatType: unknown): unknown;
|
||||||
|
|
||||||
IsTempChatType (uin: number): unknown;// 猜的
|
IsTempChatType (uin: number): unknown;// 猜的
|
||||||
|
|
||||||
getGuildInteractiveNotification (...args: unknown[]): unknown;
|
getGuildInteractiveNotification (arg: unknown): unknown;
|
||||||
|
|
||||||
getGuildNotificationAbstract (...args: unknown[]): unknown;
|
getGuildNotificationAbstract (arg: unknown): unknown;
|
||||||
|
|
||||||
setFocusOnBase (...args: unknown[]): unknown;
|
setFocusOnBase (arg: unknown): unknown;
|
||||||
|
|
||||||
queryArkInfo (...args: unknown[]): unknown;
|
queryArkInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
queryUserSecQuality (...args: unknown[]): unknown;
|
queryUserSecQuality (): unknown;
|
||||||
|
|
||||||
getGuildMsgAbFlag (...args: unknown[]): unknown;
|
getGuildMsgAbFlag (arg: unknown): unknown;
|
||||||
|
|
||||||
getGroupMsgStorageTime (): unknown;
|
getGroupMsgStorageTime (): unknown;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
11
packages/napcat-core/services/NodeIKernelNearbyProService.ts
Normal file
11
packages/napcat-core/services/NodeIKernelNearbyProService.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
export interface NodeIKernelNearbyProService {
|
||||||
|
addKernelNearbyProListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelNearbyProListener (listenerId: number): void;
|
||||||
|
|
||||||
|
fetchNearbyProUserInfo (arg1: unknown[], arg2: unknown, arg3: boolean): unknown;
|
||||||
|
|
||||||
|
setCommonExtInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -14,4 +14,118 @@ export interface NodeIKernelNodeMiscService {
|
|||||||
startNewMiniApp (appfile: string, params: string): unknown;
|
startNewMiniApp (appfile: string, params: string): unknown;
|
||||||
|
|
||||||
getQimei36WithNewSdk (): Promise<string>;
|
getQimei36WithNewSdk (): Promise<string>;
|
||||||
|
|
||||||
|
adaptMiniAppShareInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
addBind (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
changeSendKey (arg: unknown): unknown;
|
||||||
|
|
||||||
|
checkIfHaveAvailableSidecarDevice (arg: unknown): unknown;
|
||||||
|
|
||||||
|
clearQzoneUnreadCount (arg: unknown): unknown;
|
||||||
|
|
||||||
|
clearQzoneUnreadCountWithRedDot (arg: unknown): unknown;
|
||||||
|
|
||||||
|
closeWXMiniApp (arg: unknown): unknown;
|
||||||
|
|
||||||
|
delBind (arg: unknown): unknown;
|
||||||
|
|
||||||
|
deleteShareFile (arg: unknown): unknown;
|
||||||
|
|
||||||
|
dispatchWmpfEvent (arg: unknown): unknown;
|
||||||
|
|
||||||
|
doAction (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
doPostAction (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
downloadMiniApp (arg: unknown): unknown;
|
||||||
|
|
||||||
|
downloadMiniGame (arg: unknown): unknown;
|
||||||
|
|
||||||
|
encodeAES (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
flashWindowInTaskbar (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getAppLaunchInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getCurWindowInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getCurWindowInfoExceptList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getMiniGameV2EngineConfig (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getMyAppList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getOpenAuth (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getQQlevelInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getQzoneUnreadCount (arg: unknown): unknown;
|
||||||
|
|
||||||
|
installApp (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
isAppInstalled (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isOldQQRunning (arg: unknown): unknown;
|
||||||
|
|
||||||
|
judgeTimingRequest (arg: unknown): unknown;
|
||||||
|
|
||||||
|
listenWindowEvents (arg: unknown): unknown;
|
||||||
|
|
||||||
|
loginWXMiniApp (arg: unknown): unknown;
|
||||||
|
|
||||||
|
openFileAndDirSelectDlg (arg: unknown): unknown;
|
||||||
|
|
||||||
|
prefetch (arg: unknown): unknown;
|
||||||
|
|
||||||
|
qqConnectBatchShare (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
qqConnectShare (arg: unknown): unknown;
|
||||||
|
|
||||||
|
qqConnectShareCheck (arg: unknown): unknown;
|
||||||
|
|
||||||
|
registerSchemes (arg: unknown): unknown;
|
||||||
|
|
||||||
|
registerScreenCaptureShortcutWithKeycode (arg: unknown): unknown;
|
||||||
|
|
||||||
|
registerScreenRecordShortcutWithKeycode (arg: unknown): unknown;
|
||||||
|
|
||||||
|
removeQuarantineAttribute (arg: unknown): unknown;
|
||||||
|
|
||||||
|
reportExecuteRequest (arg: unknown): unknown;
|
||||||
|
|
||||||
|
scanQBar (arg: unknown): unknown;
|
||||||
|
|
||||||
|
sendMessageResponseToWX (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
sendRequestToApiGateway (arg: unknown): unknown;
|
||||||
|
|
||||||
|
sendWXCustomMenuClickedAction (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
setBackgroudWindowLevel (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
setMiniGameVersion (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setVulkanEnable (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setWindowLevelNT (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
setWindowsMenuInstallStatus (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setWXCustomMenuConfig (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
startNewApp (arg: unknown): unknown;
|
||||||
|
|
||||||
|
startScreenCapture (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
stopFlashWindow (arg: unknown): unknown;
|
||||||
|
|
||||||
|
unlistenWindowEvents (arg: unknown): unknown;
|
||||||
|
|
||||||
|
unregisterHotkey (arg: unknown): unknown;
|
||||||
|
|
||||||
|
writeBitmapToClipboard (arg: unknown): unknown;
|
||||||
|
|
||||||
|
writeClipboard (arg1: unknown, arg2: unknown): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,36 +1,29 @@
|
|||||||
export interface NodeIKernelOnlineStatusService {
|
export interface NodeIKernelOnlineStatusService {
|
||||||
|
|
||||||
addKernelOnlineStatusListener(listener: unknown): number;
|
addKernelOnlineStatusListener (listener: unknown): number;
|
||||||
|
|
||||||
removeKernelOnlineStatusListener(listenerId: number): void;
|
removeKernelOnlineStatusListener (listenerId: number): void;
|
||||||
|
|
||||||
getShouldShowAIOStatusAnimation(arg: unknown): unknown;
|
getShouldShowAIOStatusAnimation (arg: unknown): unknown;
|
||||||
|
|
||||||
setReadLikeList(arg: unknown): unknown;
|
setReadLikeList (arg: unknown): unknown;
|
||||||
|
|
||||||
getLikeList(arg: unknown): unknown;
|
getLikeList (arg: unknown): Promise<unknown>;
|
||||||
|
|
||||||
setLikeStatus(arg: unknown): unknown;
|
setLikeStatus (arg: unknown): Promise<unknown>;
|
||||||
|
|
||||||
getAggregationPageEntrance(): unknown;
|
setOnlineStatusLiteBusinessSwitch (enabled: boolean): void;
|
||||||
|
|
||||||
didClickAggregationPageEntrance(): unknown;
|
getAggregationPageEntrance (): unknown;
|
||||||
|
|
||||||
getAggregationGroupModels(): unknown;
|
didClickAggregationPageEntrance (): unknown;
|
||||||
|
|
||||||
// {
|
getAggregationGroupModels (): unknown;
|
||||||
// "businessType": 1,
|
|
||||||
// "uins": [
|
|
||||||
// "1627126029",
|
|
||||||
// "66600000",
|
|
||||||
// "71702575"
|
|
||||||
// ]
|
|
||||||
// }
|
|
||||||
|
|
||||||
checkLikeStatus(param: {
|
checkLikeStatus (param: {
|
||||||
businessType: number,
|
businessType: number,
|
||||||
uins: string[]
|
uins: string[];
|
||||||
}): Promise<unknown>;
|
}): Promise<unknown>;
|
||||||
|
|
||||||
isNull(): boolean;
|
isNull (): boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
export interface NodeIKernelPersonalAlbumService {
|
||||||
|
addAlbumPermissions (arg: unknown): unknown;
|
||||||
|
|
||||||
|
addComment (arg: unknown): unknown;
|
||||||
|
|
||||||
|
addReply (arg: unknown): unknown;
|
||||||
|
|
||||||
|
createAlbum (arg: unknown): unknown;
|
||||||
|
|
||||||
|
delBatchPhoto (arg: unknown): unknown;
|
||||||
|
|
||||||
|
deleteAlbum (arg: unknown): unknown;
|
||||||
|
|
||||||
|
deleteComment (arg: unknown): unknown;
|
||||||
|
|
||||||
|
deleteReply (arg: unknown): unknown;
|
||||||
|
|
||||||
|
doLike (arg: unknown): unknown;
|
||||||
|
|
||||||
|
editAlbum (arg: unknown): unknown;
|
||||||
|
|
||||||
|
editTravelAlbumScence (arg: unknown): unknown;
|
||||||
|
|
||||||
|
forwardAlbumToQzone (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getAlbumInviteJoinPage (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getAlbumJoinApprovalPage (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getAlbumList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getAlbumMemberList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getCommentList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getLayerTailpageRecommend (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getPhotoList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getPhotoListByTimeLine (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getPhotoTabByTimeLine (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getShareInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getVideoTabByTimeLine (arg: unknown): unknown;
|
||||||
|
|
||||||
|
inviteCheckForLoversAlbum (arg: unknown): unknown;
|
||||||
|
|
||||||
|
joinShareAlbum (arg: unknown): unknown;
|
||||||
|
|
||||||
|
moveBatchPhoto (arg: unknown): unknown;
|
||||||
|
|
||||||
|
queryAlbum (arg: unknown): unknown;
|
||||||
|
|
||||||
|
quitSharedAlbum (arg: unknown): unknown;
|
||||||
|
|
||||||
|
removeAlbumMember (arg: unknown): unknown;
|
||||||
|
|
||||||
|
respondToJoinRequest (arg: unknown): unknown;
|
||||||
|
|
||||||
|
sendAlbumInvitation (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setAlbumServiceInfo (arg1: string, arg2: string, arg3: string): unknown;
|
||||||
|
|
||||||
|
setTopAlbum (arg: unknown): unknown;
|
||||||
|
|
||||||
|
unLike (arg: unknown): unknown;
|
||||||
|
|
||||||
|
updateAlbumMember (arg: unknown): unknown;
|
||||||
|
|
||||||
|
verifyAlbumQuestion (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -1,37 +1,37 @@
|
|||||||
import { BuddyProfileLikeReq, GeneralCallResult, NTVoteInfo } from '@/napcat-core/index';
|
import { BuddyProfileLikeReq, GeneralCallResult, NTVoteInfo } from '@/napcat-core/index';
|
||||||
|
|
||||||
export interface NodeIKernelProfileLikeService {
|
export interface NodeIKernelProfileLikeService {
|
||||||
addKernelProfileLikeListener(listener: unknown): number;
|
addKernelProfileLikeListener (listener: unknown): number;
|
||||||
|
|
||||||
removeKernelProfileLikeListener(listenerId: unknown): void;
|
removeKernelProfileLikeListener (listenerId: number): void;
|
||||||
|
|
||||||
setBuddyProfileLike(...args: unknown[]): { result: number, errMsg: string, succCounts: number };
|
setBuddyProfileLike (arg: unknown): Promise<{ result: number, errMsg: string, succCounts: number; }>;
|
||||||
|
|
||||||
getBuddyProfileLike(req: BuddyProfileLikeReq): Promise<GeneralCallResult & {
|
getBuddyProfileLike (req: BuddyProfileLikeReq): Promise<GeneralCallResult & {
|
||||||
info: {
|
info: {
|
||||||
userLikeInfos: Array<{
|
userLikeInfos: Array<{
|
||||||
uid: string,
|
uid: string,
|
||||||
time: string,
|
time: string,
|
||||||
favoriteInfo: {
|
favoriteInfo: {
|
||||||
userInfos: Array<NTVoteInfo>, // 哪些人点我
|
userInfos: Array<NTVoteInfo>,
|
||||||
total_count: number,
|
total_count: number,
|
||||||
last_time: number,
|
last_time: number,
|
||||||
today_count: number
|
today_count: number;
|
||||||
},
|
},
|
||||||
voteInfo: {
|
voteInfo: {
|
||||||
total_count: number,
|
total_count: number,
|
||||||
new_count: number,
|
new_count: number,
|
||||||
new_nearby_count: number,
|
new_nearby_count: number,
|
||||||
last_visit_time: number,
|
last_visit_time: number,
|
||||||
userInfos: Array<NTVoteInfo>, // 点过哪些人
|
userInfos: Array<NTVoteInfo>;
|
||||||
}
|
};
|
||||||
}>,
|
}>,
|
||||||
friendMaxVotes: number,
|
friendMaxVotes: number,
|
||||||
start: number
|
start: number;
|
||||||
}
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
getProfileLikeScidResourceInfo(...args: unknown[]): void;
|
getProfileLikeScidResourceInfo (arg: unknown): void;
|
||||||
|
|
||||||
isNull(): boolean;
|
isNull (): boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,80 +3,94 @@ import { BizKey, ModifyProfileParams, NodeIKernelProfileListener, ProfileBizType
|
|||||||
import { GeneralCallResult } from '@/napcat-core/services/common';
|
import { GeneralCallResult } from '@/napcat-core/services/common';
|
||||||
|
|
||||||
export interface NodeIKernelProfileService {
|
export interface NodeIKernelProfileService {
|
||||||
getOtherFlag(callfrom: string, uids: string[]): Promise<Map<string, unknown>>;
|
getOtherFlag (callfrom: string, uids: string[]): Promise<Map<string, unknown>>;
|
||||||
|
|
||||||
getVasInfo(callfrom: string, uids: string[]): Promise<Map<string, unknown>>;
|
getVasInfo (callfrom: string, uids: string[]): Promise<Map<string, unknown>>;
|
||||||
|
|
||||||
getRelationFlag(callfrom: string, uids: string[]): Promise<Map<string, unknown>>;
|
getRelationFlag (callfrom: string, uids: string[]): Promise<Map<string, unknown>>;
|
||||||
|
|
||||||
getUidByUin(callfrom: string, uin: Array<string>): Map<string, string>;
|
getUidByUin (callfrom: string, uin: Array<string>): Map<string, string>;
|
||||||
|
|
||||||
getUinByUid(callfrom: string, uid: Array<string>): Map<string, string>;
|
getUinByUid (callfrom: string, uid: Array<string>): Map<string, string>;
|
||||||
|
|
||||||
getCoreAndBaseInfo(callfrom: string, uids: string[]): Promise<Map<string, SimpleInfo>>;
|
getCoreAndBaseInfo (callfrom: string, uids: string[]): Promise<Map<string, SimpleInfo>>;
|
||||||
|
|
||||||
fetchUserDetailInfo(trace: string, uids: string[], source: UserDetailSource, bizType: ProfileBizType[]): Promise<GeneralCallResult &
|
fetchUserDetailInfo (trace: string, uids: string[], source: UserDetailSource, bizType: ProfileBizType[]): Promise<GeneralCallResult &
|
||||||
{
|
{
|
||||||
source: UserDetailSource,
|
source: UserDetailSource,
|
||||||
// uid -> detail
|
// uid -> detail
|
||||||
detail: Map<string, UserDetailInfoListenerArg>,
|
detail: Map<string, UserDetailInfoListenerArg>,
|
||||||
}
|
}
|
||||||
>;
|
>;
|
||||||
|
|
||||||
addKernelProfileListener(listener: NodeIKernelProfileListener): number;
|
addKernelProfileListener (listener: NodeIKernelProfileListener): number;
|
||||||
|
|
||||||
removeKernelProfileListener(listenerId: number): void;
|
removeKernelProfileListener (listenerId: number): void;
|
||||||
|
|
||||||
prepareRegionConfig(...args: unknown[]): unknown;
|
prepareRegionConfig (): unknown;
|
||||||
|
|
||||||
getLocalStrangerRemark(): Promise<AnyCnameRecord>;
|
getLocalStrangerRemark (): Promise<AnyCnameRecord>;
|
||||||
|
|
||||||
enumCountryOptions(): Array<string>;
|
enumCountryOptions (): Array<string>;
|
||||||
|
|
||||||
enumProvinceOptions(country: string): Array<string>;
|
enumProvinceOptions (country: string): Array<string>;
|
||||||
|
|
||||||
enumCityOptions(country: string, province: string): unknown;
|
enumCityOptions (country: string, province: string): unknown;
|
||||||
|
|
||||||
enumAreaOptions(...args: unknown[]): unknown;
|
enumAreaOptions (arg1: string, arg2: string, arg3: string): unknown;
|
||||||
|
|
||||||
modifySelfProfile(...args: unknown[]): Promise<unknown>;
|
modifySelfProfile (param: unknown): Promise<unknown>;
|
||||||
|
|
||||||
modifyDesktopMiniProfile(param: ModifyProfileParams): Promise<GeneralCallResult>;
|
modifyDesktopMiniProfile (param: ModifyProfileParams): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
setNickName(nickName: string): Promise<unknown>;
|
setNickName (nickName: string): Promise<unknown>;
|
||||||
|
|
||||||
setLongNick(longNick: string): Promise<unknown>;
|
setLongNick (longNick: string): Promise<unknown>;
|
||||||
|
|
||||||
setBirthday(...args: unknown[]): Promise<unknown>;
|
setBirthday (year: number, month: number, day: number): Promise<unknown>;
|
||||||
|
|
||||||
setGander(...args: unknown[]): Promise<unknown>;
|
setGander (gender: unknown): Promise<unknown>;
|
||||||
|
|
||||||
setHeader(arg: string): Promise<GeneralCallResult>;
|
setHeader (arg: string): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
setRecommendImgFlag(...args: unknown[]): Promise<unknown>;
|
setRecommendImgFlag (flag: unknown): Promise<unknown>;
|
||||||
|
|
||||||
getUserSimpleInfo(force: boolean, uids: string[]): Promise<unknown>;
|
getUserSimpleInfo (force: boolean, uids: string[]): Promise<unknown>;
|
||||||
|
|
||||||
getUserDetailInfo(uid: string): Promise<unknown>;
|
getUserDetailInfo (uid: string): Promise<unknown>;
|
||||||
|
|
||||||
getUserDetailInfoWithBizInfo(uid: string, Biz: BizKey[]): Promise<GeneralCallResult>;
|
getUserDetailInfoWithBizInfo (uid: string, Biz: BizKey[]): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
getUserDetailInfoByUin(uin: string): Promise<UserDetailInfoByUin>;
|
getUserDetailInfoByUin (uin: string): Promise<UserDetailInfoByUin>;
|
||||||
|
|
||||||
getZplanAvatarInfos(args: string[]): Promise<unknown>;
|
getZplanAvatarInfos (args: string[]): Promise<unknown>;
|
||||||
|
|
||||||
getStatus(uid: string): Promise<unknown>;
|
getStatus (uid: string): Promise<unknown>;
|
||||||
|
|
||||||
startStatusPolling(isForceReset: boolean): Promise<unknown>;
|
startStatusPolling (isForceReset: boolean): Promise<unknown>;
|
||||||
|
|
||||||
getSelfStatus(): Promise<unknown>;
|
getSelfStatus (): Promise<unknown>;
|
||||||
|
|
||||||
setdisableEmojiShortCuts(...args: unknown[]): unknown;
|
setdisableEmojiShortCuts (arg: unknown): unknown;
|
||||||
|
|
||||||
getProfileQzonePicInfo(uid: string, type: number, force: boolean): Promise<unknown>;
|
getProfileQzonePicInfo (uid: string, type: number, force: boolean): Promise<unknown>;
|
||||||
|
|
||||||
// UserRemarkServiceImpl::getStrangerRemarkByUid []
|
// UserRemarkServiceImpl::getStrangerRemarkByUid []
|
||||||
getCoreInfo(sceneId: string, arg: unknown[]): unknown;
|
getCoreInfo (sceneId: string, arg: unknown[]): unknown;
|
||||||
|
|
||||||
isNull(): boolean;
|
isNull (): boolean;
|
||||||
|
|
||||||
|
addKernelProfileListenerForUICache (listener: unknown): number;
|
||||||
|
|
||||||
|
asyncGetCoreInfo (callfrom: string, uids: string[]): unknown;
|
||||||
|
|
||||||
|
getIntimate (uid: string, arg: unknown): unknown;
|
||||||
|
|
||||||
|
getStatusInfo (uid: string, arg: unknown): unknown;
|
||||||
|
|
||||||
|
getStockLocalData (key: string, arg: unknown): unknown;
|
||||||
|
|
||||||
|
updateProfileData (uid: string, data: unknown): unknown;
|
||||||
|
|
||||||
|
updateStockLocalData (key: string, data: unknown): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
export interface NodeIKernelPublicAccountService {
|
||||||
|
addListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeListener (listenerId: number): void;
|
||||||
|
|
||||||
|
follow (arg: unknown): unknown;
|
||||||
|
|
||||||
|
queryTemplateInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
subscribeTemplate (arg: unknown): unknown;
|
||||||
|
|
||||||
|
unfollow (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
19
packages/napcat-core/services/NodeIKernelQQPlayService.ts
Normal file
19
packages/napcat-core/services/NodeIKernelQQPlayService.ts
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
export interface NodeIKernelQQPlayService {
|
||||||
|
addKernelQQPlayListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelQQPlayListener (listenerId: number): void;
|
||||||
|
|
||||||
|
createLnkShortcut (arg1: string, arg2: string, arg3: string, arg4: string): unknown;
|
||||||
|
|
||||||
|
getSystemRegValue (arg1: number, arg2: string, arg3: string): unknown;
|
||||||
|
|
||||||
|
setSystemRegValue (arg1: number, arg2: string, arg3: string, arg4: string): unknown;
|
||||||
|
|
||||||
|
sendMsg2Simulator (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
setForegroundWindow (arg: unknown): unknown;
|
||||||
|
|
||||||
|
startSimulator (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
21
packages/napcat-core/services/NodeIKernelQiDianService.ts
Normal file
21
packages/napcat-core/services/NodeIKernelQiDianService.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
export interface NodeIKernelQiDianService {
|
||||||
|
addKernelQiDianListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelQiDianListener (listenerId: number): void;
|
||||||
|
|
||||||
|
requestExtUinForRemoteControl (arg1: string, arg2: string, arg3: number): unknown;
|
||||||
|
|
||||||
|
requestMainUinForRemoteControl (arg: unknown): unknown;
|
||||||
|
|
||||||
|
requestNaviConfig (arg: unknown): unknown;
|
||||||
|
|
||||||
|
requestQidianUidFromUin (arg: unknown): unknown;
|
||||||
|
|
||||||
|
requestWpaCorpInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
requestWpaSigT (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
requestWpaUserInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
13
packages/napcat-core/services/NodeIKernelRDeliveryService.ts
Normal file
13
packages/napcat-core/services/NodeIKernelRDeliveryService.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
export interface NodeIKernelRDeliveryService {
|
||||||
|
addDataChangeListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeDataChangeListener (listenerId: number): void;
|
||||||
|
|
||||||
|
getRDeliveryDataByKey (arg: unknown): unknown;
|
||||||
|
|
||||||
|
requestBatchRemoteDataByScene (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
requestSingleRemoteDataByKey (arg1: string, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -4,17 +4,19 @@ import { GeneralCallResult } from '@/napcat-core/services/common';
|
|||||||
import { FSABRecentContactParams } from '@/napcat-core/types/contact';
|
import { FSABRecentContactParams } from '@/napcat-core/types/contact';
|
||||||
|
|
||||||
export interface NodeIKernelRecentContactService {
|
export interface NodeIKernelRecentContactService {
|
||||||
setGuildDisplayStatus(...args: unknown[]): unknown; // 2 arguments
|
setGuildDisplayStatus (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
setContactListTop(...args: unknown[]): unknown; // 2 arguments
|
setContactListTop (peer: Peer, isTop: boolean): unknown;
|
||||||
|
|
||||||
updateRecentContactExtBufForUI(...args: unknown[]): unknown; // 2 arguments
|
updateRecentContactExtBufForUI (peer: Peer, extBuf: unknown): unknown;
|
||||||
|
|
||||||
upsertRecentContactManually(...args: unknown[]): unknown; // 1 arguments
|
upsertRecentContactManually (arg: unknown): unknown;
|
||||||
|
|
||||||
enterOrExitMsgList(...args: unknown[]): unknown; // 1 arguments
|
manageContactMergeWindow (arg: unknown): unknown;
|
||||||
|
|
||||||
getRecentContactListSnapShot(count: number): Promise<GeneralCallResult & {
|
enterOrExitMsgList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getRecentContactListSnapShot (count: number): Promise<GeneralCallResult & {
|
||||||
info: {
|
info: {
|
||||||
errCode: number,
|
errCode: number,
|
||||||
errMsg: string,
|
errMsg: string,
|
||||||
@@ -28,56 +30,56 @@ export interface NodeIKernelRecentContactService {
|
|||||||
peerUin: string,
|
peerUin: string,
|
||||||
msgTime: string,
|
msgTime: string,
|
||||||
chatType: ChatType,
|
chatType: ChatType,
|
||||||
msgId: string
|
msgId: string;
|
||||||
}>
|
}>;
|
||||||
}
|
};
|
||||||
}>; // 1 arguments
|
}>;
|
||||||
|
|
||||||
clearMsgUnreadCount(...args: unknown[]): unknown; // 1 arguments
|
clearMsgUnreadCount (peer: Peer): unknown;
|
||||||
|
|
||||||
getRecentContactListSyncLimit(count: number): unknown;
|
getRecentContactListSyncLimit (count: number): unknown;
|
||||||
|
|
||||||
jumpToSpecifyRecentContact(...args: unknown[]): unknown; // 1 arguments
|
jumpToSpecifyRecentContact (arg: unknown): unknown;
|
||||||
|
|
||||||
fetchAndSubscribeABatchOfRecentContact(params: FSABRecentContactParams): unknown; // 1 arguments
|
fetchAndSubscribeABatchOfRecentContact (params: FSABRecentContactParams): unknown;
|
||||||
|
|
||||||
addRecentContact(peer: Peer): unknown;
|
addRecentContact (peer: Peer): unknown;
|
||||||
|
|
||||||
deleteRecentContacts(peer: Peer): unknown; // 猜测
|
deleteRecentContacts (peer: Peer): unknown;
|
||||||
|
|
||||||
getContacts(peers: Peer[]): Promise<unknown>;
|
getContacts (peers: Peer[]): Promise<unknown>;
|
||||||
|
|
||||||
setThirdPartyBusinessInfos(...args: unknown[]): unknown; // 1 arguments
|
setThirdPartyBusinessInfos (arg: unknown): unknown;
|
||||||
|
|
||||||
updateGameMsgConfigs(...args: unknown[]): unknown; // 1 arguments
|
updateGameMsgConfigs (arg: unknown): unknown;
|
||||||
|
|
||||||
removeKernelRecentContactListener(listenerid: number): unknown; // 1 arguments
|
removeKernelRecentContactListener (listenerId: number): unknown;
|
||||||
|
|
||||||
addKernelRecentContactListener(listener: NodeIKernelRecentContactListener): void;
|
addKernelRecentContactListener (listener: NodeIKernelRecentContactListener): void;
|
||||||
|
|
||||||
clearRecentContactsByChatType(...args: unknown[]): unknown; // 1 arguments
|
clearRecentContactsByChatType (chatType: ChatType): unknown;
|
||||||
|
|
||||||
upInsertModule(...args: unknown[]): unknown; // 1 arguments
|
upInsertModule (arg: unknown): unknown;
|
||||||
|
|
||||||
jumpToSpecifyRecentContactVer2(...args: unknown[]): unknown; // 1 arguments
|
jumpToSpecifyRecentContactVer2 (arg: unknown): unknown;
|
||||||
|
|
||||||
deleteRecentContactsVer2(...args: unknown[]): unknown; // 1 arguments
|
deleteRecentContactsVer2 (arg: unknown): unknown;
|
||||||
|
|
||||||
getRecentContactList(): Promise<unknown>;
|
getRecentContactList (): Promise<unknown>;
|
||||||
|
|
||||||
getMsgUnreadCount(): unknown;
|
getMsgUnreadCount (): unknown;
|
||||||
|
|
||||||
clearRecentContacts(): unknown;
|
clearRecentContacts (): unknown;
|
||||||
|
|
||||||
getServiceAssistantRecentContactInfos(): unknown;
|
getServiceAssistantRecentContactInfos (): unknown;
|
||||||
|
|
||||||
getRecentContactInfos(): unknown;
|
getRecentContactInfos (): unknown;
|
||||||
|
|
||||||
getUnreadDetailsInfos(): unknown;
|
getUnreadDetailsInfos (): unknown;
|
||||||
|
|
||||||
cleanAllModule(): unknown;
|
cleanAllModule (): unknown;
|
||||||
|
|
||||||
setAllGameMsgRead(): unknown;
|
setAllGameMsgRead (): unknown;
|
||||||
|
|
||||||
getRecentContactListSync(): unknown;
|
getRecentContactListSync (): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
17
packages/napcat-core/services/NodeIKernelRemotingService.ts
Normal file
17
packages/napcat-core/services/NodeIKernelRemotingService.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
export interface NodeIKernelRemotingService {
|
||||||
|
addKernelRemotingListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelRemotingListener (listenerId: number): void;
|
||||||
|
|
||||||
|
accept (arg1: string, arg2: boolean): unknown;
|
||||||
|
|
||||||
|
setPenetrateBuffer (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
|
startRemotingClient (arg: unknown): unknown;
|
||||||
|
|
||||||
|
startRemotingInvite (arg: unknown): unknown;
|
||||||
|
|
||||||
|
stopRemoting (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -62,7 +62,7 @@ export interface NodeIKernelRichMediaService {
|
|||||||
// KHAND,
|
// KHAND,
|
||||||
// KAUTO
|
// KAUTO
|
||||||
// }
|
// }
|
||||||
getVideoPlayUrl(peer: Peer, msgId: string, elemId: string, videoCodecFormat: number, VideoRequestWay: number): Promise<unknown>;
|
getVideoPlayUrl (peer: Peer, msgId: string, elemId: string, videoCodecFormat: number, VideoRequestWay: number): Promise<unknown>;
|
||||||
|
|
||||||
// exParams (RMReqExParams)
|
// exParams (RMReqExParams)
|
||||||
// this.downSourceType = i2;
|
// this.downSourceType = i2;
|
||||||
@@ -81,9 +81,9 @@ export interface NodeIKernelRichMediaService {
|
|||||||
// public static final int KTRIGGERTYPEAUTO = 1;
|
// public static final int KTRIGGERTYPEAUTO = 1;
|
||||||
// public static final int KTRIGGERTYPEMANUAL = 0;
|
// public static final int KTRIGGERTYPEMANUAL = 0;
|
||||||
|
|
||||||
getVideoPlayUrlV2(peer: Peer, msgId: string, elemId: string, videoCodecFormat: number, exParams: {
|
getVideoPlayUrlV2 (peer: Peer, msgId: string, elemId: string, videoCodecFormat: number, exParams: {
|
||||||
downSourceType: number,
|
downSourceType: number,
|
||||||
triggerType: number
|
triggerType: number;
|
||||||
}): Promise<GeneralCallResult & {
|
}): Promise<GeneralCallResult & {
|
||||||
urlResult: {
|
urlResult: {
|
||||||
v4IpUrl: [],
|
v4IpUrl: [],
|
||||||
@@ -91,15 +91,15 @@ export interface NodeIKernelRichMediaService {
|
|||||||
domainUrl: Array<{
|
domainUrl: Array<{
|
||||||
url: string,
|
url: string,
|
||||||
isHttps: boolean,
|
isHttps: boolean,
|
||||||
httpsDomain: string
|
httpsDomain: string;
|
||||||
}>,
|
}>,
|
||||||
videoCodecFormat: number
|
videoCodecFormat: number;
|
||||||
}
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
getRichMediaFileDir(elementType: number, downType: number, isTemp: boolean): unknown;
|
getRichMediaFileDir (elementType: number, downType: number, isTemp: boolean): unknown;
|
||||||
|
|
||||||
getVideoPlayUrlInVisit(arg: {
|
getVideoPlayUrlInVisit (arg: {
|
||||||
downloadType: number,
|
downloadType: number,
|
||||||
thumbSize: number,
|
thumbSize: number,
|
||||||
msgId: string,
|
msgId: string,
|
||||||
@@ -111,17 +111,17 @@ export interface NodeIKernelRichMediaService {
|
|||||||
peerUid: string,
|
peerUid: string,
|
||||||
guildId: string,
|
guildId: string,
|
||||||
ele: MessageElement,
|
ele: MessageElement,
|
||||||
useHttps: boolean
|
useHttps: boolean;
|
||||||
}): Promise<unknown>;
|
}): Promise<unknown>;
|
||||||
|
|
||||||
isFileExpired(arg: number): unknown;
|
isFileExpired (arg: number): unknown;
|
||||||
|
|
||||||
deleteGroupFolder(GroupCode: string, FolderId: string): Promise<GeneralCallResult & {
|
deleteGroupFolder (GroupCode: string, FolderId: string): Promise<GeneralCallResult & {
|
||||||
groupFileCommonResult: { retCode: number, retMsg: string, clientWording: string }
|
groupFileCommonResult: { retCode: number, retMsg: string, clientWording: string; };
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
// 参数与getVideoPlayUrlInVisit一样
|
// 参数与getVideoPlayUrlInVisit一样
|
||||||
downloadRichMediaInVisit(arg: {
|
downloadRichMediaInVisit (arg: {
|
||||||
downloadType: number,
|
downloadType: number,
|
||||||
thumbSize: number,
|
thumbSize: number,
|
||||||
msgId: string,
|
msgId: string,
|
||||||
@@ -133,10 +133,10 @@ export interface NodeIKernelRichMediaService {
|
|||||||
peerUid: string,
|
peerUid: string,
|
||||||
guildId: string,
|
guildId: string,
|
||||||
ele: MessageElement,
|
ele: MessageElement,
|
||||||
useHttps: boolean
|
useHttps: boolean;
|
||||||
}): unknown;
|
}): unknown;
|
||||||
|
|
||||||
downloadFileForModelId(peer: Peer, ModelId: string[], unknown: string): Promise<unknown>;
|
downloadFileForModelId (peer: Peer, ModelId: string[], unknown: string): Promise<unknown>;
|
||||||
|
|
||||||
// 第三个参数 Array<Type>
|
// 第三个参数 Array<Type>
|
||||||
// this.fileId = "";
|
// this.fileId = "";
|
||||||
@@ -146,83 +146,83 @@ export interface NodeIKernelRichMediaService {
|
|||||||
// this.fileSize = j2;
|
// this.fileSize = j2;
|
||||||
// this.fileModelId = j3;
|
// this.fileModelId = j3;
|
||||||
|
|
||||||
downloadFileForFileUuid(peer: Peer, uuid: string, arg3: {
|
downloadFileForFileUuid (peer: Peer, uuid: string, arg3: {
|
||||||
fileId: string,
|
fileId: string,
|
||||||
fileName: string,
|
fileName: string,
|
||||||
fileSize: string,
|
fileSize: string,
|
||||||
fileModelId: string
|
fileModelId: string;
|
||||||
}[]): Promise<unknown>;
|
}[]): Promise<unknown>;
|
||||||
|
|
||||||
downloadFileByUrlList(fileDownloadTyp: UrlFileDownloadType, urlList: Array<string>): unknown;
|
downloadFileByUrlList (fileDownloadTyp: UrlFileDownloadType, urlList: Array<string>): unknown;
|
||||||
|
|
||||||
downloadFileForFileInfo(fileInfo: CommonFileInfo[], savePath: string): unknown;
|
downloadFileForFileInfo (fileInfo: CommonFileInfo[], savePath: string): unknown;
|
||||||
|
|
||||||
createGroupFolder(GroupCode: string, FolderName: string): Promise<GeneralCallResult & {
|
createGroupFolder (GroupCode: string, FolderName: string): Promise<GeneralCallResult & {
|
||||||
resultWithGroupItem: { result: unknown, groupItem: Array<unknown> }
|
resultWithGroupItem: { result: unknown, groupItem: Array<unknown>; };
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
downloadFile(commonFile: CommonFileInfo, arg2: unknown, arg3: unknown, savePath: string): unknown;
|
downloadFile (arg1: unknown, arg2: number, arg3: number, arg4: string): unknown;
|
||||||
|
|
||||||
createGroupFolder(arg1: unknown, arg2: unknown): unknown;
|
createGroupFolder (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
downloadGroupFolder(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
downloadGroupFolder (arg1: string, arg2: string, arg3: string): unknown;
|
||||||
|
|
||||||
renameGroupFolder(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
renameGroupFolder (arg1: string, arg2: string, arg3: string): unknown;
|
||||||
|
|
||||||
deleteGroupFolder(arg1: unknown, arg2: unknown): unknown;
|
deleteGroupFolder (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
deleteTransferInfo(arg1: unknown, arg2: unknown): unknown;
|
deleteTransferInfo (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
cancelTransferTask(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
cancelTransferTask (arg1: Peer, arg2: Array<unknown>[], arg3: string): unknown;
|
||||||
|
|
||||||
cancelUrlDownload(arg: unknown): unknown;
|
cancelUrlDownload (arg: unknown): unknown;
|
||||||
|
|
||||||
updateOnlineVideoElemStatus(arg: unknown): unknown;
|
updateOnlineVideoElemStatus (arg: unknown): unknown;
|
||||||
|
|
||||||
getGroupSpace(arg: unknown): unknown;
|
getGroupSpace (arg: unknown): unknown;
|
||||||
|
|
||||||
getGroupFileList(groupCode: string, params: GetFileListParam): Promise<GeneralCallResult & {
|
getGroupFileList (groupCode: string, params: GetFileListParam): Promise<GeneralCallResult & {
|
||||||
groupSpaceResult: {
|
groupSpaceResult: {
|
||||||
retCode: number
|
retCode: number;
|
||||||
retMsg: string
|
retMsg: string;
|
||||||
clientWording: string
|
clientWording: string;
|
||||||
totalSpace: number
|
totalSpace: number;
|
||||||
usedSpace: number
|
usedSpace: number;
|
||||||
allUpload: boolean
|
allUpload: boolean;
|
||||||
}
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
getGroupFileInfo(arg1: unknown, arg2: unknown): unknown;
|
getGroupFileInfo (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
getGroupTransferList(arg1: unknown, arg2: unknown): unknown;
|
getGroupTransferList (arg1: string, arg2: unknown): unknown;
|
||||||
|
|
||||||
renameGroupFile(arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown, arg5: unknown): unknown;
|
renameGroupFile (arg1: string, arg2: number, arg3: string, arg4: string, arg5: string): unknown;
|
||||||
|
|
||||||
moveGroupFile(groupCode: string, busId: Array<number>, fileList: Array<string>, currentParentDirectory: string, targetParentDirectory: string): Promise<GeneralCallResult & {
|
moveGroupFile (groupCode: string, busId: Array<number>, fileList: Array<string>, currentParentDirectory: string, targetParentDirectory: string): Promise<GeneralCallResult & {
|
||||||
moveGroupFileResult: {
|
moveGroupFileResult: {
|
||||||
result: {
|
result: {
|
||||||
retCode: number,
|
retCode: number,
|
||||||
retMsg: symbol,
|
retMsg: symbol,
|
||||||
clientWording: string
|
clientWording: string;
|
||||||
},
|
},
|
||||||
successFileIdList: Array<string>,
|
successFileIdList: Array<string>,
|
||||||
failFileIdList: Array<string>
|
failFileIdList: Array<string>;
|
||||||
}
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
transGroupFile(groupCode: string, fileId: string): Promise<GeneralCallResult & {
|
transGroupFile (groupCode: string, fileId: string): Promise<GeneralCallResult & {
|
||||||
transGroupFileResult: {
|
transGroupFileResult: {
|
||||||
result: {
|
result: {
|
||||||
retCode: number
|
retCode: number;
|
||||||
retMsg: string
|
retMsg: string;
|
||||||
clientWording: string
|
clientWording: string;
|
||||||
}
|
};
|
||||||
saveBusId: number
|
saveBusId: number;
|
||||||
saveFilePath: string
|
saveFilePath: string;
|
||||||
}
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
searchGroupFile(
|
searchGroupFile (
|
||||||
keywords: Array<string>,
|
keywords: Array<string>,
|
||||||
param: {
|
param: {
|
||||||
groupIds: Array<string>,
|
groupIds: Array<string>,
|
||||||
@@ -230,55 +230,57 @@ export interface NodeIKernelRichMediaService {
|
|||||||
context: string,
|
context: string,
|
||||||
count: number,
|
count: number,
|
||||||
sortType: number,
|
sortType: number,
|
||||||
groupNames: Array<string>
|
groupNames: Array<string>;
|
||||||
}): Promise<unknown>;
|
}): Promise<unknown>;
|
||||||
|
|
||||||
searchGroupFileByWord(arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown, arg5: unknown): unknown;
|
searchGroupFileByWord (arg1: unknown[], arg2: unknown[], arg3: string, arg4: string, arg5: number): unknown;
|
||||||
|
|
||||||
deleteGroupFile(GroupCode: string, params: Array<number>, Files: Array<string>): Promise<GeneralCallResult & {
|
deleteGroupFile (GroupCode: string, params: Array<number>, Files: Array<string>): Promise<GeneralCallResult & {
|
||||||
transGroupFileResult: {
|
transGroupFileResult: {
|
||||||
result: unknown
|
result: unknown;
|
||||||
successFileIdList: Array<unknown>
|
successFileIdList: Array<unknown>;
|
||||||
failFileIdList: Array<unknown>
|
failFileIdList: Array<unknown>;
|
||||||
}
|
};
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
translateEnWordToZn(words: string[]): Promise<GeneralCallResult & { words: string[] }>;
|
translateEnWordToZn (words: string[]): Promise<GeneralCallResult & { words: string[]; }>;
|
||||||
|
|
||||||
getScreenOCR(path: string): Promise<unknown>;
|
getScreenOCR (path: string): Promise<unknown>;
|
||||||
|
|
||||||
batchGetGroupFileCount(Gids: Array<string>): Promise<GeneralCallResult & {
|
batchGetGroupFileCount (Gids: Array<string>): Promise<GeneralCallResult & {
|
||||||
groupCodes: Array<string>,
|
groupCodes: Array<string>,
|
||||||
groupFileCounts: Array<number>
|
groupFileCounts: Array<number>;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
queryPicDownloadSize(arg: unknown): unknown;
|
queryPicDownloadSize (arg: unknown): unknown;
|
||||||
|
|
||||||
searchGroupFile(arg1: unknown, arg2: unknown): unknown;
|
searchGroupFile (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
searchMoreGroupFile(arg: unknown): unknown;
|
searchMoreGroupFile (arg: unknown): unknown;
|
||||||
|
|
||||||
cancelSearcheGroupFile(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
cancelSearcheGroupFile (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
onlyDownloadFile(peer: Peer, arg2: unknown, arg3: Array<{
|
onlyDownloadFile (arg1: Peer, arg2: string, arg3: Array<unknown>[]): unknown;
|
||||||
fileId: string,
|
|
||||||
fileName: string,
|
|
||||||
fileSize: string,
|
|
||||||
fileModelId: string
|
|
||||||
}
|
|
||||||
>): unknown;
|
|
||||||
|
|
||||||
onlyUploadFile(arg1: unknown, arg2: unknown): unknown;
|
onlyUploadFile (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
isExtraLargePic(arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
isExtraLargePic (arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
uploadRMFileWithoutMsg(arg: {
|
uploadRMFileWithoutMsg (arg: {
|
||||||
bizType: RMBizTypeEnum,
|
bizType: RMBizTypeEnum,
|
||||||
filePath: string,
|
filePath: string,
|
||||||
peerUid: string,
|
peerUid: string,
|
||||||
transferId: string
|
transferId: string;
|
||||||
useNTV2: string
|
useNTV2: string;
|
||||||
}): Promise<unknown>;
|
}): Promise<unknown>;
|
||||||
|
|
||||||
isNull(): boolean;
|
isNull (): boolean;
|
||||||
|
|
||||||
|
getRichMediaCodecInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getScreenOCRWithSourceType (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
imageTranslate (arg1: string, arg2: string, arg3: number): unknown;
|
||||||
|
|
||||||
|
downloadFileByUrl (arg1: number, arg2: string, arg3: boolean): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,47 +2,127 @@ import { NodeIKernelRobotListener } from '@/napcat-core/listeners';
|
|||||||
import { GeneralCallResult, Peer } from '..';
|
import { GeneralCallResult, Peer } from '..';
|
||||||
|
|
||||||
export interface NodeIKernelRobotService {
|
export interface NodeIKernelRobotService {
|
||||||
fetchGroupRobotStoreDiscovery(arg: unknown): unknown;
|
addKernelRobotListener (listener: NodeIKernelRobotListener): number;
|
||||||
|
|
||||||
sendGroupRobotStoreSearch(arg: unknown): unknown;
|
removeKernelRobotListener (listenerId: number): void;
|
||||||
|
|
||||||
fetchGroupRobotStoreCategoryList(arg: unknown): unknown;
|
fetchGroupRobotStoreDiscovery (arg: unknown): unknown;
|
||||||
|
|
||||||
FetchSubscribeMsgTemplate(arg: unknown): unknown;
|
fetchGroupRobotStoreCategoryList (arg: unknown): unknown;
|
||||||
|
|
||||||
FetchSubcribeMsgTemplateStatus(arg: unknown): unknown;
|
FetchSubscribeMsgTemplate (arg: unknown): unknown;
|
||||||
|
|
||||||
SubscribeMsgTemplateSet(arg1: unknown, arg2: unknown): unknown;
|
FetchSubcribeMsgTemplateStatus (arg: unknown): unknown;
|
||||||
|
|
||||||
fetchRecentUsedRobots(arg: unknown): unknown;
|
SubscribeMsgTemplateSet (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
fetchShareArkInfo(arg: unknown): unknown;
|
fetchRecentUsedRobots (arg: unknown): unknown;
|
||||||
|
|
||||||
addKernelRobotListener(Listener: NodeIKernelRobotListener): number;
|
fetchShareArkInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
removeKernelRobotListener(ListenerId: number): unknown;
|
getAllRobotFriendsFromCache (): Promise<unknown>;
|
||||||
|
|
||||||
getAllRobotFriendsFromCache(): Promise<unknown>;
|
fetchAllRobots (arg1: boolean, arg2: unknown): unknown;
|
||||||
|
|
||||||
fetchAllRobots(arg1: unknown, arg2: unknown): unknown;
|
removeAllRecommendCache (): unknown;
|
||||||
|
|
||||||
removeAllRecommendCache(): unknown;
|
setRobotPickTts (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
setRobotPickTts(arg1: unknown, arg2: unknown): unknown;
|
getRobotUinRange (data: unknown): Promise<{ response: { robotUinRanges: Array<unknown>; }; }>;
|
||||||
|
|
||||||
getRobotUinRange(data: unknown): Promise<{ response: { robotUinRanges: Array<unknown> } }>;
|
getRobotFunctions (peer: Peer, params: {
|
||||||
|
|
||||||
getRobotFunctions(peer: Peer, params: {
|
|
||||||
uins: Array<string>,
|
uins: Array<string>,
|
||||||
num: 0,
|
num: 0,
|
||||||
client_info: { platform: 4, version: '', build_num: 9999 },
|
client_info: { platform: 4, version: '', build_num: 9999; },
|
||||||
tinyids: [],
|
tinyids: [],
|
||||||
page: 0,
|
page: 0,
|
||||||
full_fetch: false,
|
full_fetch: false,
|
||||||
scene: 4,
|
scene: 4,
|
||||||
filter: 1,
|
filter: 1,
|
||||||
bkn: ''
|
bkn: '';
|
||||||
}): Promise<GeneralCallResult & { response: { bot_features: Array<unknown>, next_page: number } }>;
|
}): Promise<GeneralCallResult & { response: { bot_features: Array<unknown>, next_page: number; }; }>;
|
||||||
|
|
||||||
isNull(): boolean;
|
fetchRobotShareLimit (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
updateGroupRobotProfile (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
sendCommonRobotToGuild (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
sendGroupRobotStoreSearch (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchMyRobotLists (arg: unknown): unknown;
|
||||||
|
|
||||||
|
batchGetBotsMenu (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchAddRobotGroupList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getGuildRobotList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
querySessionList (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchListRobot (arg: unknown): unknown;
|
||||||
|
|
||||||
|
subscribeGuildGlobalRobot (arg: unknown): unknown;
|
||||||
|
|
||||||
|
addGuildRobot (arg: unknown): unknown;
|
||||||
|
|
||||||
|
upMicGuildRobot (arg: unknown): unknown;
|
||||||
|
|
||||||
|
downMicGuildRobot (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getRedDot (arg: unknown): unknown;
|
||||||
|
|
||||||
|
delRedDot (arg: unknown): unknown;
|
||||||
|
|
||||||
|
changeMyBot (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getAudioLiveRobotStatus (arg: unknown): unknown;
|
||||||
|
|
||||||
|
backFlowRobotCoreInfos (arg: unknown): unknown;
|
||||||
|
|
||||||
|
batchFetchRobotCoreInfos (arg: unknown): unknown;
|
||||||
|
|
||||||
|
queryPicRecomQuestions (arg: unknown): unknown;
|
||||||
|
|
||||||
|
delSessionMsgs (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchMobileRobotRecommendCards (arg: unknown): unknown;
|
||||||
|
|
||||||
|
saveSelectedAIModelOrOptIds (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setRobotStoryEnter (arg: unknown): unknown;
|
||||||
|
|
||||||
|
aiGenAvatar (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchRobotFeatureWithReq (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchGroupRobotProfileWithReq (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setAddRobotToGroup (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setRemoveRobotFromGroup (arg: unknown): unknown;
|
||||||
|
|
||||||
|
FetchGroupRobotInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchGuildRobotInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
aiGenBotInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchAiGenTemplateInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchShareInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
updateShareInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
queryGuildGlobalRobotSubscription (arg: unknown): unknown;
|
||||||
|
|
||||||
|
resetConversation (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setGuildRobotPermission (arg: unknown): unknown;
|
||||||
|
|
||||||
|
fetchGuildRobotPermission (arg: unknown): unknown;
|
||||||
|
|
||||||
|
editSession (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,134 +3,146 @@ import { GeneralCallResult } from './common';
|
|||||||
|
|
||||||
export interface NodeIKernelSearchService {
|
export interface NodeIKernelSearchService {
|
||||||
|
|
||||||
addKernelSearchListener(listener: unknown): number;
|
addKernelSearchListener (listener: unknown): number;
|
||||||
|
|
||||||
removeKernelSearchListener(listenerId: number): void;
|
removeKernelSearchListener (listenerId: number): void;
|
||||||
|
|
||||||
searchStranger(unknown: string, searchStranger: unknown, searchParams: unknown): Promise<unknown>;
|
searchStranger (keyword: string, searchType: unknown, searchParams: unknown): Promise<unknown>;
|
||||||
|
|
||||||
searchGroup(param: {
|
searchGroup (param: {
|
||||||
keyWords: string,
|
keyWords: string,
|
||||||
groupNum: number,
|
groupNum: number,
|
||||||
exactSearch: boolean,
|
exactSearch: boolean,
|
||||||
penetrate: string
|
penetrate: string;
|
||||||
}): Promise<GeneralCallResult>;// needs 1 arguments
|
}): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
searchLocalInfo(keywords: string, type: number/* 4 */): unknown;
|
searchLocalInfo (keywords: string, type: number): unknown;
|
||||||
|
|
||||||
cancelSearchLocalInfo(...args: unknown[]): unknown;// needs 3 arguments
|
cancelSearchLocalInfo (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
searchBuddyChatInfo(...args: unknown[]): unknown;// needs 2 arguments
|
searchBuddyChatInfo (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
searchMoreBuddyChatInfo(...args: unknown[]): unknown;// needs 1 arguments
|
searchMoreBuddyChatInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
cancelSearchBuddyChatInfo(...args: unknown[]): unknown;// needs 3 arguments
|
cancelSearchBuddyChatInfo (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
searchContact(...args: unknown[]): unknown;// needs 2 arguments
|
searchContact (arg1: Array<unknown>[], arg2: unknown): unknown;
|
||||||
|
|
||||||
searchMoreContact(...args: unknown[]): unknown;// needs 1 arguments
|
searchMoreContact (arg: unknown): unknown;
|
||||||
|
|
||||||
cancelSearchContact(...args: unknown[]): unknown;// needs 3 arguments
|
cancelSearchContact (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
searchGroupChatInfo(...args: unknown[]): unknown;// needs 3 arguments
|
searchGroupChatInfo (arg1: unknown[], arg2: unknown, arg3: number): unknown;
|
||||||
|
|
||||||
resetSearchGroupChatInfoSortType(...args: unknown[]): unknown;// needs 3 arguments
|
resetSearchGroupChatInfoSortType (arg1: number, arg2: number, arg3: number): unknown;
|
||||||
|
|
||||||
resetSearchGroupChatInfoFilterMembers(...args: unknown[]): unknown;// needs 3 arguments
|
resetSearchGroupChatInfoFilterMembers (arg1: number, arg2: Array<unknown>[], arg3: number): unknown;
|
||||||
|
|
||||||
searchMoreGroupChatInfo(...args: unknown[]): unknown;// needs 1 arguments
|
searchMoreGroupChatInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
cancelSearchGroupChatInfo(...args: unknown[]): unknown;// needs 3 arguments
|
cancelSearchGroupChatInfo (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
searchChatsWithKeywords(...args: unknown[]): unknown;// needs 3 arguments
|
searchChatsWithKeywords (arg1: unknown[], arg2: number, arg3: number): unknown;
|
||||||
|
|
||||||
searchMoreChatsWithKeywords(...args: unknown[]): unknown;// needs 1 arguments
|
searchMoreChatsWithKeywords (arg: unknown): unknown;
|
||||||
|
|
||||||
cancelSearchChatsWithKeywords(...args: unknown[]): unknown;// needs 3 arguments
|
cancelSearchChatsWithKeywords (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
searchChatMsgs(...args: unknown[]): unknown;// needs 2 arguments
|
searchChatMsgs (arg1: Array<unknown>[], arg2: unknown): unknown;
|
||||||
|
|
||||||
searchMoreChatMsgs(...args: unknown[]): unknown;// needs 1 arguments
|
searchMoreChatMsgs (arg: unknown): unknown;
|
||||||
|
|
||||||
cancelSearchChatMsgs(...args: unknown[]): unknown;// needs 3 arguments
|
cancelSearchChatMsgs (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
searchMsgWithKeywords(keyWords: string[], param: Peer & { searchFields: number, pageLimit: number }): Promise<GeneralCallResult>;
|
searchMsgWithKeywords (keyWords: string[], param: Peer & { searchFields: number, pageLimit: number; }): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
searchMoreMsgWithKeywords(...args: unknown[]): unknown;// needs 1 arguments
|
searchMoreMsgWithKeywords (arg: unknown): unknown;
|
||||||
|
|
||||||
cancelSearchMsgWithKeywords(...args: unknown[]): unknown;// needs 3 arguments
|
cancelSearchMsgWithKeywords (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
searchFileWithKeywords(keywords: string[], source: number): Promise<string>;// needs 2 arguments
|
searchFileWithKeywords (keywords: string[], source: number): Promise<string>;
|
||||||
|
|
||||||
searchMoreFileWithKeywords(...args: unknown[]): unknown;// needs 1 arguments
|
searchMoreFileWithKeywords (arg: unknown): unknown;
|
||||||
|
|
||||||
cancelSearchFileWithKeywords(...args: unknown[]): unknown;// needs 3 arguments
|
cancelSearchFileWithKeywords (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
searchAtMeChats(...args: unknown[]): unknown;// needs 3 arguments
|
searchFileInFileCenterForPC (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
searchMoreAtMeChats(...args: unknown[]): unknown;// needs 1 arguments
|
searchMoreFileInFileCenter (arg: unknown): unknown;
|
||||||
|
|
||||||
cancelSearchAtMeChats(...args: unknown[]): unknown;// needs 3 arguments
|
cancelSearchFileInFileCenter (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
searchChatAtMeMsgs(...args: unknown[]): unknown;// needs 1 arguments
|
searchAtMeChats (arg1: boolean, arg2: number, arg3: number): unknown;
|
||||||
|
|
||||||
searchMoreChatAtMeMsgs(...args: unknown[]): unknown;// needs 1 arguments
|
searchMoreAtMeChats (arg: unknown): unknown;
|
||||||
|
|
||||||
cancelSearchChatAtMeMsgs(...args: unknown[]): unknown;// needs 3 arguments
|
cancelSearchAtMeChats (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
addSearchHistory(param: {
|
searchChatAtMeMsgs (arg: unknown): unknown;
|
||||||
type: number, // 4
|
|
||||||
|
searchMoreChatAtMeMsgs (arg: unknown): unknown;
|
||||||
|
|
||||||
|
cancelSearchChatAtMeMsgs (arg1: number, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
|
searchRobot (arg: unknown): unknown;
|
||||||
|
|
||||||
|
searchCache (arg1: string, arg2: string, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
addSearchHistory (param: {
|
||||||
|
type: number,
|
||||||
contactList: [],
|
contactList: [],
|
||||||
id: number, // -1
|
id: number,
|
||||||
groupInfos: [],
|
groupInfos: [],
|
||||||
msgs: [],
|
msgs: [],
|
||||||
fileInfos: [
|
fileInfos: Array<{
|
||||||
{
|
chatType: ChatType,
|
||||||
chatType: ChatType,
|
buddyChatInfo: Array<{ category_name: string, peerUid: string, peerUin: string, remark: string; }>,
|
||||||
buddyChatInfo: Array<{ category_name: string, peerUid: string, peerUin: string, remark: string }>,
|
discussChatInfo: [],
|
||||||
discussChatInfo: [],
|
groupChatInfo: Array<{
|
||||||
groupChatInfo: Array<
|
groupCode: string,
|
||||||
{
|
isConf: boolean,
|
||||||
groupCode: string,
|
hasModifyConfGroupFace: boolean,
|
||||||
isConf: boolean,
|
hasModifyConfGroupName: boolean,
|
||||||
hasModifyConfGroupFace: boolean,
|
groupName: string,
|
||||||
hasModifyConfGroupName: boolean,
|
remark: string;
|
||||||
groupName: string,
|
}>,
|
||||||
remark: string
|
dataLineChatInfo: [],
|
||||||
}>,
|
tmpChatInfo: [],
|
||||||
dataLineChatInfo: [],
|
msgId: string,
|
||||||
tmpChatInfo: [],
|
msgSeq: string,
|
||||||
msgId: string,
|
msgTime: string,
|
||||||
msgSeq: string,
|
senderUid: string,
|
||||||
msgTime: string,
|
senderNick: string,
|
||||||
senderUid: string,
|
senderRemark: string,
|
||||||
senderNick: string,
|
senderCard: string,
|
||||||
senderRemark: string,
|
elemId: string,
|
||||||
senderCard: string,
|
elemType: string,
|
||||||
elemId: string,
|
fileSize: string,
|
||||||
elemType: string, // 3
|
filePath: string,
|
||||||
fileSize: string,
|
fileName: string,
|
||||||
filePath: string,
|
hits: Array<{ start: number, end: number; }>;
|
||||||
fileName: string,
|
}>;
|
||||||
hits: Array<
|
|
||||||
{
|
|
||||||
start: 12,
|
|
||||||
end: 14
|
|
||||||
}
|
|
||||||
>
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
}): Promise<{
|
}): Promise<{
|
||||||
result: number,
|
result: number,
|
||||||
errMsg: string,
|
errMsg: string,
|
||||||
id?: number
|
id?: number;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
removeSearchHistory(...args: unknown[]): unknown;// needs 1 arguments
|
removeSearchHistory (arg: unknown): unknown;
|
||||||
|
|
||||||
searchCache(...args: unknown[]): unknown;// needs 3 arguments
|
addOrUpdateSearchMostUseItem (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
clearSearchCache(...args: unknown[]): unknown;// needs 1 arguments
|
getSearchMostUseItem (arg: unknown): unknown;
|
||||||
|
|
||||||
|
deleteSearchMostUseItem (arg: unknown): unknown;
|
||||||
|
|
||||||
|
deleteGroupHistoryFile (arg: unknown): unknown;
|
||||||
|
|
||||||
|
clearSearchCache (arg: unknown): unknown;
|
||||||
|
|
||||||
|
clearSearchHistory (): unknown;
|
||||||
|
|
||||||
|
loadSearchHistory (): unknown;
|
||||||
|
|
||||||
|
initTokenizeUtil (): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
53
packages/napcat-core/services/NodeIKernelSettingService.ts
Normal file
53
packages/napcat-core/services/NodeIKernelSettingService.ts
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
export interface NodeIKernelSettingService {
|
||||||
|
addKernelSettingListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelSettingListener (listenerId: number): void;
|
||||||
|
|
||||||
|
getSettingForBuffer (key: unknown): unknown;
|
||||||
|
|
||||||
|
getSettingForNum (key: unknown): unknown;
|
||||||
|
|
||||||
|
getSettingForStr (key: unknown): unknown;
|
||||||
|
|
||||||
|
setSettingForBuffer (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setSettingForNum (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setSettingForStr (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setAutoLoginSwitch (enabled: boolean): unknown;
|
||||||
|
|
||||||
|
setNeedConfirmSwitch (enabled: boolean): unknown;
|
||||||
|
|
||||||
|
setPrivacySetting (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setSelfStartSwitch (enabled: boolean): unknown;
|
||||||
|
|
||||||
|
modifyAccount (arg: unknown): unknown;
|
||||||
|
|
||||||
|
verifyNewAccount (arg: unknown): unknown;
|
||||||
|
|
||||||
|
openUrlWithQQBrowser (url: string): unknown;
|
||||||
|
|
||||||
|
openUrlInIM (url: string): unknown;
|
||||||
|
|
||||||
|
clearCache (arg: unknown): unknown;
|
||||||
|
|
||||||
|
destroyAccount (): unknown;
|
||||||
|
|
||||||
|
isQQBrowserInstall (): boolean;
|
||||||
|
|
||||||
|
getSelfStartSwitch (): unknown;
|
||||||
|
|
||||||
|
getAutoLoginSwitch (): unknown;
|
||||||
|
|
||||||
|
getNeedConfirmSwitch (): unknown;
|
||||||
|
|
||||||
|
getPrivacySetting (): unknown;
|
||||||
|
|
||||||
|
scanCache (): unknown;
|
||||||
|
|
||||||
|
getQQBrowserSwitchFromQldQQ (): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
21
packages/napcat-core/services/NodeIKernelSkinService.ts
Normal file
21
packages/napcat-core/services/NodeIKernelSkinService.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
export interface NodeIKernelSkinService {
|
||||||
|
addKernelSkinListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelSkinListener (listenerId: number): void;
|
||||||
|
|
||||||
|
getRecommendAIOColor (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getRecommendBubbleColor (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getThemeInfoFromImage (arg: unknown): unknown;
|
||||||
|
|
||||||
|
previewTheme (arg1: number, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
setTemplateCustomPrimaryColor (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
setThemeInfo (arg1: number, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
uploadImage (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -36,15 +36,15 @@ export interface NodeIKernelStorageCleanService {
|
|||||||
|
|
||||||
reportData (): unknown;
|
reportData (): unknown;
|
||||||
|
|
||||||
getChatCacheInfo (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown): unknown;
|
getChatCacheInfo (tableType: number, pageSize: number, order: number, startPosition: number): Promise<unknown>;
|
||||||
|
|
||||||
getFileCacheInfo (arg1: unknown, arg2: unknown, arg3: unknown, arg44: unknown, args5: unknown): unknown;
|
getFileCacheInfo (fileType: number, restart: boolean, pageSize: number, lastRecord: number, param: unknown): Promise<unknown>;
|
||||||
|
|
||||||
clearChatCacheInfo (arg1: unknown, arg2: unknown): unknown;
|
clearChatCacheInfo (chatInfoList: unknown[], clearKeys: number[]): Promise<unknown>;
|
||||||
|
|
||||||
clearCacheDataByKeys (keys: Array<string>): Promise<GeneralCallResult>;
|
clearCacheDataByKeys (keys: Array<string>): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
setSilentScan (is_silent: boolean): unknown;
|
setSilentScan (isSilent: boolean): unknown;
|
||||||
|
|
||||||
closeCleanWindow (): unknown;
|
closeCleanWindow (): unknown;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
export interface NodeIKernelThirdPartySigService {
|
||||||
|
addOnSigChangeListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeSigChangeListener (listenerId: number): void;
|
||||||
|
|
||||||
|
initConfig (arg: unknown): unknown;
|
||||||
|
|
||||||
|
delThirdPartySigByUin (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getOpenIDByUin (arg1: string, arg2: number, arg3: string): unknown;
|
||||||
|
|
||||||
|
getPT4tokenByUin (arg1: string, arg2: number, arg3: Array<unknown>[]): unknown;
|
||||||
|
|
||||||
|
getThirdPartySigByUin (arg1: string, arg2: number, arg3: number, arg4: number, arg5: string, arg6: string): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
export interface NodeIKernelTianShuService {
|
export interface NodeIKernelTianShuService {
|
||||||
addKernelTianShuListener(listener:unknown): number;
|
addKernelTianShuListener (listener: unknown): number;
|
||||||
|
|
||||||
removeKernelTianShuListener(listenerId:number): void;
|
removeKernelTianShuListener (listenerId: number): void;
|
||||||
|
|
||||||
reportTianShuNumeralRed(...args: unknown[]): unknown;// needs 1 arguments
|
reportTianShuNumeralRed (arg: unknown): unknown;// needs 1 arguments
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ import { ForceFetchClientKeyRetType } from './common';
|
|||||||
|
|
||||||
export interface NodeIKernelTicketService {
|
export interface NodeIKernelTicketService {
|
||||||
|
|
||||||
addKernelTicketListener(listener: unknown): number;
|
addKernelTicketListener (listener: unknown): number;
|
||||||
|
|
||||||
removeKernelTicketListener(listenerId: number): void;
|
removeKernelTicketListener (listenerId: number): void;
|
||||||
|
|
||||||
forceFetchClientKey(arg: string): Promise<ForceFetchClientKeyRetType>;
|
forceFetchClientKey (arg: string): Promise<ForceFetchClientKeyRetType>;
|
||||||
|
|
||||||
isNull(): boolean;
|
isNull (): boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,21 +2,19 @@ import { GeneralCallResult } from './common';
|
|||||||
|
|
||||||
export interface NodeIKernelTipOffService {
|
export interface NodeIKernelTipOffService {
|
||||||
|
|
||||||
addKernelTipOffListener(listener: unknown): number;
|
addKernelTipOffListener (listener: unknown): number;
|
||||||
|
|
||||||
removeKernelTipOffListener(listenerId: unknown): void;
|
removeKernelTipOffListener (listenerId: number): void;
|
||||||
|
|
||||||
tipOffSendJsData(args: unknown[]): Promise<unknown>;// 2
|
tipOffSendJsData (arg1: unknown, arg2: unknown): Promise<unknown>;
|
||||||
|
|
||||||
getPskey(domainList: string[], nocache: boolean): Promise<GeneralCallResult & {
|
getPskey (domainList: string[], nocache: boolean): Promise<GeneralCallResult & {
|
||||||
domainPskeyMap: Map<string, string>
|
domainPskeyMap: Map<string, string>;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
tipOffSendJsData(args: unknown[]): Promise<unknown>;// 2
|
tipOffMsgs (arg: unknown): Promise<unknown>;
|
||||||
|
|
||||||
tipOffMsgs(args: unknown[]): Promise<unknown>;// 1
|
encodeUinAesInfo (arg1: unknown, arg2: unknown): Promise<unknown>;
|
||||||
|
|
||||||
encodeUinAesInfo(args: unknown[]): Promise<unknown>;// 2
|
isNull (): boolean;
|
||||||
|
|
||||||
isNull(): boolean;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
export interface NodeIKernelUnifySearchService {
|
||||||
|
checkAIAuth (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getNetResultTabs (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getNetSugWords (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getSearchAppendingInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getSearchBoxSugWords (arg: unknown): unknown;
|
||||||
|
|
||||||
|
search (arg: unknown): unknown;
|
||||||
|
|
||||||
|
unifySearch (arg: unknown): unknown;
|
||||||
|
|
||||||
|
unifySearchDiscovery (arg: unknown): unknown;
|
||||||
|
|
||||||
|
unifySearchDiscoveryInCache (arg: unknown): unknown;
|
||||||
|
|
||||||
|
wxSearchReport (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
export interface NodeIKernelUnitedConfigService {
|
export interface NodeIKernelUnitedConfigService {
|
||||||
|
|
||||||
addKernelUnitedConfigListener(listener:unknown): number;
|
addKernelUnitedConfigListener (listener: unknown): number;
|
||||||
|
|
||||||
removeKernelUnitedConfigListener(listenerId:number): void;
|
removeKernelUnitedConfigListener (listenerId: number): void;
|
||||||
|
|
||||||
fetchUnitedSwitchConfig(...args: unknown[]): unknown;// needs 1 arguments
|
fetchUnitedSwitchConfig (configIds: string[]): void;
|
||||||
|
|
||||||
isUnitedConfigSwitchOn(...args: unknown[]): unknown;// needs 1 arguments
|
isUnitedConfigSwitchOn (configId: string): boolean;
|
||||||
|
|
||||||
registerUnitedConfigPushGroupList(...args: unknown[]): unknown;// needs 1 arguments
|
registerUnitedConfigPushGroupList (groupList: string[]): void;
|
||||||
|
|
||||||
fetchUnitedCommendConfig(ids: `${string}`[]): void
|
fetchUnitedCommendConfig (ids: string[]): void;
|
||||||
|
|
||||||
loadUnitedConfig(id: string): Promise<unknown>
|
loadUnitedConfig (id: string): Promise<unknown>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
export interface NodeIKernelVasSystemUpdateService {
|
||||||
|
getResPath (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isExist (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
export interface NodeIKernelWiFiPhotoClientService {
|
||||||
|
addKernelWiFiPhotoClientListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelWiFiPhotoClientListener (listenerId: number): void;
|
||||||
|
|
||||||
|
cancelGetPhoto (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
cancelGetPhotoThumbBatch (arg: unknown): unknown;
|
||||||
|
|
||||||
|
cancelRequest (arg: unknown): unknown;
|
||||||
|
|
||||||
|
connectToHostForTest (arg: unknown): unknown;
|
||||||
|
|
||||||
|
deletePhotoBatch (arg: unknown): unknown;
|
||||||
|
|
||||||
|
disconnect (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getAlbumFileSavePath (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getAllPhotoSimpleInfo (arg: unknown): unknown;
|
||||||
|
|
||||||
|
getPhotoAndSaveAs (arg1: string, arg2: string, arg3: string): unknown;
|
||||||
|
|
||||||
|
getPhotoBatch (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getPhotoInfoBatch (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getPhotoSimpleInfoForFirstView (arg1: string, arg2: number): unknown;
|
||||||
|
|
||||||
|
getPhotoThumbBatchWithConfig (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
getWiFiPhotoDownFileInfos (arg1: string, arg2: Array<unknown>[]): unknown;
|
||||||
|
|
||||||
|
resumeUncompleteDownloadRecords (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
export interface NodeIKernelWiFiPhotoHostService {
|
||||||
|
addKernelWiFiPhotoHostListener (listener: unknown): number;
|
||||||
|
|
||||||
|
removeKernelWiFiPhotoHostListener (listenerId: number): void;
|
||||||
|
|
||||||
|
acceptRequest (arg1: number, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
disconnect (arg: unknown): unknown;
|
||||||
|
|
||||||
|
rejectRequest (arg1: number, arg2: number): unknown;
|
||||||
|
|
||||||
|
setAlbumAccessDelegate (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
export interface NodeIKernelYellowFaceForManagerService {
|
||||||
|
download (arg1: string, arg2: string, arg3: string, arg4: boolean): unknown;
|
||||||
|
|
||||||
|
setHistory (arg: unknown): unknown;
|
||||||
|
|
||||||
|
isNull (): boolean;
|
||||||
|
}
|
||||||
@@ -1,11 +1,15 @@
|
|||||||
import { NodeIO3MiscListener } from '@/napcat-core/listeners/NodeIO3MiscListener';
|
import { NodeIO3MiscListener } from '@/napcat-core/listeners/NodeIO3MiscListener';
|
||||||
|
|
||||||
export interface NodeIO3MiscService {
|
export interface NodeIO3MiscService {
|
||||||
get(): NodeIO3MiscService;
|
get (): NodeIO3MiscService;
|
||||||
|
|
||||||
addO3MiscListener(listeners: NodeIO3MiscListener): number;
|
addO3MiscListener (listener: NodeIO3MiscListener): number;
|
||||||
|
|
||||||
setAmgomDataPiece(appid: string, dataPiece: Uint8Array): void;
|
removeO3MiscListener (listenerId: number): void;
|
||||||
|
|
||||||
reportAmgomWeather(type: string, uk2: string, arg: Array<string>): void;
|
passthroughO3Data (arg1: unknown, arg2: unknown): unknown;
|
||||||
|
|
||||||
|
reportAmgomWeather (arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
|
setAmgomDataPiece (appid: string, dataPiece: Uint8Array): void;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
export interface NodeIYellowFaceService {
|
export interface NodeIYellowFaceService {
|
||||||
download(resourceConfigJson: string, resourceDir: string, cacheDir: string, force: boolean): void;
|
addListener (listener: unknown): number;
|
||||||
|
|
||||||
setHistory(fullMd5: string): void;
|
removeListener (listenerId: number): void;
|
||||||
|
|
||||||
|
download (resourceConfigJson: string, resourceDir: string, cacheDir: string, force: boolean): void;
|
||||||
|
|
||||||
|
setHistory (fullMd5: string): void;
|
||||||
|
|
||||||
|
update (arg: unknown): unknown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,36 @@ export * from './NodeIKernelDbToolsService';
|
|||||||
export * from './NodeIKernelTipOffService';
|
export * from './NodeIKernelTipOffService';
|
||||||
export * from './NodeIKernelSearchService';
|
export * from './NodeIKernelSearchService';
|
||||||
export * from './NodeIKernelCollectionService';
|
export * from './NodeIKernelCollectionService';
|
||||||
|
// === New service exports from IDA analysis ===
|
||||||
|
export * from './NodeIKernelSettingService';
|
||||||
|
export * from './NodeIKernelQiDianService';
|
||||||
|
export * from './NodeIKernelSkinService';
|
||||||
|
export * from './NodeIKernelQQPlayService';
|
||||||
|
export * from './NodeIKernelRDeliveryService';
|
||||||
|
export * from './NodeIKernelRemotingService';
|
||||||
|
export * from './NodeIKernelLiteBusinessService';
|
||||||
|
export * from './NodeIKernelGroupTabService';
|
||||||
|
export * from './NodeIKernelLockService';
|
||||||
|
export * from './NodeIKernelHandOffService';
|
||||||
|
export * from './NodeIKernelMiniAppService';
|
||||||
|
export * from './NodeIKernelPublicAccountService';
|
||||||
|
export * from './NodeIKernelThirdPartySigService';
|
||||||
|
export * from './NodeIKernelUnifySearchService';
|
||||||
|
export * from './NodeIKernelVasSystemUpdateService';
|
||||||
|
export * from './NodeIKernelPersonalAlbumService';
|
||||||
|
export * from './NodeIKernelConfigMgrService';
|
||||||
|
export * from './NodeIKernelFeedService';
|
||||||
|
export * from './NodeIKernelBdhUploadService';
|
||||||
|
export * from './NodeIKernelDirectSessionService';
|
||||||
|
export * from './NodeIKernelFileBridgeClientService';
|
||||||
|
export * from './NodeIKernelFileBridgeHostService';
|
||||||
|
export * from './NodeIKernelWiFiPhotoHostService';
|
||||||
|
export * from './NodeIKernelWiFiPhotoClientService';
|
||||||
|
export * from './NodeIKernelEmojiService';
|
||||||
|
export * from './NodeIKernelNearbyProService';
|
||||||
|
export * from './NodeIKernelAVSDKService';
|
||||||
|
export * from './NodeIKernelAddBuddyService';
|
||||||
|
export * from './NodeIKernelYellowFaceForManagerService';
|
||||||
|
|
||||||
export type ServiceNamingMapping = {
|
export type ServiceNamingMapping = {
|
||||||
NodeIKernelAvatarService: NodeIKernelAvatarService;
|
NodeIKernelAvatarService: NodeIKernelAvatarService;
|
||||||
@@ -53,6 +83,6 @@ export type ServiceNamingMapping = {
|
|||||||
NodeIKernelRichMediaService: NodeIKernelRichMediaService;
|
NodeIKernelRichMediaService: NodeIKernelRichMediaService;
|
||||||
NodeIKernelDbToolsService: NodeIKernelDbToolsService;
|
NodeIKernelDbToolsService: NodeIKernelDbToolsService;
|
||||||
NodeIKernelTipOffService: NodeIKernelTipOffService;
|
NodeIKernelTipOffService: NodeIKernelTipOffService;
|
||||||
NodeIKernelSearchService: NodeIKernelSearchService,
|
NodeIKernelSearchService: NodeIKernelSearchService;
|
||||||
NodeIKernelCollectionService: NodeIKernelCollectionService;
|
NodeIKernelCollectionService: NodeIKernelCollectionService;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -323,7 +323,7 @@ export interface FlashTransferInfo {
|
|||||||
id: string;
|
id: string;
|
||||||
urls: FlashTransferIcon[];
|
urls: FlashTransferIcon[];
|
||||||
localCachePath: string;
|
localCachePath: string;
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -337,7 +337,7 @@ export interface MarkdownElement {
|
|||||||
mdExtType?: number;
|
mdExtType?: number;
|
||||||
mdExtInfo?: {
|
mdExtInfo?: {
|
||||||
flashTransferInfo: FlashTransferInfo;
|
flashTransferInfo: FlashTransferInfo;
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -550,6 +550,96 @@ export interface QueryMsgsParams {
|
|||||||
isIncludeCurrent: boolean;
|
isIncludeCurrent: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 消息引用标识(msgId + msgSeq + msgTime)
|
||||||
|
*/
|
||||||
|
export interface MsgRef {
|
||||||
|
msgId: string;
|
||||||
|
msgSeq: string;
|
||||||
|
msgTime: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 消息完整标识(含cliSeq和msgRandom)
|
||||||
|
*/
|
||||||
|
export interface MsgIdentity {
|
||||||
|
msgId: string;
|
||||||
|
msgSeq: string;
|
||||||
|
cliSeq: string;
|
||||||
|
msgTime: string;
|
||||||
|
msgRandom: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 灰条JSON消息信息
|
||||||
|
*/
|
||||||
|
export interface GrayTipJsonInfo {
|
||||||
|
busiId: number | string;
|
||||||
|
jsonStr: string;
|
||||||
|
recentAbstract: string;
|
||||||
|
isServer: boolean;
|
||||||
|
xmlToJsonParam?: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转发文件信息
|
||||||
|
*/
|
||||||
|
export interface ForwardFileInfo {
|
||||||
|
targetMsgId: string;
|
||||||
|
targetElemId: string;
|
||||||
|
commonFileInfo: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 本地灰条提示信息
|
||||||
|
*/
|
||||||
|
export interface LocalGrayTipInfo {
|
||||||
|
type: number;
|
||||||
|
robot?: unknown;
|
||||||
|
direct?: unknown;
|
||||||
|
extraJson: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Token设置信息
|
||||||
|
*/
|
||||||
|
export interface TokenInfo {
|
||||||
|
tokenType: number;
|
||||||
|
apnsToken?: string | Uint8Array;
|
||||||
|
voipToken?: string | Uint8Array;
|
||||||
|
profileId?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后台切换时的未读计数信息
|
||||||
|
*/
|
||||||
|
export interface BackGroundInfo {
|
||||||
|
c2cUnreadCnt: number;
|
||||||
|
groupUnreadCnt: number;
|
||||||
|
guildUnreadCnt: number;
|
||||||
|
guildPsvboxUnreadCnt: number;
|
||||||
|
verifyUnreadCnt: number;
|
||||||
|
contactUnreadCnt: number;
|
||||||
|
groupUnreadCodes: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 消息类型过滤参数
|
||||||
|
*/
|
||||||
|
export interface MsgTypeFilter {
|
||||||
|
filterMsgType: Array<{ type: number; subType: Array<number>; }>;
|
||||||
|
filterSendersUid: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 空间流参数
|
||||||
|
*/
|
||||||
|
export interface SgrpStreamParams {
|
||||||
|
sgrpStreamPginSourceName: string;
|
||||||
|
sgrpVisitFrom: string;
|
||||||
|
sgrpSessionId: string;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 临时聊天信息API接口
|
* 临时聊天信息API接口
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -29,6 +29,28 @@ import { NodeIkernelTestPerformanceService } from './services/NodeIkernelTestPer
|
|||||||
import { NodeIKernelECDHService } from './services/NodeIKernelECDHService';
|
import { NodeIKernelECDHService } from './services/NodeIKernelECDHService';
|
||||||
import { NodeIO3MiscService } from './services/NodeIO3MiscService';
|
import { NodeIO3MiscService } from './services/NodeIO3MiscService';
|
||||||
import { NodeIKernelFlashTransferService } from './services/NodeIKernelFlashTransferService';
|
import { NodeIKernelFlashTransferService } from './services/NodeIKernelFlashTransferService';
|
||||||
|
import { NodeIKernelOnlineStatusService } from './services/NodeIKernelOnlineStatusService';
|
||||||
|
import { NodeIKernelBaseEmojiService } from './services/NodeIKernelBaseEmojiService';
|
||||||
|
import { NodeIKernelSettingService } from './services/NodeIKernelSettingService';
|
||||||
|
import { NodeIKernelFileAssistantService } from './services/NodeIKernelFileAssistantService';
|
||||||
|
import { NodeIKernelDbToolsService } from './services/NodeIKernelDbToolsService';
|
||||||
|
import { NodeIYellowFaceService } from './services/NodeIYellowFaceService';
|
||||||
|
import { NodeIKernelQiDianService } from './services/NodeIKernelQiDianService';
|
||||||
|
import { NodeIKernelSkinService } from './services/NodeIKernelSkinService';
|
||||||
|
import { NodeIKernelQQPlayService } from './services/NodeIKernelQQPlayService';
|
||||||
|
import { NodeIKernelRDeliveryService } from './services/NodeIKernelRDeliveryService';
|
||||||
|
import { NodeIKernelRemotingService } from './services/NodeIKernelRemotingService';
|
||||||
|
import { NodeIKernelLiteBusinessService } from './services/NodeIKernelLiteBusinessService';
|
||||||
|
import { NodeIKernelGroupTabService } from './services/NodeIKernelGroupTabService';
|
||||||
|
import { NodeIKernelLockService } from './services/NodeIKernelLockService';
|
||||||
|
import { NodeIKernelHandOffService } from './services/NodeIKernelHandOffService';
|
||||||
|
import { NodeIKernelMiniAppService } from './services/NodeIKernelMiniAppService';
|
||||||
|
import { NodeIKernelPublicAccountService } from './services/NodeIKernelPublicAccountService';
|
||||||
|
import { NodeIKernelThirdPartySigService } from './services/NodeIKernelThirdPartySigService';
|
||||||
|
import { NodeIKernelUnifySearchService } from './services/NodeIKernelUnifySearchService';
|
||||||
|
import { NodeIKernelVasSystemUpdateService } from './services/NodeIKernelVasSystemUpdateService';
|
||||||
|
import { NodeIKernelPersonalAlbumService } from './services/NodeIKernelPersonalAlbumService';
|
||||||
|
import { NodeIKernelConfigMgrService } from './services/NodeIKernelConfigMgrService';
|
||||||
|
|
||||||
export interface NodeQQNTWrapperUtil {
|
export interface NodeQQNTWrapperUtil {
|
||||||
get (): NodeQQNTWrapperUtil;
|
get (): NodeQQNTWrapperUtil;
|
||||||
@@ -39,46 +61,46 @@ export interface NodeQQNTWrapperUtil {
|
|||||||
|
|
||||||
getSsoCmdOfOidbReq (arg1: number, arg2: number): unknown;
|
getSsoCmdOfOidbReq (arg1: number, arg2: number): unknown;
|
||||||
|
|
||||||
getSsoBufferOfOidbReq (...args: unknown[]): unknown; // 有点看不懂参数定义 待补充 好像是三个参数
|
getSsoBufferOfOidbReq (arg1: unknown, arg2: unknown, arg3: unknown): unknown;
|
||||||
|
|
||||||
getOidbRspInfo (arg: string): unknown; // 可能是错的
|
getOidbRspInfo (arg: string): unknown;
|
||||||
|
|
||||||
getFileSize (path: string): Promise<number>; // 直接的猜测
|
getFileSize (path: string): Promise<number>;
|
||||||
|
|
||||||
genFileMd5Buf (arg: string): unknown; // 可能是错的
|
genFileMd5Buf (arg: string): unknown;
|
||||||
|
|
||||||
genFileMd5Hex (path: string): unknown; // 直接的猜测
|
genFileMd5Hex (path: string): unknown;
|
||||||
|
|
||||||
genFileShaBuf (path: string): unknown; // 直接的猜测
|
genFileShaBuf (path: string): unknown;
|
||||||
|
|
||||||
genFileCumulateSha1 (path: string): unknown; // 直接的猜测
|
genFileCumulateSha1 (path: string): unknown;
|
||||||
|
|
||||||
genFileShaHex (path: string): unknown; // 直接的猜测
|
genFileShaHex (path: string): unknown;
|
||||||
|
|
||||||
fileIsExist (path: string): unknown;
|
fileIsExist (path: string): unknown;
|
||||||
|
|
||||||
startTrace (path: string): unknown; // 可能是错的
|
startTrace (path: string): unknown;
|
||||||
|
|
||||||
copyFile (src: string, dst: string): unknown;
|
copyFile (src: string, dst: string): unknown;
|
||||||
|
|
||||||
genFileShaAndMd5Hex (path: string, unknown: number): unknown; // 可能是错的
|
genFileShaAndMd5Hex (path: string, unknown: number): unknown;
|
||||||
|
|
||||||
setTraceInfo (unknown: unknown): unknown;
|
setTraceInfo (unknown: unknown): unknown;
|
||||||
|
|
||||||
encodeOffLine (unknown: unknown): unknown;
|
encodeOffLine (unknown: unknown): unknown;
|
||||||
|
|
||||||
decodeOffLine (arg: string): unknown; // 可能是错的 传递hex
|
decodeOffLine (arg: string): unknown;
|
||||||
|
|
||||||
DecoderRecentInfo (arg: string): unknown; // 可能是错的 传递hex
|
DecoderRecentInfo (arg: string): unknown;
|
||||||
|
|
||||||
getPinyin (arg0: string, arg1: boolean): unknown;
|
getPinyin (arg0: string, arg1: boolean): unknown;
|
||||||
|
|
||||||
matchInPinyin (arg0: unknown[], arg1: string): unknown; // 参数特复杂 arg0是个复杂数据类型
|
getPinyinExt (arg0: string, arg1: boolean): unknown;
|
||||||
|
|
||||||
|
matchInPinyin (arg0: unknown[], arg1: string): unknown;
|
||||||
|
|
||||||
makeDirByPath (arg0: string): unknown;
|
makeDirByPath (arg0: string): unknown;
|
||||||
|
|
||||||
emptyWorkingSet (arg0: number): unknown; // 参数是UINT32
|
|
||||||
|
|
||||||
runProcess (arg0: string, arg1: boolean): unknown;
|
runProcess (arg0: string, arg1: boolean): unknown;
|
||||||
|
|
||||||
runProcessArgs (arg0: string, arg1: { [key: string]: string; }, arg2: boolean): unknown;
|
runProcessArgs (arg0: string, arg1: { [key: string]: string; }, arg2: boolean): unknown;
|
||||||
@@ -141,6 +163,24 @@ export interface NodeQQNTWrapperUtil {
|
|||||||
|
|
||||||
isNull (): unknown;
|
isNull (): unknown;
|
||||||
|
|
||||||
|
deletePath (path: string): unknown;
|
||||||
|
|
||||||
|
calculateDirectoryTotalSize (path: string): unknown;
|
||||||
|
|
||||||
|
GetBaseEmojiPathByIds (arg: unknown): unknown;
|
||||||
|
|
||||||
|
SetMobileBaseEmojiPath (arg0: unknown, arg1: unknown): unknown;
|
||||||
|
|
||||||
|
setCreateThumbailSupportedFileExtensions (arg0: unknown, arg1: unknown): unknown;
|
||||||
|
|
||||||
|
setFileDropNativeWindowHide (arg: unknown): unknown;
|
||||||
|
|
||||||
|
setFileDropWindowNativeWindowHandle (arg: unknown): unknown;
|
||||||
|
|
||||||
|
startListenFileDragEvent (arg: unknown): unknown;
|
||||||
|
|
||||||
|
stopAccessingSecurityScopedResource (arg: unknown): unknown;
|
||||||
|
|
||||||
createThumbnailImage (
|
createThumbnailImage (
|
||||||
serviceName: string,
|
serviceName: string,
|
||||||
filePath: string,
|
filePath: string,
|
||||||
@@ -180,6 +220,43 @@ export interface NodeIQQNTWrapperSession {
|
|||||||
|
|
||||||
startNT (): void;
|
startNT (): void;
|
||||||
|
|
||||||
|
// === Session lifecycle ===
|
||||||
|
close (arg: unknown): void;
|
||||||
|
|
||||||
|
onLine (arg: unknown): void;
|
||||||
|
|
||||||
|
offLine (arg: unknown): void;
|
||||||
|
|
||||||
|
disableIpDirect (arg: unknown): void;
|
||||||
|
|
||||||
|
getAccountPath (arg: unknown): string;
|
||||||
|
|
||||||
|
updateTicket (arg: unknown): void;
|
||||||
|
|
||||||
|
// === SSO/Network dispatch ===
|
||||||
|
onDispatchPush (arg1: unknown, arg2: unknown): void;
|
||||||
|
|
||||||
|
onDispatchPushWithJson (arg1: unknown, arg2: unknown): void;
|
||||||
|
|
||||||
|
onDispatchRequestReply (arg1: unknown, arg2: unknown, arg3: unknown): void;
|
||||||
|
|
||||||
|
onMsfPush (arg1: unknown, arg2: unknown, arg3: unknown): void;
|
||||||
|
|
||||||
|
onNetReply (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown): void;
|
||||||
|
|
||||||
|
onSendOidbReply (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown, arg5: unknown): void;
|
||||||
|
|
||||||
|
onSendSSOReply (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown, arg5: unknown): void;
|
||||||
|
|
||||||
|
onUIConfigUpdate (arg1: unknown, arg2: unknown): void;
|
||||||
|
|
||||||
|
setOnMsfStatusChanged (arg1: unknown, arg2: unknown, arg3: unknown): void;
|
||||||
|
|
||||||
|
setOnNetworkChanged (arg: unknown): void;
|
||||||
|
|
||||||
|
setOnWeakNetChanged (arg: unknown): void;
|
||||||
|
|
||||||
|
// === Service getters ===
|
||||||
getBdhUploadService (): unknown;
|
getBdhUploadService (): unknown;
|
||||||
|
|
||||||
getECDHService (): NodeIKernelECDHService;
|
getECDHService (): NodeIKernelECDHService;
|
||||||
@@ -220,47 +297,47 @@ export interface NodeIQQNTWrapperSession {
|
|||||||
|
|
||||||
getDirectSessionService (): unknown;
|
getDirectSessionService (): unknown;
|
||||||
|
|
||||||
getRDeliveryService (): unknown;
|
getRDeliveryService (): NodeIKernelRDeliveryService;
|
||||||
|
|
||||||
getAvatarService (): NodeIKernelAvatarService;
|
getAvatarService (): NodeIKernelAvatarService;
|
||||||
|
|
||||||
getFeedChannelService (): unknown;
|
getFeedChannelService (): unknown;
|
||||||
|
|
||||||
getYellowFaceService (): unknown;
|
getYellowFaceService (): NodeIYellowFaceService;
|
||||||
|
|
||||||
getCollectionService (): NodeIKernelCollectionService;
|
getCollectionService (): NodeIKernelCollectionService;
|
||||||
|
|
||||||
getSettingService (): unknown;
|
getSettingService (): NodeIKernelSettingService;
|
||||||
|
|
||||||
getQiDianService (): unknown;
|
getQiDianService (): NodeIKernelQiDianService;
|
||||||
|
|
||||||
getFileAssistantService (): unknown;
|
getFileAssistantService (): NodeIKernelFileAssistantService;
|
||||||
|
|
||||||
getGuildService (): unknown;
|
getGuildService (): unknown;
|
||||||
|
|
||||||
getSkinService (): unknown;
|
getSkinService (): NodeIKernelSkinService;
|
||||||
|
|
||||||
getTestPerformanceService (): NodeIkernelTestPerformanceService;
|
getTestPerformanceService (): NodeIkernelTestPerformanceService;
|
||||||
|
|
||||||
getQQPlayService (): unknown;
|
getQQPlayService (): NodeIKernelQQPlayService;
|
||||||
|
|
||||||
getDbToolsService (): unknown;
|
getDbToolsService (): NodeIKernelDbToolsService;
|
||||||
|
|
||||||
getUixConvertService (): NodeIKernelUixConvertService;
|
getUixConvertService (): NodeIKernelUixConvertService;
|
||||||
|
|
||||||
getOnlineStatusService (): unknown;
|
getOnlineStatusService (): NodeIKernelOnlineStatusService;
|
||||||
|
|
||||||
getRemotingService (): unknown;
|
getRemotingService (): NodeIKernelRemotingService;
|
||||||
|
|
||||||
getGroupTabService (): unknown;
|
getGroupTabService (): NodeIKernelGroupTabService;
|
||||||
|
|
||||||
getGroupSchoolService (): unknown;
|
getGroupSchoolService (): unknown;
|
||||||
|
|
||||||
getLiteBusinessService (): unknown;
|
getLiteBusinessService (): NodeIKernelLiteBusinessService;
|
||||||
|
|
||||||
getGuildMsgService (): unknown;
|
getGuildMsgService (): unknown;
|
||||||
|
|
||||||
getLockService (): unknown;
|
getLockService (): NodeIKernelLockService;
|
||||||
|
|
||||||
getMSFService (): NodeIKernelMSFService;
|
getMSFService (): NodeIKernelMSFService;
|
||||||
|
|
||||||
@@ -270,7 +347,29 @@ export interface NodeIQQNTWrapperSession {
|
|||||||
|
|
||||||
getRecentContactService (): NodeIKernelRecentContactService;
|
getRecentContactService (): NodeIKernelRecentContactService;
|
||||||
|
|
||||||
getConfigMgrService (): unknown;
|
getConfigMgrService (): NodeIKernelConfigMgrService;
|
||||||
|
|
||||||
|
getBaseEmojiService (): NodeIKernelBaseEmojiService;
|
||||||
|
|
||||||
|
getHandOffService (): NodeIKernelHandOffService;
|
||||||
|
|
||||||
|
getMiniAppService (): NodeIKernelMiniAppService;
|
||||||
|
|
||||||
|
getPublicAccountService (): NodeIKernelPublicAccountService;
|
||||||
|
|
||||||
|
getThirdPartySigService (): NodeIKernelThirdPartySigService;
|
||||||
|
|
||||||
|
getUnifySearchService (): NodeIKernelUnifySearchService;
|
||||||
|
|
||||||
|
getVasSystemUpdateService (): NodeIKernelVasSystemUpdateService;
|
||||||
|
|
||||||
|
getPersonalAlbumService (): NodeIKernelPersonalAlbumService;
|
||||||
|
|
||||||
|
getGProGuildMsgService (): unknown;
|
||||||
|
|
||||||
|
getFileBridgeHostService (): unknown;
|
||||||
|
|
||||||
|
getWiFiPhotoClientService (): unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface EnginInitDesktopConfig {
|
export interface EnginInitDesktopConfig {
|
||||||
@@ -291,6 +390,14 @@ export interface NodeIQQNTWrapperEngine {
|
|||||||
get (): NodeIQQNTWrapperEngine;
|
get (): NodeIQQNTWrapperEngine;
|
||||||
|
|
||||||
initWithDeskTopConfig (config: EnginInitDesktopConfig, nodeIGlobalAdapter: NodeIGlobalAdapter): void;
|
initWithDeskTopConfig (config: EnginInitDesktopConfig, nodeIGlobalAdapter: NodeIGlobalAdapter): void;
|
||||||
|
|
||||||
|
initWithMobileConfig (config: unknown, nodeIGlobalAdapter: NodeIGlobalAdapter): void;
|
||||||
|
|
||||||
|
initLog (arg: unknown): void;
|
||||||
|
|
||||||
|
setLogLevel (arg: unknown): void;
|
||||||
|
|
||||||
|
onSendSSOReply (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown, arg5: unknown): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface WrapperNodeApi {
|
export interface WrapperNodeApi {
|
||||||
|
|||||||
21
packages/napcat-dpapi/LICENSE
Normal file
21
packages/napcat-dpapi/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2023 Xavier Monin
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
4
packages/napcat-dpapi/README.md
Normal file
4
packages/napcat-dpapi/README.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# @primno/dpapi
|
||||||
|
|
||||||
|
## 协议与说明
|
||||||
|
全部遵守原仓库要求
|
||||||
65
packages/napcat-dpapi/index.ts
Normal file
65
packages/napcat-dpapi/index.ts
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/**
|
||||||
|
* napcat-dpapi - Windows DPAPI wrapper
|
||||||
|
*
|
||||||
|
* Loads the native @primno+dpapi.node addon from the runtime
|
||||||
|
* native/dpapi/ directory using process.dlopen, consistent
|
||||||
|
* with how other native modules (ffmpeg, packet, pty) are loaded.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { fileURLToPath } from 'node:url';
|
||||||
|
import path, { dirname } from 'node:path';
|
||||||
|
|
||||||
|
export type DataProtectionScope = 'CurrentUser' | 'LocalMachine';
|
||||||
|
|
||||||
|
export interface DpapiBindings {
|
||||||
|
protectData (dataToEncrypt: Uint8Array, optionalEntropy: Uint8Array | null, scope: DataProtectionScope): Uint8Array;
|
||||||
|
unprotectData (encryptData: Uint8Array, optionalEntropy: Uint8Array | null, scope: DataProtectionScope): Uint8Array;
|
||||||
|
}
|
||||||
|
|
||||||
|
let dpapiBindings: DpapiBindings | null = null;
|
||||||
|
let loadError: Error | null = null;
|
||||||
|
|
||||||
|
function getAddonPath (): string {
|
||||||
|
// At runtime, import.meta.url resolves to dist/ directory.
|
||||||
|
// Native files are at dist/native/dpapi/{platform}-{arch}/@primno+dpapi.node
|
||||||
|
const importDir = dirname(fileURLToPath(import.meta.url));
|
||||||
|
const platform = process.platform; // 'win32'
|
||||||
|
const arch = process.arch; // 'x64' or 'arm64'
|
||||||
|
return path.join(importDir, 'native', 'dpapi', `${platform}-${arch}`, '@primno+dpapi.node');
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadDpapi (): DpapiBindings {
|
||||||
|
if (dpapiBindings) {
|
||||||
|
return dpapiBindings;
|
||||||
|
}
|
||||||
|
if (loadError) {
|
||||||
|
throw loadError;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const addonPath = getAddonPath();
|
||||||
|
const nativeModule: { exports: DpapiBindings } = { exports: {} as DpapiBindings };
|
||||||
|
process.dlopen(nativeModule, addonPath);
|
||||||
|
dpapiBindings = nativeModule.exports;
|
||||||
|
return dpapiBindings;
|
||||||
|
} catch (e) {
|
||||||
|
loadError = e as Error;
|
||||||
|
throw new Error(`Failed to load DPAPI native addon: ${(e as Error).message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const isPlatformSupported = process.platform === 'win32';
|
||||||
|
|
||||||
|
export function protectData (data: Uint8Array, optionalEntropy: Uint8Array | null, scope: DataProtectionScope): Uint8Array {
|
||||||
|
return loadDpapi().protectData(data, optionalEntropy, scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function unprotectData (data: Uint8Array, optionalEntropy: Uint8Array | null, scope: DataProtectionScope): Uint8Array {
|
||||||
|
return loadDpapi().unprotectData(data, optionalEntropy, scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const Dpapi = {
|
||||||
|
protectData,
|
||||||
|
unprotectData,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Dpapi;
|
||||||
18
packages/napcat-dpapi/package.json
Normal file
18
packages/napcat-dpapi/package.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "napcat-dpapi",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"main": "index.ts",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"import": "./index.ts"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^22.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
10
packages/napcat-dpapi/tsconfig.json
Normal file
10
packages/napcat-dpapi/tsconfig.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig.base.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "./dist",
|
||||||
|
"rootDir": "."
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"./**/*.ts"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -2,6 +2,8 @@ import { NapCatPathWrapper } from 'napcat-common/src/path';
|
|||||||
import { InitWebUi, WebUiConfig, webUiRuntimePort } from 'napcat-webui-backend/index';
|
import { InitWebUi, WebUiConfig, webUiRuntimePort } from 'napcat-webui-backend/index';
|
||||||
import { NapCatAdapterManager } from 'napcat-adapter';
|
import { NapCatAdapterManager } from 'napcat-adapter';
|
||||||
import { NativePacketHandler } from 'napcat-core/packet/handler/client';
|
import { NativePacketHandler } from 'napcat-core/packet/handler/client';
|
||||||
|
import { Napi2NativeLoader } from 'napcat-core/packet/handler/napi2nativeLoader';
|
||||||
|
import { loadNapcatConfig } from '@/napcat-core/helper/config';
|
||||||
import { FFmpegService } from 'napcat-core/helper/ffmpeg/ffmpeg';
|
import { FFmpegService } from 'napcat-core/helper/ffmpeg/ffmpeg';
|
||||||
import { logSubscription, LogWrapper } from 'napcat-core/helper/log';
|
import { logSubscription, LogWrapper } from 'napcat-core/helper/log';
|
||||||
import { QQBasicInfoWrapper } from '@/napcat-core/helper/qq-basic-info';
|
import { QQBasicInfoWrapper } from '@/napcat-core/helper/qq-basic-info';
|
||||||
@@ -40,10 +42,23 @@ export async function NCoreInitFramework (
|
|||||||
const basicInfoWrapper = new QQBasicInfoWrapper({ logger });
|
const basicInfoWrapper = new QQBasicInfoWrapper({ logger });
|
||||||
const wrapper = loadQQWrapper(basicInfoWrapper.QQMainPath, basicInfoWrapper.getFullQQVersion());
|
const wrapper = loadQQWrapper(basicInfoWrapper.QQMainPath, basicInfoWrapper.getFullQQVersion());
|
||||||
const nativePacketHandler = new NativePacketHandler({ logger }); // 初始化 NativePacketHandler 用于后续使用
|
const nativePacketHandler = new NativePacketHandler({ logger }); // 初始化 NativePacketHandler 用于后续使用
|
||||||
|
const napi2nativeLoader = new Napi2NativeLoader({ logger }); // 初始化 Napi2NativeLoader 用于后续使用
|
||||||
|
const napcatConfig = loadNapcatConfig(pathWrapper.configPath);
|
||||||
|
//console.log('[NapCat] [Napi2NativeLoader]', napi2nativeLoader.nativeExports.enableAllBypasses?.());
|
||||||
|
if (process.env['NAPCAT_DISABLE_BYPASS'] !== '1') {
|
||||||
|
const bypassOptions = napcatConfig.bypass ?? {};
|
||||||
|
const bypassEnabled = napi2nativeLoader.nativeExports.enableAllBypasses?.(bypassOptions);
|
||||||
|
if (bypassEnabled) {
|
||||||
|
logger.log('[NapCat] Napi2NativeLoader: 已启用Bypass');
|
||||||
|
}
|
||||||
|
logger.log('[NapCat] Napi2NativeLoader: Framework模式Bypass配置:', bypassOptions);
|
||||||
|
} else {
|
||||||
|
logger.log('[NapCat] Napi2NativeLoader: Bypass已通过环境变量禁用');
|
||||||
|
}
|
||||||
// nativePacketHandler.onAll((packet) => {
|
// nativePacketHandler.onAll((packet) => {
|
||||||
// console.log('[Packet]', packet.uin, packet.cmd, packet.hex_data);
|
// console.log('[Packet]', packet.uin, packet.cmd, packet.hex_data);
|
||||||
// });
|
// });
|
||||||
await nativePacketHandler.init(basicInfoWrapper.getFullQQVersion());
|
await nativePacketHandler.init(basicInfoWrapper.getFullQQVersion(), napcatConfig.o3HookMode === 1 ? true : false);
|
||||||
// 在 init 之后注册监听器
|
// 在 init 之后注册监听器
|
||||||
|
|
||||||
// 初始化 FFmpeg 服务
|
// 初始化 FFmpeg 服务
|
||||||
@@ -73,11 +88,12 @@ export async function NCoreInitFramework (
|
|||||||
// 过早进入会导致addKernelMsgListener等Listener添加失败
|
// 过早进入会导致addKernelMsgListener等Listener添加失败
|
||||||
// await sleep(2500);
|
// await sleep(2500);
|
||||||
// 初始化 NapCatFramework
|
// 初始化 NapCatFramework
|
||||||
const loaderObject = new NapCatFramework(wrapper, session, logger, selfInfo, basicInfoWrapper, pathWrapper, nativePacketHandler);
|
const loaderObject = new NapCatFramework(wrapper, session, logger, selfInfo, basicInfoWrapper, pathWrapper, nativePacketHandler, napi2nativeLoader);
|
||||||
await loaderObject.core.initCore();
|
await loaderObject.core.initCore();
|
||||||
|
|
||||||
// 启动WebUi
|
// 启动WebUi
|
||||||
WebUiDataRuntime.setWorkingEnv(NapCatCoreWorkingEnv.Framework);
|
WebUiDataRuntime.setWorkingEnv(NapCatCoreWorkingEnv.Framework);
|
||||||
|
WebUiDataRuntime.setQQDataPath(loaderObject.core.dataPath);
|
||||||
InitWebUi(logger, pathWrapper, logSubscription, statusHelperSubscription).then().catch(e => logger.logError(e));
|
InitWebUi(logger, pathWrapper, logSubscription, statusHelperSubscription).then().catch(e => logger.logError(e));
|
||||||
// 使用 NapCatAdapterManager 统一管理协议适配器
|
// 使用 NapCatAdapterManager 统一管理协议适配器
|
||||||
const adapterManager = new NapCatAdapterManager(loaderObject.core, loaderObject.context, pathWrapper);
|
const adapterManager = new NapCatAdapterManager(loaderObject.core, loaderObject.context, pathWrapper);
|
||||||
@@ -100,10 +116,12 @@ export class NapCatFramework {
|
|||||||
selfInfo: SelfInfo,
|
selfInfo: SelfInfo,
|
||||||
basicInfoWrapper: QQBasicInfoWrapper,
|
basicInfoWrapper: QQBasicInfoWrapper,
|
||||||
pathWrapper: NapCatPathWrapper,
|
pathWrapper: NapCatPathWrapper,
|
||||||
packetHandler: NativePacketHandler
|
packetHandler: NativePacketHandler,
|
||||||
|
napi2nativeLoader: Napi2NativeLoader
|
||||||
) {
|
) {
|
||||||
this.context = {
|
this.context = {
|
||||||
packetHandler,
|
packetHandler,
|
||||||
|
napi2nativeLoader,
|
||||||
workingEnv: NapCatCoreWorkingEnv.Framework,
|
workingEnv: NapCatCoreWorkingEnv.Framework,
|
||||||
wrapper,
|
wrapper,
|
||||||
session,
|
session,
|
||||||
|
|||||||
@@ -22,7 +22,8 @@
|
|||||||
"napcat-adapter": "workspace:*",
|
"napcat-adapter": "workspace:*",
|
||||||
"napcat-webui-backend": "workspace:*",
|
"napcat-webui-backend": "workspace:*",
|
||||||
"napcat-vite": "workspace:*",
|
"napcat-vite": "workspace:*",
|
||||||
"napcat-qrcode": "workspace:*"
|
"napcat-qrcode": "workspace:*",
|
||||||
|
"json5": "^2.2.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.0.1"
|
"@types/node": "^22.0.1"
|
||||||
|
|||||||
BIN
packages/napcat-native/dpapi/win32-arm64/@primno+dpapi.node
Normal file
BIN
packages/napcat-native/dpapi/win32-arm64/@primno+dpapi.node
Normal file
Binary file not shown.
BIN
packages/napcat-native/dpapi/win32-x64/@primno+dpapi.node
Normal file
BIN
packages/napcat-native/dpapi/win32-x64/@primno+dpapi.node
Normal file
Binary file not shown.
BIN
packages/napcat-native/napi2native/ffmpeg.dll
Normal file
BIN
packages/napcat-native/napi2native/ffmpeg.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -13,14 +13,12 @@ import { URL } from 'url';
|
|||||||
import { ActionName } from '@/napcat-onebot/action/router';
|
import { ActionName } from '@/napcat-onebot/action/router';
|
||||||
import { OB11HeartbeatEvent } from '@/napcat-onebot/event/meta/OB11HeartbeatEvent';
|
import { OB11HeartbeatEvent } from '@/napcat-onebot/event/meta/OB11HeartbeatEvent';
|
||||||
import { OB11LifeCycleEvent, LifeCycleSubType } from '@/napcat-onebot/event/meta/OB11LifeCycleEvent';
|
import { OB11LifeCycleEvent, LifeCycleSubType } from '@/napcat-onebot/event/meta/OB11LifeCycleEvent';
|
||||||
import { Mutex } from 'async-mutex';
|
|
||||||
|
|
||||||
export class OB11HttpServerAdapter extends IOB11NetworkAdapter<HttpServerConfig> {
|
export class OB11HttpServerAdapter extends IOB11NetworkAdapter<HttpServerConfig> {
|
||||||
private app: Express | undefined;
|
private app: Express | undefined;
|
||||||
private server: http.Server | undefined;
|
private server: http.Server | undefined;
|
||||||
private wsServer?: WebSocketServer;
|
private wsServer?: WebSocketServer;
|
||||||
private wsClients: WebSocket[] = [];
|
private wsClients: WebSocket[] = [];
|
||||||
private wsClientsMutex = new Mutex();
|
|
||||||
private heartbeatIntervalId: NodeJS.Timeout | null = null;
|
private heartbeatIntervalId: NodeJS.Timeout | null = null;
|
||||||
private wsClientWithEvent: WebSocket[] = [];
|
private wsClientWithEvent: WebSocket[] = [];
|
||||||
|
|
||||||
@@ -30,19 +28,17 @@ export class OB11HttpServerAdapter extends IOB11NetworkAdapter<HttpServerConfig>
|
|||||||
|
|
||||||
override async onEvent<T extends OB11EmitEventContent> (event: T) {
|
override async onEvent<T extends OB11EmitEventContent> (event: T) {
|
||||||
// http server is passive, no need to emit event
|
// http server is passive, no need to emit event
|
||||||
this.wsClientsMutex.runExclusive(async () => {
|
const promises = this.wsClientWithEvent.map((wsClient) => {
|
||||||
const promises = this.wsClientWithEvent.map((wsClient) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
return new Promise<void>((resolve, reject) => {
|
if (wsClient.readyState === WebSocket.OPEN) {
|
||||||
if (wsClient.readyState === WebSocket.OPEN) {
|
wsClient.send(JSON.stringify(event));
|
||||||
wsClient.send(JSON.stringify(event));
|
resolve();
|
||||||
resolve();
|
} else {
|
||||||
} else {
|
reject(new Error('WebSocket is not open'));
|
||||||
reject(new Error('WebSocket is not open'));
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
await Promise.allSettled(promises);
|
|
||||||
});
|
});
|
||||||
|
await Promise.allSettled(promises);
|
||||||
}
|
}
|
||||||
|
|
||||||
open () {
|
open () {
|
||||||
@@ -65,13 +61,9 @@ export class OB11HttpServerAdapter extends IOB11NetworkAdapter<HttpServerConfig>
|
|||||||
this.server?.close();
|
this.server?.close();
|
||||||
this.app = undefined;
|
this.app = undefined;
|
||||||
this.stopHeartbeat();
|
this.stopHeartbeat();
|
||||||
await this.wsClientsMutex.runExclusive(async () => {
|
this.wsClients.forEach((wsClient) => wsClient.close());
|
||||||
this.wsClients.forEach((wsClient) => {
|
this.wsClients = [];
|
||||||
wsClient.close();
|
this.wsClientWithEvent = [];
|
||||||
});
|
|
||||||
this.wsClients = [];
|
|
||||||
this.wsClientWithEvent = [];
|
|
||||||
});
|
|
||||||
this.wsServer?.close();
|
this.wsServer?.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,36 +145,29 @@ export class OB11HttpServerAdapter extends IOB11NetworkAdapter<HttpServerConfig>
|
|||||||
wsClient.on('message', (message) => {
|
wsClient.on('message', (message) => {
|
||||||
this.handleWSMessage(wsClient, message).then().catch(e => this.logger.logError(e));
|
this.handleWSMessage(wsClient, message).then().catch(e => this.logger.logError(e));
|
||||||
});
|
});
|
||||||
wsClient.on('ping', () => {
|
|
||||||
wsClient.pong();
|
|
||||||
});
|
|
||||||
wsClient.on('pong', () => {
|
wsClient.on('pong', () => {
|
||||||
// this.logger.logDebug('[OneBot] [HTTP WebSocket] Pong received');
|
// this.logger.logDebug('[OneBot] [HTTP WebSocket] Pong received');
|
||||||
});
|
});
|
||||||
wsClient.once('close', () => {
|
wsClient.once('close', () => {
|
||||||
this.wsClientsMutex.runExclusive(async () => {
|
const NormolIndex = this.wsClients.indexOf(wsClient);
|
||||||
const NormolIndex = this.wsClients.indexOf(wsClient);
|
if (NormolIndex !== -1) {
|
||||||
if (NormolIndex !== -1) {
|
this.wsClients.splice(NormolIndex, 1);
|
||||||
this.wsClients.splice(NormolIndex, 1);
|
|
||||||
}
|
|
||||||
const EventIndex = this.wsClientWithEvent.indexOf(wsClient);
|
|
||||||
if (EventIndex !== -1) {
|
|
||||||
this.wsClientWithEvent.splice(EventIndex, 1);
|
|
||||||
}
|
|
||||||
if (this.wsClientWithEvent.length === 0) {
|
|
||||||
this.stopHeartbeat();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
await this.wsClientsMutex.runExclusive(async () => {
|
|
||||||
if (!isApiConnect) {
|
|
||||||
this.wsClientWithEvent.push(wsClient);
|
|
||||||
}
|
}
|
||||||
this.wsClients.push(wsClient);
|
const EventIndex = this.wsClientWithEvent.indexOf(wsClient);
|
||||||
if (this.wsClientWithEvent.length > 0) {
|
if (EventIndex !== -1) {
|
||||||
this.startHeartbeat();
|
this.wsClientWithEvent.splice(EventIndex, 1);
|
||||||
|
}
|
||||||
|
if (this.wsClientWithEvent.length === 0) {
|
||||||
|
this.stopHeartbeat();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
if (!isApiConnect) {
|
||||||
|
this.wsClientWithEvent.push(wsClient);
|
||||||
|
}
|
||||||
|
this.wsClients.push(wsClient);
|
||||||
|
if (this.wsClientWithEvent.length > 0) {
|
||||||
|
this.startHeartbeat();
|
||||||
|
}
|
||||||
}).on('error', (err) => this.logger.log('[OneBot] [HTTP WebSocket] Server Error:', err.message));
|
}).on('error', (err) => this.logger.log('[OneBot] [HTTP WebSocket] Server Error:', err.message));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -197,12 +182,10 @@ export class OB11HttpServerAdapter extends IOB11NetworkAdapter<HttpServerConfig>
|
|||||||
private startHeartbeat () {
|
private startHeartbeat () {
|
||||||
if (this.heartbeatIntervalId) return;
|
if (this.heartbeatIntervalId) return;
|
||||||
this.heartbeatIntervalId = setInterval(() => {
|
this.heartbeatIntervalId = setInterval(() => {
|
||||||
this.wsClientsMutex.runExclusive(async () => {
|
this.wsClientWithEvent.forEach((wsClient) => {
|
||||||
this.wsClientWithEvent.forEach((wsClient) => {
|
if (wsClient.readyState === WebSocket.OPEN) {
|
||||||
if (wsClient.readyState === WebSocket.OPEN) {
|
wsClient.send(JSON.stringify(new OB11HeartbeatEvent(this.core, 30000, this.core.selfInfo.online ?? true, true)));
|
||||||
wsClient.send(JSON.stringify(new OB11HeartbeatEvent(this.core, 30000, this.core.selfInfo.online ?? true, true)));
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}, 30000);
|
}, 30000);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -196,9 +196,14 @@ export class OB11PluginMangerAdapter extends IOB11NetworkAdapter<PluginConfig> i
|
|||||||
* 创建插件上下文
|
* 创建插件上下文
|
||||||
*/
|
*/
|
||||||
private createPluginContext (entry: PluginEntry): NapCatPluginContext {
|
private createPluginContext (entry: PluginEntry): NapCatPluginContext {
|
||||||
const dataPath = path.join(entry.pluginPath, 'data');
|
const dataPath = path.join(this.core.context.pathWrapper.configPath, 'plugins', entry.id);
|
||||||
const configPath = path.join(dataPath, 'config.json');
|
const configPath = path.join(dataPath, 'config.json');
|
||||||
|
|
||||||
|
// 确保插件配置目录存在
|
||||||
|
if (!fs.existsSync(dataPath)) {
|
||||||
|
fs.mkdirSync(dataPath, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
// 创建插件专用日志器
|
// 创建插件专用日志器
|
||||||
const pluginPrefix = `[Plugin: ${entry.id}]`;
|
const pluginPrefix = `[Plugin: ${entry.id}]`;
|
||||||
const coreLogger = this.logger;
|
const coreLogger = this.logger;
|
||||||
@@ -358,7 +363,7 @@ export class OB11PluginMangerAdapter extends IOB11NetworkAdapter<PluginConfig> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
const pluginPath = entry.pluginPath;
|
const pluginPath = entry.pluginPath;
|
||||||
const dataPath = path.join(pluginPath, 'data');
|
const dataPath = path.join(this.core.context.pathWrapper.configPath, 'plugins', pluginId);
|
||||||
|
|
||||||
if (entry.loaded) {
|
if (entry.loaded) {
|
||||||
await this.unloadPlugin(entry);
|
await this.unloadPlugin(entry);
|
||||||
@@ -372,7 +377,7 @@ export class OB11PluginMangerAdapter extends IOB11NetworkAdapter<PluginConfig> i
|
|||||||
fs.rmSync(pluginPath, { recursive: true, force: true });
|
fs.rmSync(pluginPath, { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理数据
|
// 清理插件配置数据
|
||||||
if (cleanData && fs.existsSync(dataPath)) {
|
if (cleanData && fs.existsSync(dataPath)) {
|
||||||
fs.rmSync(dataPath, { recursive: true, force: true });
|
fs.rmSync(dataPath, { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
@@ -440,11 +445,7 @@ export class OB11PluginMangerAdapter extends IOB11NetworkAdapter<PluginConfig> i
|
|||||||
* 获取插件数据目录路径
|
* 获取插件数据目录路径
|
||||||
*/
|
*/
|
||||||
public getPluginDataPath (pluginId: string): string {
|
public getPluginDataPath (pluginId: string): string {
|
||||||
const entry = this.plugins.get(pluginId);
|
return path.join(this.core.context.pathWrapper.configPath, 'plugins', pluginId);
|
||||||
if (!entry) {
|
|
||||||
throw new Error(`Plugin ${pluginId} not found`);
|
|
||||||
}
|
|
||||||
return path.join(entry.pluginPath, 'data');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -173,9 +173,14 @@ export class OB11PluginManager extends IOB11NetworkAdapter<PluginConfig> impleme
|
|||||||
* 创建插件上下文
|
* 创建插件上下文
|
||||||
*/
|
*/
|
||||||
private createPluginContext (entry: PluginEntry): NapCatPluginContext {
|
private createPluginContext (entry: PluginEntry): NapCatPluginContext {
|
||||||
const dataPath = path.join(entry.pluginPath, 'data');
|
const dataPath = path.join(this.core.context.pathWrapper.configPath, 'plugins', entry.id);
|
||||||
const configPath = path.join(dataPath, 'config.json');
|
const configPath = path.join(dataPath, 'config.json');
|
||||||
|
|
||||||
|
// 确保插件配置目录存在
|
||||||
|
if (!fs.existsSync(dataPath)) {
|
||||||
|
fs.mkdirSync(dataPath, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
// 创建插件专用日志器
|
// 创建插件专用日志器
|
||||||
const pluginPrefix = `[Plugin: ${entry.id}]`;
|
const pluginPrefix = `[Plugin: ${entry.id}]`;
|
||||||
const coreLogger = this.logger;
|
const coreLogger = this.logger;
|
||||||
@@ -323,7 +328,7 @@ export class OB11PluginManager extends IOB11NetworkAdapter<PluginConfig> impleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
const pluginPath = entry.pluginPath;
|
const pluginPath = entry.pluginPath;
|
||||||
const dataPath = path.join(pluginPath, 'data');
|
const dataPath = path.join(this.core.context.pathWrapper.configPath, 'plugins', pluginId);
|
||||||
|
|
||||||
// 先卸载插件
|
// 先卸载插件
|
||||||
await this.unloadPlugin(entry);
|
await this.unloadPlugin(entry);
|
||||||
@@ -336,7 +341,7 @@ export class OB11PluginManager extends IOB11NetworkAdapter<PluginConfig> impleme
|
|||||||
fs.rmSync(pluginPath, { recursive: true, force: true });
|
fs.rmSync(pluginPath, { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理数据
|
// 清理插件配置数据
|
||||||
if (cleanData && fs.existsSync(dataPath)) {
|
if (cleanData && fs.existsSync(dataPath)) {
|
||||||
fs.rmSync(dataPath, { recursive: true, force: true });
|
fs.rmSync(dataPath, { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
@@ -404,11 +409,7 @@ export class OB11PluginManager extends IOB11NetworkAdapter<PluginConfig> impleme
|
|||||||
* 获取插件数据目录路径
|
* 获取插件数据目录路径
|
||||||
*/
|
*/
|
||||||
public getPluginDataPath (pluginId: string): string {
|
public getPluginDataPath (pluginId: string): string {
|
||||||
const entry = this.plugins.get(pluginId);
|
return path.join(this.core.context.pathWrapper.configPath, 'plugins', pluginId);
|
||||||
if (!entry) {
|
|
||||||
throw new Error(`Plugin ${pluginId} not found`);
|
|
||||||
}
|
|
||||||
return path.join(entry.pluginPath, 'data');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ export interface PluginPackageJson {
|
|||||||
author?: string;
|
author?: string;
|
||||||
homepage?: string;
|
homepage?: string;
|
||||||
repository?: string | { type: string; url: string; };
|
repository?: string | { type: string; url: string; };
|
||||||
|
icon?: string; // 插件图标文件路径(相对于插件目录),如 "icon.png"
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 插件配置 Schema ====================
|
// ==================== 插件配置 Schema ====================
|
||||||
|
|||||||
@@ -85,9 +85,6 @@ export class OB11WebSocketClientAdapter extends IOB11NetworkAdapter<WebsocketCli
|
|||||||
},
|
},
|
||||||
|
|
||||||
});
|
});
|
||||||
this.connection.on('ping', () => {
|
|
||||||
this.connection?.pong();
|
|
||||||
});
|
|
||||||
this.connection.on('pong', () => {
|
this.connection.on('pong', () => {
|
||||||
// this.logger.logDebug('[OneBot] [WebSocket Client] 收到pong');
|
// this.logger.logDebug('[OneBot] [WebSocket Client] 收到pong');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import { OB11EmitEventContent, OB11NetworkReloadType } from './index';
|
import { OB11EmitEventContent, OB11NetworkReloadType } from './index';
|
||||||
import { URL } from 'url';
|
import { URL } from 'url';
|
||||||
import { RawData, WebSocket, WebSocketServer } from 'ws';
|
import { RawData, WebSocket, WebSocketServer } from 'ws';
|
||||||
import { Mutex } from 'async-mutex';
|
|
||||||
import { OB11Response } from '@/napcat-onebot/action/OneBotAction';
|
import { OB11Response } from '@/napcat-onebot/action/OneBotAction';
|
||||||
import { ActionName } from '@/napcat-onebot/action/router';
|
import { ActionName } from '@/napcat-onebot/action/router';
|
||||||
import { NapCatCore } from 'napcat-core';
|
import { NapCatCore } from 'napcat-core';
|
||||||
@@ -17,7 +16,6 @@ import json5 from 'json5';
|
|||||||
export class OB11WebSocketServerAdapter extends IOB11NetworkAdapter<WebsocketServerConfig> {
|
export class OB11WebSocketServerAdapter extends IOB11NetworkAdapter<WebsocketServerConfig> {
|
||||||
wsServer?: WebSocketServer;
|
wsServer?: WebSocketServer;
|
||||||
wsClients: WebSocket[] = [];
|
wsClients: WebSocket[] = [];
|
||||||
wsClientsMutex = new Mutex();
|
|
||||||
private heartbeatIntervalId: NodeJS.Timeout | null = null;
|
private heartbeatIntervalId: NodeJS.Timeout | null = null;
|
||||||
wsClientWithEvent: WebSocket[] = [];
|
wsClientWithEvent: WebSocket[] = [];
|
||||||
|
|
||||||
@@ -58,36 +56,29 @@ export class OB11WebSocketServerAdapter extends IOB11NetworkAdapter<WebsocketSer
|
|||||||
wsClient.on('message', (message) => {
|
wsClient.on('message', (message) => {
|
||||||
this.handleMessage(wsClient, message).then().catch(e => this.logger.logError(e));
|
this.handleMessage(wsClient, message).then().catch(e => this.logger.logError(e));
|
||||||
});
|
});
|
||||||
wsClient.on('ping', () => {
|
|
||||||
wsClient.pong();
|
|
||||||
});
|
|
||||||
wsClient.on('pong', () => {
|
wsClient.on('pong', () => {
|
||||||
// this.logger.logDebug('[OneBot] [WebSocket Server] Pong received');
|
// this.logger.logDebug('[OneBot] [WebSocket Server] Pong received');
|
||||||
});
|
});
|
||||||
wsClient.once('close', () => {
|
wsClient.once('close', () => {
|
||||||
this.wsClientsMutex.runExclusive(async () => {
|
const NormolIndex = this.wsClients.indexOf(wsClient);
|
||||||
const NormolIndex = this.wsClients.indexOf(wsClient);
|
if (NormolIndex !== -1) {
|
||||||
if (NormolIndex !== -1) {
|
this.wsClients.splice(NormolIndex, 1);
|
||||||
this.wsClients.splice(NormolIndex, 1);
|
|
||||||
}
|
|
||||||
const EventIndex = this.wsClientWithEvent.indexOf(wsClient);
|
|
||||||
if (EventIndex !== -1) {
|
|
||||||
this.wsClientWithEvent.splice(EventIndex, 1);
|
|
||||||
}
|
|
||||||
if (this.wsClientWithEvent.length === 0) {
|
|
||||||
this.stopHeartbeat();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
await this.wsClientsMutex.runExclusive(async () => {
|
|
||||||
if (!isApiConnect) {
|
|
||||||
this.wsClientWithEvent.push(wsClient);
|
|
||||||
}
|
}
|
||||||
this.wsClients.push(wsClient);
|
const EventIndex = this.wsClientWithEvent.indexOf(wsClient);
|
||||||
if (this.wsClientWithEvent.length > 0) {
|
if (EventIndex !== -1) {
|
||||||
this.startHeartbeat();
|
this.wsClientWithEvent.splice(EventIndex, 1);
|
||||||
|
}
|
||||||
|
if (this.wsClientWithEvent.length === 0) {
|
||||||
|
this.stopHeartbeat();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
if (!isApiConnect) {
|
||||||
|
this.wsClientWithEvent.push(wsClient);
|
||||||
|
}
|
||||||
|
this.wsClients.push(wsClient);
|
||||||
|
if (this.wsClientWithEvent.length > 0) {
|
||||||
|
this.startHeartbeat();
|
||||||
|
}
|
||||||
}).on('error', (err) => this.logger.log('[OneBot] [WebSocket Server] Server Error:', err.message));
|
}).on('error', (err) => this.logger.log('[OneBot] [WebSocket Server] Server Error:', err.message));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,19 +91,17 @@ export class OB11WebSocketServerAdapter extends IOB11NetworkAdapter<WebsocketSer
|
|||||||
}
|
}
|
||||||
|
|
||||||
async onEvent<T extends OB11EmitEventContent> (event: T) {
|
async onEvent<T extends OB11EmitEventContent> (event: T) {
|
||||||
this.wsClientsMutex.runExclusive(async () => {
|
const promises = this.wsClientWithEvent.map((wsClient) => {
|
||||||
const promises = this.wsClientWithEvent.map((wsClient) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
return new Promise<void>((resolve, reject) => {
|
if (wsClient.readyState === WebSocket.OPEN) {
|
||||||
if (wsClient.readyState === WebSocket.OPEN) {
|
wsClient.send(JSON.stringify(event));
|
||||||
wsClient.send(JSON.stringify(event));
|
resolve();
|
||||||
resolve();
|
} else {
|
||||||
} else {
|
reject(new Error('WebSocket is not open'));
|
||||||
reject(new Error('WebSocket is not open'));
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
await Promise.allSettled(promises);
|
|
||||||
});
|
});
|
||||||
|
await Promise.allSettled(promises);
|
||||||
}
|
}
|
||||||
|
|
||||||
open () {
|
open () {
|
||||||
@@ -136,24 +125,18 @@ export class OB11WebSocketServerAdapter extends IOB11NetworkAdapter<WebsocketSer
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.stopHeartbeat();
|
this.stopHeartbeat();
|
||||||
await this.wsClientsMutex.runExclusive(async () => {
|
this.wsClients.forEach((wsClient) => wsClient.close());
|
||||||
this.wsClients.forEach((wsClient) => {
|
this.wsClients = [];
|
||||||
wsClient.close();
|
this.wsClientWithEvent = [];
|
||||||
});
|
|
||||||
this.wsClients = [];
|
|
||||||
this.wsClientWithEvent = [];
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private startHeartbeat () {
|
private startHeartbeat () {
|
||||||
if (this.heartbeatIntervalId || this.config.heartInterval <= 0) return;
|
if (this.heartbeatIntervalId || this.config.heartInterval <= 0) return;
|
||||||
this.heartbeatIntervalId = setInterval(() => {
|
this.heartbeatIntervalId = setInterval(() => {
|
||||||
this.wsClientsMutex.runExclusive(async () => {
|
this.wsClientWithEvent.forEach((wsClient) => {
|
||||||
this.wsClientWithEvent.forEach((wsClient) => {
|
if (wsClient.readyState === WebSocket.OPEN) {
|
||||||
if (wsClient.readyState === WebSocket.OPEN) {
|
wsClient.send(JSON.stringify(new OB11HeartbeatEvent(this.core, this.config.heartInterval, this.core.selfInfo.online ?? true, true)));
|
||||||
wsClient.send(JSON.stringify(new OB11HeartbeatEvent(this.core, this.config.heartInterval, this.core.selfInfo.online ?? true, true)));
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}, this.config.heartInterval);
|
}, this.config.heartInterval);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@
|
|||||||
"express": "^5.0.0",
|
"express": "^5.0.0",
|
||||||
"ws": "^8.18.3",
|
"ws": "^8.18.3",
|
||||||
"file-type": "^21.0.0",
|
"file-type": "^21.0.0",
|
||||||
"async-mutex": "^0.5.0",
|
|
||||||
"napcat-protobuf": "workspace:*",
|
"napcat-protobuf": "workspace:*",
|
||||||
"json5": "^2.2.3",
|
"json5": "^2.2.3",
|
||||||
"napcat-core": "workspace:*",
|
"napcat-core": "workspace:*",
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import { hostname, systemVersion } from 'napcat-common/src/system';
|
|||||||
import path from 'path';
|
import path from 'path';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
|
import { createHash } from 'node:crypto';
|
||||||
import { LoginListItem, NodeIKernelLoginService } from 'napcat-core/services';
|
import { LoginListItem, NodeIKernelLoginService } from 'napcat-core/services';
|
||||||
import qrcode from 'napcat-qrcode/lib/main';
|
import qrcode from 'napcat-qrcode/lib/main';
|
||||||
import { NapCatAdapterManager } from 'napcat-adapter';
|
import { NapCatAdapterManager } from 'napcat-adapter';
|
||||||
@@ -30,12 +31,15 @@ import { NodeIO3MiscListener } from 'napcat-core/listeners/NodeIO3MiscListener';
|
|||||||
import { sleep } from 'napcat-common/src/helper';
|
import { sleep } from 'napcat-common/src/helper';
|
||||||
import { FFmpegService } from '@/napcat-core/helper/ffmpeg/ffmpeg';
|
import { FFmpegService } from '@/napcat-core/helper/ffmpeg/ffmpeg';
|
||||||
import { NativePacketHandler } from 'napcat-core/packet/handler/client';
|
import { NativePacketHandler } from 'napcat-core/packet/handler/client';
|
||||||
|
import { Napi2NativeLoader } from 'napcat-core/packet/handler/napi2nativeLoader';
|
||||||
|
import { loadNapcatConfig } from '@/napcat-core/helper/config';
|
||||||
import { logSubscription, LogWrapper } from '@/napcat-core/helper/log';
|
import { logSubscription, LogWrapper } from '@/napcat-core/helper/log';
|
||||||
import { proxiedListenerOf } from '@/napcat-core/helper/proxy-handler';
|
import { proxiedListenerOf } from '@/napcat-core/helper/proxy-handler';
|
||||||
import { QQBasicInfoWrapper } from '@/napcat-core/helper/qq-basic-info';
|
import { QQBasicInfoWrapper } from '@/napcat-core/helper/qq-basic-info';
|
||||||
import { statusHelperSubscription } from '@/napcat-core/helper/status';
|
import { statusHelperSubscription } from '@/napcat-core/helper/status';
|
||||||
import { applyPendingUpdates } from '@/napcat-webui-backend/src/api/UpdateNapCat';
|
import { applyPendingUpdates } from '@/napcat-webui-backend/src/api/UpdateNapCat';
|
||||||
import { connectToNamedPipe } from './pipe';
|
import { connectToNamedPipe } from './pipe';
|
||||||
|
|
||||||
// NapCat Shell App ES 入口文件
|
// NapCat Shell App ES 入口文件
|
||||||
async function handleUncaughtExceptions (logger: LogWrapper) {
|
async function handleUncaughtExceptions (logger: LogWrapper) {
|
||||||
process.on('uncaughtException', (err) => {
|
process.on('uncaughtException', (err) => {
|
||||||
@@ -191,6 +195,24 @@ async function handleLogin (
|
|||||||
return await selfInfo;
|
return await selfInfo;
|
||||||
}
|
}
|
||||||
async function handleLoginInner (context: { isLogined: boolean; }, logger: LogWrapper, loginService: NodeIKernelLoginService, quickLoginUin: string | undefined, historyLoginList: LoginListItem[]) {
|
async function handleLoginInner (context: { isLogined: boolean; }, logger: LogWrapper, loginService: NodeIKernelLoginService, quickLoginUin: string | undefined, historyLoginList: LoginListItem[]) {
|
||||||
|
const resolveQuickPasswordMd5 = (): string | undefined => {
|
||||||
|
const quickPasswordMd5 = process.env['NAPCAT_QUICK_PASSWORD_MD5']?.trim();
|
||||||
|
if (quickPasswordMd5) {
|
||||||
|
if (/^[a-fA-F0-9]{32}$/.test(quickPasswordMd5)) {
|
||||||
|
return quickPasswordMd5.toLowerCase();
|
||||||
|
}
|
||||||
|
logger.logError('NAPCAT_QUICK_PASSWORD_MD5 格式无效(需为 32 位 MD5)');
|
||||||
|
}
|
||||||
|
|
||||||
|
const quickPassword = process.env['NAPCAT_QUICK_PASSWORD'];
|
||||||
|
if (typeof quickPassword === 'string' && quickPassword.length > 0) {
|
||||||
|
logger.log('检测到 NAPCAT_QUICK_PASSWORD,已在内存中计算 MD5 用于回退登录');
|
||||||
|
return createHash('md5').update(quickPassword, 'utf8').digest('hex');
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
};
|
||||||
|
|
||||||
// 注册刷新二维码回调
|
// 注册刷新二维码回调
|
||||||
WebUiDataRuntime.setRefreshQRCodeCallback(async () => {
|
WebUiDataRuntime.setRefreshQRCodeCallback(async () => {
|
||||||
loginService.getQRCodePicture();
|
loginService.getQRCodePicture();
|
||||||
@@ -201,10 +223,12 @@ async function handleLoginInner (context: { isLogined: boolean; }, logger: LogWr
|
|||||||
if (uin) {
|
if (uin) {
|
||||||
logger.log('正在快速登录 ', uin);
|
logger.log('正在快速登录 ', uin);
|
||||||
loginService.quickLoginWithUin(uin).then(res => {
|
loginService.quickLoginWithUin(uin).then(res => {
|
||||||
if (res.loginErrorInfo.errMsg) {
|
const quickLoginSuccess = res.result === '0' && !res.loginErrorInfo?.errMsg;
|
||||||
WebUiDataRuntime.setQQLoginError(res.loginErrorInfo.errMsg);
|
if (!quickLoginSuccess) {
|
||||||
|
const errMsg = res.loginErrorInfo?.errMsg || `快速登录失败,错误码: ${res.result}`;
|
||||||
|
WebUiDataRuntime.setQQLoginError(errMsg);
|
||||||
loginService.getQRCodePicture();
|
loginService.getQRCodePicture();
|
||||||
resolve({ result: false, message: res.loginErrorInfo.errMsg });
|
resolve({ result: false, message: errMsg });
|
||||||
} else {
|
} else {
|
||||||
WebUiDataRuntime.setQQLoginStatus(true);
|
WebUiDataRuntime.setQQLoginStatus(true);
|
||||||
WebUiDataRuntime.setQQLoginError('');
|
WebUiDataRuntime.setQQLoginError('');
|
||||||
@@ -231,21 +255,43 @@ async function handleLoginInner (context: { isLogined: boolean; }, logger: LogWr
|
|||||||
uin,
|
uin,
|
||||||
passwordMd5,
|
passwordMd5,
|
||||||
step: 0,
|
step: 0,
|
||||||
newDeviceLoginSig: '',
|
newDeviceLoginSig: new Uint8Array(),
|
||||||
proofWaterSig: '',
|
proofWaterSig: new Uint8Array(),
|
||||||
proofWaterRand: '',
|
proofWaterRand: new Uint8Array(),
|
||||||
proofWaterSid: '',
|
proofWaterSid: new Uint8Array(),
|
||||||
|
unusualDeviceCheckSig: new Uint8Array(),
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (res.result === '140022008') {
|
if (res.result === '140022008') {
|
||||||
const errMsg = '需要验证码,暂不支持';
|
const proofWaterUrl = res.loginErrorInfo?.proofWaterUrl || '';
|
||||||
WebUiDataRuntime.setQQLoginError(errMsg);
|
logger.log('需要验证码, proofWaterUrl: ', proofWaterUrl);
|
||||||
loginService.getQRCodePicture();
|
resolve({
|
||||||
resolve({ result: false, message: errMsg });
|
result: false,
|
||||||
|
message: '需要验证码',
|
||||||
|
needCaptcha: true,
|
||||||
|
proofWaterUrl,
|
||||||
|
});
|
||||||
} else if (res.result === '140022010') {
|
} else if (res.result === '140022010') {
|
||||||
const errMsg = '新设备需要扫码登录,暂不支持';
|
const jumpUrl = res.loginErrorInfo?.jumpUrl || '';
|
||||||
WebUiDataRuntime.setQQLoginError(errMsg);
|
const newDevicePullQrCodeSig = res.loginErrorInfo?.newDevicePullQrCodeSig || '';
|
||||||
loginService.getQRCodePicture();
|
logger.log('新设备需要扫码验证, jumpUrl: ', jumpUrl);
|
||||||
resolve({ result: false, message: errMsg });
|
resolve({
|
||||||
|
result: false,
|
||||||
|
message: '新设备需要扫码验证',
|
||||||
|
needNewDevice: true,
|
||||||
|
jumpUrl,
|
||||||
|
newDevicePullQrCodeSig,
|
||||||
|
});
|
||||||
|
} else if (res.result === '140022011') {
|
||||||
|
const jumpUrl = res.loginErrorInfo?.jumpUrl || '';
|
||||||
|
const newDevicePullQrCodeSig = res.loginErrorInfo?.newDevicePullQrCodeSig || '';
|
||||||
|
logger.log('异常设备需要验证, jumpUrl: ', jumpUrl);
|
||||||
|
resolve({
|
||||||
|
result: false,
|
||||||
|
message: '异常设备需要验证',
|
||||||
|
needNewDevice: true,
|
||||||
|
jumpUrl,
|
||||||
|
newDevicePullQrCodeSig,
|
||||||
|
});
|
||||||
} else if (res.result !== '0') {
|
} else if (res.result !== '0') {
|
||||||
const errMsg = res.loginErrorInfo?.errMsg || '密码登录失败';
|
const errMsg = res.loginErrorInfo?.errMsg || '密码登录失败';
|
||||||
WebUiDataRuntime.setQQLoginError(errMsg);
|
WebUiDataRuntime.setQQLoginError(errMsg);
|
||||||
@@ -267,21 +313,170 @@ async function handleLoginInner (context: { isLogined: boolean; }, logger: LogWr
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
const tryPasswordFallbackLogin = async (uin: string): Promise<{ success: boolean, attempted: boolean; }> => {
|
||||||
|
const quickPasswordMd5 = resolveQuickPasswordMd5();
|
||||||
|
if (!quickPasswordMd5) {
|
||||||
|
logger.log(`QQ ${uin} 未配置回退密码环境变量,建议优先使用 ACCOUNT + NAPCAT_QUICK_PASSWORD(NAPCAT_QUICK_PASSWORD_MD5 作为备用),将使用二维码登录方式`);
|
||||||
|
return { success: false, attempted: false };
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.log('正在尝试密码回退登录 ', uin);
|
||||||
|
const fallbackResult = await WebUiDataRuntime.requestPasswordLogin(uin, quickPasswordMd5);
|
||||||
|
if (fallbackResult.result) {
|
||||||
|
logger.log('密码回退登录成功 ', uin);
|
||||||
|
return { success: true, attempted: true };
|
||||||
|
}
|
||||||
|
if (fallbackResult.needCaptcha) {
|
||||||
|
const captchaTip = fallbackResult.proofWaterUrl
|
||||||
|
? `密码回退需要验证码,请在 WebUi 中继续完成验证:${fallbackResult.proofWaterUrl}`
|
||||||
|
: '密码回退需要验证码,请在 WebUi 中继续完成验证';
|
||||||
|
logger.logWarn(captchaTip);
|
||||||
|
WebUiDataRuntime.setQQLoginError('密码回退需要验证码,请在 WebUi 中继续完成验证');
|
||||||
|
return { success: false, attempted: true };
|
||||||
|
}
|
||||||
|
if (fallbackResult.needNewDevice) {
|
||||||
|
const newDeviceTip = fallbackResult.jumpUrl
|
||||||
|
? `密码回退需要新设备验证,请在 WebUi 中继续完成验证:${fallbackResult.jumpUrl}`
|
||||||
|
: '密码回退需要新设备验证,请在 WebUi 中继续完成验证';
|
||||||
|
logger.logWarn(newDeviceTip);
|
||||||
|
WebUiDataRuntime.setQQLoginError('密码回退需要新设备验证,请在 WebUi 中继续完成验证');
|
||||||
|
return { success: false, attempted: true };
|
||||||
|
}
|
||||||
|
logger.logError('密码回退登录失败:', fallbackResult.message);
|
||||||
|
return { success: false, attempted: true };
|
||||||
|
};
|
||||||
|
|
||||||
|
// 注册验证码登录回调(密码登录需要验证码时的第二步)
|
||||||
|
WebUiDataRuntime.setCaptchaLoginCall(async (uin: string, passwordMd5: string, ticket: string, randstr: string, sid: string) => {
|
||||||
|
return await new Promise((resolve) => {
|
||||||
|
if (uin && passwordMd5 && ticket) {
|
||||||
|
logger.log('正在验证码登录 ', uin);
|
||||||
|
loginService.passwordLogin({
|
||||||
|
uin,
|
||||||
|
passwordMd5,
|
||||||
|
step: 1,
|
||||||
|
newDeviceLoginSig: new Uint8Array(),
|
||||||
|
proofWaterSig: new TextEncoder().encode(ticket),
|
||||||
|
proofWaterRand: new TextEncoder().encode(randstr),
|
||||||
|
proofWaterSid: new TextEncoder().encode(sid),
|
||||||
|
unusualDeviceCheckSig: new Uint8Array(),
|
||||||
|
}).then(res => {
|
||||||
|
console.log('验证码登录结果: ', res);
|
||||||
|
if (res.result === '140022010') {
|
||||||
|
const jumpUrl = res.loginErrorInfo?.jumpUrl || '';
|
||||||
|
const newDevicePullQrCodeSig = res.loginErrorInfo?.newDevicePullQrCodeSig || '';
|
||||||
|
logger.log('验证码登录后需要新设备验证, jumpUrl: ', jumpUrl);
|
||||||
|
resolve({
|
||||||
|
result: false,
|
||||||
|
message: '新设备需要扫码验证',
|
||||||
|
needNewDevice: true,
|
||||||
|
jumpUrl,
|
||||||
|
newDevicePullQrCodeSig,
|
||||||
|
});
|
||||||
|
} else if (res.result === '140022011') {
|
||||||
|
const jumpUrl = res.loginErrorInfo?.jumpUrl || '';
|
||||||
|
const newDevicePullQrCodeSig = res.loginErrorInfo?.newDevicePullQrCodeSig || '';
|
||||||
|
logger.log('验证码登录后需要异常设备验证, jumpUrl: ', jumpUrl);
|
||||||
|
resolve({
|
||||||
|
result: false,
|
||||||
|
message: '异常设备需要验证',
|
||||||
|
needNewDevice: true,
|
||||||
|
jumpUrl,
|
||||||
|
newDevicePullQrCodeSig,
|
||||||
|
});
|
||||||
|
} else if (res.result !== '0') {
|
||||||
|
const errMsg = res.loginErrorInfo?.errMsg || '验证码登录失败';
|
||||||
|
WebUiDataRuntime.setQQLoginError(errMsg);
|
||||||
|
loginService.getQRCodePicture();
|
||||||
|
resolve({ result: false, message: errMsg });
|
||||||
|
} else {
|
||||||
|
WebUiDataRuntime.setQQLoginStatus(true);
|
||||||
|
WebUiDataRuntime.setQQLoginError('');
|
||||||
|
resolve({ result: true, message: '' });
|
||||||
|
}
|
||||||
|
}).catch((e) => {
|
||||||
|
logger.logError(e);
|
||||||
|
WebUiDataRuntime.setQQLoginError('验证码登录发生错误');
|
||||||
|
loginService.getQRCodePicture();
|
||||||
|
resolve({ result: false, message: '验证码登录发生错误' });
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
resolve({ result: false, message: '验证码登录失败:参数不完整' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 注册新设备登录回调(密码登录需要新设备验证时的第二步)
|
||||||
|
WebUiDataRuntime.setNewDeviceLoginCall(async (uin: string, passwordMd5: string, newDevicePullQrCodeSig: string) => {
|
||||||
|
return await new Promise((resolve) => {
|
||||||
|
if (uin && passwordMd5 && newDevicePullQrCodeSig) {
|
||||||
|
logger.log('正在新设备验证登录 ', uin);
|
||||||
|
loginService.passwordLogin({
|
||||||
|
uin,
|
||||||
|
passwordMd5,
|
||||||
|
step: 2,
|
||||||
|
newDeviceLoginSig: new TextEncoder().encode(newDevicePullQrCodeSig),
|
||||||
|
proofWaterSig: new Uint8Array(),
|
||||||
|
proofWaterRand: new Uint8Array(),
|
||||||
|
proofWaterSid: new Uint8Array(),
|
||||||
|
unusualDeviceCheckSig: new Uint8Array(),
|
||||||
|
}).then(res => {
|
||||||
|
if (res.result === '140022011') {
|
||||||
|
const jumpUrl = res.loginErrorInfo?.jumpUrl || '';
|
||||||
|
const newDevicePullQrCodeSig = res.loginErrorInfo?.newDevicePullQrCodeSig || '';
|
||||||
|
logger.log('新设备验证后需要异常设备验证, jumpUrl: ', jumpUrl);
|
||||||
|
resolve({
|
||||||
|
result: false,
|
||||||
|
message: '异常设备需要验证',
|
||||||
|
needNewDevice: true,
|
||||||
|
jumpUrl,
|
||||||
|
newDevicePullQrCodeSig,
|
||||||
|
});
|
||||||
|
} else if (res.result !== '0') {
|
||||||
|
const errMsg = res.loginErrorInfo?.errMsg || '新设备验证登录失败';
|
||||||
|
WebUiDataRuntime.setQQLoginError(errMsg);
|
||||||
|
loginService.getQRCodePicture();
|
||||||
|
resolve({ result: false, message: errMsg });
|
||||||
|
} else {
|
||||||
|
WebUiDataRuntime.setQQLoginStatus(true);
|
||||||
|
WebUiDataRuntime.setQQLoginError('');
|
||||||
|
resolve({ result: true, message: '' });
|
||||||
|
}
|
||||||
|
}).catch((e) => {
|
||||||
|
logger.logError(e);
|
||||||
|
WebUiDataRuntime.setQQLoginError('新设备验证登录发生错误');
|
||||||
|
loginService.getQRCodePicture();
|
||||||
|
resolve({ result: false, message: '新设备验证登录发生错误' });
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
resolve({ result: false, message: '新设备验证登录失败:参数不完整' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
if (quickLoginUin) {
|
if (quickLoginUin) {
|
||||||
if (historyLoginList.some(u => u.uin === quickLoginUin)) {
|
if (historyLoginList.some(u => u.uin === quickLoginUin)) {
|
||||||
logger.log('正在快速登录 ', quickLoginUin);
|
logger.log('正在快速登录 ', quickLoginUin);
|
||||||
loginService.quickLoginWithUin(quickLoginUin)
|
loginService.quickLoginWithUin(quickLoginUin)
|
||||||
.then(result => {
|
.then(async result => {
|
||||||
if (result.loginErrorInfo.errMsg) {
|
const quickLoginSuccess = result.result === '0' && !result.loginErrorInfo?.errMsg;
|
||||||
logger.logError('快速登录错误:', result.loginErrorInfo.errMsg);
|
if (!quickLoginSuccess) {
|
||||||
WebUiDataRuntime.setQQLoginError(result.loginErrorInfo.errMsg);
|
const errMsg = result.loginErrorInfo?.errMsg || `快速登录失败,错误码: ${result.result}`;
|
||||||
if (!context.isLogined) loginService.getQRCodePicture();
|
logger.logError('快速登录错误:', errMsg);
|
||||||
|
WebUiDataRuntime.setQQLoginError(errMsg);
|
||||||
|
const { success, attempted } = await tryPasswordFallbackLogin(quickLoginUin);
|
||||||
|
if (!success && !attempted && !context.isLogined) loginService.getQRCodePicture();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch();
|
.catch(async (error) => {
|
||||||
|
logger.logError('快速登录异常:', error);
|
||||||
|
WebUiDataRuntime.setQQLoginError('快速登录发生错误');
|
||||||
|
const { success, attempted } = await tryPasswordFallbackLogin(quickLoginUin);
|
||||||
|
if (!success && !attempted && !context.isLogined) loginService.getQRCodePicture();
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
logger.logError('快速登录失败,未找到该 QQ 历史登录记录,将使用二维码登录方式');
|
logger.logError('快速登录失败,未找到该 QQ 历史登录记录,将尝试密码回退登录');
|
||||||
if (!context.isLogined) loginService.getQRCodePicture();
|
const { success, attempted } = await tryPasswordFallbackLogin(quickLoginUin);
|
||||||
|
if (!success && !attempted && !context.isLogined) loginService.getQRCodePicture();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.log('没有 -q 指令指定快速登录,将使用二维码登录方式');
|
logger.log('没有 -q 指令指定快速登录,将使用二维码登录方式');
|
||||||
@@ -387,20 +582,31 @@ export async function NCoreInitShell () {
|
|||||||
handleUncaughtExceptions(logger);
|
handleUncaughtExceptions(logger);
|
||||||
await applyPendingUpdates(pathWrapper, logger);
|
await applyPendingUpdates(pathWrapper, logger);
|
||||||
|
|
||||||
|
// 提前初始化 Native 模块(在登录前加载)
|
||||||
|
const basicInfoWrapper = new QQBasicInfoWrapper({ logger });
|
||||||
|
const nativePacketHandler = new NativePacketHandler({ logger });
|
||||||
|
const napi2nativeLoader = new Napi2NativeLoader({ logger });
|
||||||
|
|
||||||
// 初始化 FFmpeg 服务
|
// 初始化 FFmpeg 服务
|
||||||
await FFmpegService.init(pathWrapper.binaryPath, logger);
|
await FFmpegService.init(pathWrapper.binaryPath, logger);
|
||||||
|
|
||||||
if (!(process.env['NAPCAT_DISABLE_PIPE'] === '1' || process.env['NAPCAT_WORKER_PROCESS'] === '1')) {
|
if (!(process.env['NAPCAT_DISABLE_PIPE'] === '1' || process.env['NAPCAT_WORKER_PROCESS'] === '1')) {
|
||||||
await connectToNamedPipe(logger).catch(e => logger.logError('命名管道连接失败', e));
|
await connectToNamedPipe(logger).catch(e => logger.logError('命名管道连接失败', e));
|
||||||
}
|
}
|
||||||
const basicInfoWrapper = new QQBasicInfoWrapper({ logger });
|
|
||||||
const wrapper = loadQQWrapper(basicInfoWrapper.QQMainPath, basicInfoWrapper.getFullQQVersion());
|
const wrapper = loadQQWrapper(basicInfoWrapper.QQMainPath, basicInfoWrapper.getFullQQVersion());
|
||||||
const nativePacketHandler = new NativePacketHandler({ logger }); // 初始化 NativePacketHandler 用于后续使用
|
// wrapper.node 加载后再初始化 hook,按 schema 读取配置
|
||||||
|
const napcatConfig = loadNapcatConfig(pathWrapper.configPath);
|
||||||
// nativePacketHandler.onAll((packet) => {
|
await nativePacketHandler.init(basicInfoWrapper.getFullQQVersion(), napcatConfig.o3HookMode === 1 ? true : false);
|
||||||
// console.log('[Packet]', packet.uin, packet.cmd, packet.hex_data);
|
if (process.env['NAPCAT_ENABLE_VERBOSE_LOG'] === '1') {
|
||||||
// });
|
napi2nativeLoader.nativeExports.setVerbose?.(true);
|
||||||
await nativePacketHandler.init(basicInfoWrapper.getFullQQVersion());
|
}
|
||||||
|
// wrapper.node 加载后立刻启用 Bypass(可通过环境变量禁用)
|
||||||
|
if (process.env['NAPCAT_DISABLE_BYPASS'] !== '1') {
|
||||||
|
const bypassOptions = napcatConfig.bypass ?? {};
|
||||||
|
napi2nativeLoader.nativeExports.enableAllBypasses?.(bypassOptions);
|
||||||
|
} else {
|
||||||
|
logger.log('[NapCat] Napi2NativeLoader: Bypass已通过环境变量禁用');
|
||||||
|
}
|
||||||
|
|
||||||
const o3Service = wrapper.NodeIO3MiscService.get();
|
const o3Service = wrapper.NodeIO3MiscService.get();
|
||||||
o3Service.addO3MiscListener(new NodeIO3MiscListener());
|
o3Service.addO3MiscListener(new NodeIO3MiscListener());
|
||||||
@@ -425,6 +631,7 @@ export async function NCoreInitShell () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const [dataPath, dataPathGlobal] = getDataPaths(wrapper);
|
const [dataPath, dataPathGlobal] = getDataPaths(wrapper);
|
||||||
|
WebUiDataRuntime.setQQDataPath(dataPath);
|
||||||
const systemPlatform = getPlatformType();
|
const systemPlatform = getPlatformType();
|
||||||
|
|
||||||
if (!basicInfoWrapper.QQVersionAppid || !basicInfoWrapper.QQVersionQua) throw new Error('QQVersionAppid or QQVersionQua is not defined');
|
if (!basicInfoWrapper.QQVersionAppid || !basicInfoWrapper.QQVersionQua) throw new Error('QQVersionAppid or QQVersionQua is not defined');
|
||||||
@@ -450,6 +657,13 @@ export async function NCoreInitShell () {
|
|||||||
o3Service.reportAmgomWeather('login', 'a1', [dataTimestape, '0', '0']);
|
o3Service.reportAmgomWeather('login', 'a1', [dataTimestape, '0', '0']);
|
||||||
|
|
||||||
const selfInfo = await handleLogin(loginService, logger, pathWrapper, quickLoginUin, historyLoginList);
|
const selfInfo = await handleLogin(loginService, logger, pathWrapper, quickLoginUin, historyLoginList);
|
||||||
|
|
||||||
|
// 登录成功后通知 Master 进程(用于切换崩溃重试策略)
|
||||||
|
if (typeof process.send === 'function') {
|
||||||
|
process.send({ type: 'login-success' });
|
||||||
|
logger.log('[NapCat] 已通知主进程登录成功');
|
||||||
|
}
|
||||||
|
|
||||||
const amgomDataPiece = 'eb1fd6ac257461580dc7438eb099f23aae04ca679f4d88f53072dc56e3bb1129';
|
const amgomDataPiece = 'eb1fd6ac257461580dc7438eb099f23aae04ca679f4d88f53072dc56e3bb1129';
|
||||||
o3Service.setAmgomDataPiece(basicInfoWrapper.QQVersionAppid, new Uint8Array(Buffer.from(amgomDataPiece, 'hex')));
|
o3Service.setAmgomDataPiece(basicInfoWrapper.QQVersionAppid, new Uint8Array(Buffer.from(amgomDataPiece, 'hex')));
|
||||||
|
|
||||||
@@ -487,7 +701,8 @@ export async function NCoreInitShell () {
|
|||||||
selfInfo,
|
selfInfo,
|
||||||
basicInfoWrapper,
|
basicInfoWrapper,
|
||||||
pathWrapper,
|
pathWrapper,
|
||||||
nativePacketHandler
|
nativePacketHandler,
|
||||||
|
napi2nativeLoader
|
||||||
).InitNapCat();
|
).InitNapCat();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -502,10 +717,12 @@ export class NapCatShell {
|
|||||||
selfInfo: SelfInfo,
|
selfInfo: SelfInfo,
|
||||||
basicInfoWrapper: QQBasicInfoWrapper,
|
basicInfoWrapper: QQBasicInfoWrapper,
|
||||||
pathWrapper: NapCatPathWrapper,
|
pathWrapper: NapCatPathWrapper,
|
||||||
packetHandler: NativePacketHandler
|
packetHandler: NativePacketHandler,
|
||||||
|
napi2nativeLoader: Napi2NativeLoader
|
||||||
) {
|
) {
|
||||||
this.context = {
|
this.context = {
|
||||||
packetHandler,
|
packetHandler,
|
||||||
|
napi2nativeLoader,
|
||||||
workingEnv: NapCatCoreWorkingEnv.Shell,
|
workingEnv: NapCatCoreWorkingEnv.Shell,
|
||||||
wrapper,
|
wrapper,
|
||||||
session,
|
session,
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ const ENV = {
|
|||||||
|
|
||||||
// Worker 消息类型
|
// Worker 消息类型
|
||||||
interface WorkerMessage {
|
interface WorkerMessage {
|
||||||
type: 'restart' | 'restart-prepare' | 'shutdown';
|
type: 'restart' | 'restart-prepare' | 'shutdown' | 'login-success';
|
||||||
secretKey?: string;
|
secretKey?: string;
|
||||||
port?: number;
|
port?: number;
|
||||||
}
|
}
|
||||||
@@ -65,6 +65,7 @@ const recentCrashTimestamps: number[] = [];
|
|||||||
const CRASH_TIME_WINDOW = 10000; // 10秒时间窗口
|
const CRASH_TIME_WINDOW = 10000; // 10秒时间窗口
|
||||||
const MAX_CRASHES_IN_WINDOW = 3; // 最大崩溃次数
|
const MAX_CRASHES_IN_WINDOW = 3; // 最大崩溃次数
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取进程类型名称(用于日志)
|
* 获取进程类型名称(用于日志)
|
||||||
*/
|
*/
|
||||||
@@ -113,6 +114,42 @@ function forceKillProcess (pid: number): void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清理进程树中的残留子进程(Electron 模式专用)
|
||||||
|
* 排除当前主进程和新 worker 进程
|
||||||
|
*/
|
||||||
|
async function cleanupOrphanedProcesses (excludePids: number[]): Promise<void> {
|
||||||
|
if (!isElectron) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 使用 Electron 的 app.getAppMetrics() 获取所有相关进程
|
||||||
|
// @ts-ignore - electron 运行时存在但类型声明可能缺失
|
||||||
|
const electron = await import('electron');
|
||||||
|
if (electron.app && typeof electron.app.getAppMetrics === 'function') {
|
||||||
|
const metrics = electron.app.getAppMetrics();
|
||||||
|
const mainPid = process.pid;
|
||||||
|
|
||||||
|
for (const metric of metrics) {
|
||||||
|
const pid = metric.pid;
|
||||||
|
// 排除主进程、新 worker 进程和明确排除的 PID
|
||||||
|
if (pid === mainPid || excludePids.includes(pid)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 尝试终止残留进程
|
||||||
|
try {
|
||||||
|
process.kill(pid, 'SIGTERM');
|
||||||
|
logger.log(`[NapCat] [Process] 已清理残留进程: PID ${pid} (${metric.type})`);
|
||||||
|
} catch {
|
||||||
|
// 进程可能已经不存在,忽略错误
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// Electron API 不可用或出错,静默忽略
|
||||||
|
logger.logDebug?.('[NapCat] [Process] 清理残留进程时出错:', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重启 Worker 进程
|
* 重启 Worker 进程
|
||||||
*/
|
*/
|
||||||
@@ -166,6 +203,13 @@ export async function restartWorker (secretKey?: string, port?: number): Promise
|
|||||||
|
|
||||||
// 5. 启动新进程(重启模式不传递快速登录参数,传递密钥和端口)
|
// 5. 启动新进程(重启模式不传递快速登录参数,传递密钥和端口)
|
||||||
await startWorker(false, secretKey, port);
|
await startWorker(false, secretKey, port);
|
||||||
|
|
||||||
|
// 6. Electron 模式下清理可能残留的子进程
|
||||||
|
if (isElectron && currentWorker?.pid) {
|
||||||
|
const excludePids = [process.pid, currentWorker.pid];
|
||||||
|
await cleanupOrphanedProcesses(excludePids);
|
||||||
|
}
|
||||||
|
|
||||||
isRestarting = false;
|
isRestarting = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,6 +276,8 @@ async function startWorker (passQuickLogin: boolean = true, secretKey?: string,
|
|||||||
restartWorker(message.secretKey, message.port).catch(e => {
|
restartWorker(message.secretKey, message.port).catch(e => {
|
||||||
logger.logError(`[NapCat] [${processType}] 重启Worker进程失败:`, e);
|
logger.logError(`[NapCat] [${processType}] 重启Worker进程失败:`, e);
|
||||||
});
|
});
|
||||||
|
} else if (message.type === 'login-success') {
|
||||||
|
logger.log(`[NapCat] [${processType}] Worker进程已登录成功,切换到正常重试策略`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -254,13 +300,13 @@ async function startWorker (passQuickLogin: boolean = true, secretKey?: string,
|
|||||||
// 记录本次崩溃
|
// 记录本次崩溃
|
||||||
recentCrashTimestamps.push(now);
|
recentCrashTimestamps.push(now);
|
||||||
|
|
||||||
// 检查是否超过崩溃阈值
|
|
||||||
if (recentCrashTimestamps.length >= MAX_CRASHES_IN_WINDOW) {
|
if (recentCrashTimestamps.length >= MAX_CRASHES_IN_WINDOW) {
|
||||||
logger.logError(`[NapCat] [${processType}] Worker进程在 ${CRASH_TIME_WINDOW / 1000} 秒内异常退出 ${MAX_CRASHES_IN_WINDOW} 次,主进程退出`);
|
logger.logError(`[NapCat] [${processType}] Worker进程在 ${CRASH_TIME_WINDOW / 1000} 秒内异常退出 ${MAX_CRASHES_IN_WINDOW} 次,主进程退出`);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.logWarn(`[NapCat] [${processType}] Worker进程意外退出 (${recentCrashTimestamps.length}/${MAX_CRASHES_IN_WINDOW}),正在尝试重新拉起...`);
|
logger.logWarn(`[NapCat] [${processType}] Worker进程意外退出 (${recentCrashTimestamps.length}/${MAX_CRASHES_IN_WINDOW}),正在尝试重新拉起...`);
|
||||||
|
|
||||||
startWorker(true).catch(e => {
|
startWorker(true).catch(e => {
|
||||||
logger.logError(`[NapCat] [${processType}] 重新拉起Worker进程失败:`, e);
|
logger.logError(`[NapCat] [${processType}] 重新拉起Worker进程失败:`, e);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
"napcat-qrcode": "workspace:*"
|
"napcat-qrcode": "workspace:*"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"json5": "^2.2.3",
|
||||||
"@types/node": "^22.0.1",
|
"@types/node": "^22.0.1",
|
||||||
"napcat-vite": "workspace:*"
|
"napcat-vite": "workspace:*"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ const ShellBaseConfig = (source_map: boolean = false) =>
|
|||||||
'@/napcat-common': resolve(__dirname, '../napcat-common'),
|
'@/napcat-common': resolve(__dirname, '../napcat-common'),
|
||||||
'@/napcat-onebot': resolve(__dirname, '../napcat-onebot'),
|
'@/napcat-onebot': resolve(__dirname, '../napcat-onebot'),
|
||||||
'@/napcat-pty': resolve(__dirname, '../napcat-pty'),
|
'@/napcat-pty': resolve(__dirname, '../napcat-pty'),
|
||||||
|
'@/napcat-dpapi': resolve(__dirname, '../napcat-dpapi'),
|
||||||
'@/napcat-webui-backend': resolve(__dirname, '../napcat-webui-backend'),
|
'@/napcat-webui-backend': resolve(__dirname, '../napcat-webui-backend'),
|
||||||
'@/napcat-image-size': resolve(__dirname, '../napcat-image-size'),
|
'@/napcat-image-size': resolve(__dirname, '../napcat-image-size'),
|
||||||
'@/napcat-protocol': resolve(__dirname, '../napcat-protocol'),
|
'@/napcat-protocol': resolve(__dirname, '../napcat-protocol'),
|
||||||
|
|||||||
14
packages/napcat-types/external-shims.d.ts
vendored
14
packages/napcat-types/external-shims.d.ts
vendored
@@ -61,20 +61,6 @@ declare module 'yaml' {
|
|||||||
export const stringify: (...args: any[]) => any;
|
export const stringify: (...args: any[]) => any;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module 'async-mutex' {
|
|
||||||
export class Mutex {
|
|
||||||
acquire (): Promise<() => void>;
|
|
||||||
runExclusive<T> (callback: () => T | Promise<T>): Promise<T>;
|
|
||||||
}
|
|
||||||
export class Semaphore {
|
|
||||||
acquire (): Promise<[() => void, number]>;
|
|
||||||
runExclusive<T> (callback: () => T | Promise<T>): Promise<T>;
|
|
||||||
release (): void;
|
|
||||||
}
|
|
||||||
const _async_mutex_default: { Mutex: typeof Mutex; Semaphore: typeof Semaphore; };
|
|
||||||
export default _async_mutex_default;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'napcat-protobuf' {
|
declare module 'napcat-protobuf' {
|
||||||
export class NapProtoMsg<T = any> {
|
export class NapProtoMsg<T = any> {
|
||||||
constructor (schema: any);
|
constructor (schema: any);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user