mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
Compare commits
103 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3da1659c8d | ||
![]() |
9aa4cd319c | ||
![]() |
5af866cdca | ||
![]() |
2b421fa447 | ||
![]() |
30ec964325 | ||
![]() |
714d7d72eb | ||
![]() |
687aa0f363 | ||
![]() |
8363ab07a7 | ||
![]() |
c46a757339 | ||
![]() |
557864395b | ||
![]() |
3f7a85d80b | ||
![]() |
8d18d2ce1f | ||
![]() |
7141ba1587 | ||
![]() |
44d350a225 | ||
![]() |
239b8e72d9 | ||
![]() |
279bdb6fb1 | ||
![]() |
a0cea819da | ||
![]() |
9ab7f60544 | ||
![]() |
aaf7191bf3 | ||
![]() |
628c9be0c8 | ||
![]() |
733052720c | ||
![]() |
a10f007194 | ||
![]() |
6fa50c58d3 | ||
![]() |
c54a58d6e4 | ||
![]() |
34cb1ea3fd | ||
![]() |
f640b0ca91 | ||
![]() |
60e16da42e | ||
![]() |
0cdceb95d6 | ||
![]() |
70bd22d925 | ||
![]() |
82462dd647 | ||
![]() |
c0466e943d | ||
![]() |
b187b4695d | ||
![]() |
b1956d2a37 | ||
![]() |
590b622e5f | ||
![]() |
3d8174396a | ||
![]() |
b8dc6e9bd9 | ||
![]() |
8ee99109dc | ||
![]() |
902041d4ee | ||
![]() |
cc34aef47e | ||
![]() |
0afbbe7c7a | ||
![]() |
8004553ba7 | ||
![]() |
0023b2846a | ||
![]() |
34775c1816 | ||
![]() |
e0759e704b | ||
![]() |
0aa225ca78 | ||
![]() |
b43b4ee5c0 | ||
![]() |
0cdb8cecbf | ||
![]() |
fd6a306742 | ||
![]() |
7f3b3d2277 | ||
![]() |
8be5b977bf | ||
![]() |
d7ddb15f9c | ||
![]() |
9a6a1798d0 | ||
![]() |
14196fd349 | ||
![]() |
941b89a523 | ||
![]() |
a5f9e5f8c0 | ||
![]() |
80c3356c8f | ||
![]() |
914136b750 | ||
![]() |
f9a60795f5 | ||
![]() |
19640927c7 | ||
![]() |
22faac7e36 | ||
![]() |
30d260ab32 | ||
![]() |
115120d066 | ||
![]() |
1327844736 | ||
![]() |
29904f3cb7 | ||
![]() |
50395594b7 | ||
![]() |
9360af88b3 | ||
![]() |
376370336c | ||
![]() |
70df6e3302 | ||
![]() |
0a1fc2dc12 | ||
![]() |
9857f6e437 | ||
![]() |
56d6ebe916 | ||
![]() |
81134ea2d4 | ||
![]() |
a9f3e7fc54 | ||
![]() |
eb84e2f8c9 | ||
![]() |
61cfa0e86d | ||
![]() |
0a01b8ade9 | ||
![]() |
1457efa9a4 | ||
![]() |
fa5c7add7a | ||
![]() |
d644eba4d1 | ||
![]() |
9c422c1a8f | ||
![]() |
b6db37202f | ||
![]() |
4ca3891089 | ||
![]() |
4c7ed01776 | ||
![]() |
45c922c377 | ||
![]() |
f854c258bd | ||
![]() |
a643fac073 | ||
![]() |
861f105bea | ||
![]() |
bf10ce9f1e | ||
![]() |
ccf521d0a8 | ||
![]() |
6075d98eaa | ||
![]() |
a3801fc243 | ||
![]() |
a1f0c05f3a | ||
![]() |
a568c96929 | ||
![]() |
d58bcf3c0e | ||
![]() |
985f2e6436 | ||
![]() |
ad441fa793 | ||
![]() |
316300cc86 | ||
![]() |
5c4f37b234 | ||
![]() |
77b51a072d | ||
![]() |
2536e1ae6a | ||
![]() |
14822c9599 | ||
![]() |
e53c37adc9 | ||
![]() |
c37539354c |
@@ -1,21 +1,21 @@
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
end_of_line = lf|crlf
|
||||
insert_final_newline = true
|
||||
|
||||
# Matches multiple files with brace expansion notation
|
||||
# Set default charset
|
||||
charset = utf-8
|
||||
|
||||
# 2 space indentation
|
||||
[*.{cjs,mjs,js,jsx,ts,tsx,css,scss,sass,html,json}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
# Unfortunately, EditorConfig doesn't support space configuration inside import braces directly.
|
||||
# You'll need to rely on your linter/formatter like ESLint or Prettier for that.
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
|
||||
# Matches multiple files with brace expansion notation
|
||||
# Set default charset
|
||||
charset = utf-8
|
||||
|
||||
# 2 space indentation
|
||||
[*.{cjs,mjs,js,jsx,ts,tsx,css,scss,sass,html,json}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
# Unfortunately, EditorConfig doesn't support space configuration inside import braces directly.
|
||||
# You'll need to rely on your linter/formatter like ESLint or Prettier for that.
|
||||
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: "Build"
|
||||
name: "Build Action"
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
|
3
.github/workflows/release.yml
vendored
3
.github/workflows/release.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: "release"
|
||||
name: "Build Release"
|
||||
|
||||
on:
|
||||
push:
|
||||
@@ -130,6 +130,7 @@ jobs:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
body_path: CHANGELOG.md
|
||||
files: |
|
||||
NapCat.win32.ia32.zip
|
||||
NapCat.win32.x64.zip
|
||||
NapCat.linux.x64.zip
|
||||
NapCat.linux.arm64.zip
|
||||
|
69
.github/workflows/test.yml
vendored
Normal file
69
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
name: "Build Test"
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: write-all
|
||||
|
||||
jobs:
|
||||
build-linux:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target_platform: [linux]
|
||||
target_arch: [x64, arm64]
|
||||
steps:
|
||||
- name: Clone Main Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: 'NapNeko/NapCatQQ'
|
||||
submodules: true
|
||||
ref: main
|
||||
token: ${{ secrets.NAPCAT_BUILD }}
|
||||
- name: Use Node.js 20.X
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
- name: Build NuCat Linux
|
||||
run: |
|
||||
npm i --arch=${{ matrix.target_arch }} --platform=${{ matrix.target_platform }}
|
||||
npm run build:prod
|
||||
cd dist
|
||||
npm i --omit=dev --arch=${{ matrix.target_arch }} --platform=${{ matrix.target_platform }}
|
||||
cd ..
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: NapCat.${{ matrix.target_platform }}.${{ matrix.target_arch }}
|
||||
path: dist
|
||||
build-win32:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target_platform: [win32]
|
||||
target_arch: [x64,ia32]
|
||||
steps:
|
||||
- name: Clone Main Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: 'NapNeko/NapCatQQ'
|
||||
submodules: true
|
||||
ref: main
|
||||
token: ${{ secrets.NAPCAT_BUILD }}
|
||||
- name: Use Node.js 20.X
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
- name: Build NuCat Linux
|
||||
run: |
|
||||
npm i --arch=${{ matrix.target_arch }} --platform=${{ matrix.target_platform }}
|
||||
npm run build:prod
|
||||
cd dist
|
||||
npm i --omit=dev --arch=${{ matrix.target_arch }} --platform=${{ matrix.target_platform }}
|
||||
cd ..
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: NapCat.${{ matrix.target_platform }}.${{ matrix.target_arch }}
|
||||
path: dist
|
3
.gitignore
vendored
3
.gitignore
vendored
@@ -14,4 +14,5 @@ dist/
|
||||
|
||||
# Build
|
||||
*.db
|
||||
checkVersion.sh
|
||||
checkVersion.sh
|
||||
bun.lockb
|
||||
|
4
.gitmodules
vendored
4
.gitmodules
vendored
@@ -1,4 +0,0 @@
|
||||
[submodule "src/core"]
|
||||
path = src/core
|
||||
url = https://github.com/NapNeko/core.git
|
||||
branch = master
|
25
docs/changelogs/CHANGELOG.v1.6.7.md
Normal file
25
docs/changelogs/CHANGELOG.v1.6.7.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# v1.6.7
|
||||
|
||||
QQ Version: Windows 9.9.12-26000 / Linux 3.2.9-26000
|
||||
## 使用前警告
|
||||
1. 在最近版本由于QQ本体大幅变动,为了保证NapCat可用性,NapCat近期启动与安装方式将将大幅变动,请关注文档和社群获取。
|
||||
2. 在Core上完全执行开源,请不要用于违法用途,如此可能造成NapCat完全停止更新。
|
||||
3. 针对原启动方式的围堵,NapCat研发了多种方式,除此其余理论与扩展的分析和思路将部分展示于Docs,以便各位参与开发与维护NapCat。
|
||||
## 其余·备注
|
||||
启动方式: WayBoot.03 (Electron Main进程为Node 直接注入代码 同理项目: LiteLoader)
|
||||
|
||||
## 修复与优化
|
||||
1. 尝试 修复 卡顿问题
|
||||
2. 尝试 修复 精华消息被设置/一起听 接收时的报错
|
||||
3. 优化 Uin与Uid 转换速度
|
||||
4. 修复CQCode可能存在的解码问题
|
||||
|
||||
## 新增与调整
|
||||
1. 戳一戳上报raw
|
||||
2. 精华消息设置通知事件
|
||||
3. 新增设置/删除群精华API
|
||||
4. 新增最近联系列表API(RAW 不稳定)
|
||||
5. 新增设置所有消息已读API(非标准)
|
||||
6. 新增获取点赞信息获取API(非标准)
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
12
docs/changelogs/old/CHANGELOG.v1.5.9.md
Normal file
12
docs/changelogs/old/CHANGELOG.v1.5.9.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# v1.5.9
|
||||
|
||||
QQ Version: Windows 9.9.11-24815 / Linux 3.2.9-24815
|
||||
|
||||
## 修复与优化
|
||||
* 优化缓存问题
|
||||
* 修复poke异常上报
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
11
docs/changelogs/old/CHANGELOG.v1.6.0.md
Normal file
11
docs/changelogs/old/CHANGELOG.v1.6.0.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# v1.6.0
|
||||
|
||||
QQ Version: Windows 9.9.11-24815 / Linux 3.2.9-24815
|
||||
|
||||
## 修复与优化
|
||||
|
||||
|
||||
## 新增与调整
|
||||
* 新增图片subtype属性 区分表情图片与商城图片
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
11
docs/changelogs/old/CHANGELOG.v1.6.1.md
Normal file
11
docs/changelogs/old/CHANGELOG.v1.6.1.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# v1.6.1
|
||||
|
||||
QQ Version: Windows 9.9.11-24815 / Linux 3.2.9-24815
|
||||
|
||||
## 修复与优化
|
||||
|
||||
|
||||
## 新增与调整
|
||||
* 修复poke异常事件
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
13
docs/changelogs/old/CHANGELOG.v1.6.2.md
Normal file
13
docs/changelogs/old/CHANGELOG.v1.6.2.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# v1.6.2
|
||||
|
||||
QQ Version: Windows 9.9.11-24815 / Linux 3.2.9-24815
|
||||
|
||||
## 修复与优化
|
||||
* 修复获取Cookies异常崩溃问题
|
||||
* 尝试修复成员退群缓存问题
|
||||
* 修复自身退群后群缓存清理问题
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
13
docs/changelogs/old/CHANGELOG.v1.6.3.md
Normal file
13
docs/changelogs/old/CHANGELOG.v1.6.3.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# v1.6.3
|
||||
|
||||
QQ Version: Windows 9.9.11-24815 / Linux 3.2.9-24815
|
||||
|
||||
## 修复与优化
|
||||
* 修复带有groupid的私聊消息异常发送到群聊消息
|
||||
* 尝试修复rws热重载失效问题
|
||||
* 尝试修复进群事件无法正常获取uin
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
18
docs/changelogs/old/CHANGELOG.v1.6.4.md
Normal file
18
docs/changelogs/old/CHANGELOG.v1.6.4.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# v1.6.4
|
||||
|
||||
QQ Version: Windows 9.9.12-26000 / Linux 3.2.9-26000
|
||||
## 使用前警告
|
||||
1. 在最近版本由于QQ本体大幅变动,为了保证NapCat可用性,NapCat近期启动与安装方式将将大幅变动,请关注文档和社群获取。
|
||||
2. 在Core上完全执行开源,请不要用于违法用途,如此可能造成NapCat完全停止更新。
|
||||
3. 针对原启动方式的围堵,NapCat研发了多种方式,除此其余理论与扩展的分析和思路将部分展示于Docs,以便各位参与开发与维护NapCat。
|
||||
## 其余·备注
|
||||
启动方式: WayBoot.03 (Electron Main进程为Node 直接注入代码 同理项目: LiteLoader)
|
||||
|
||||
## 修复与优化
|
||||
1. 支持Win平台 9.9.12
|
||||
2. 修复部分发送图片下载异常情况
|
||||
|
||||
## 新增与调整
|
||||
没有哦
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
18
docs/changelogs/old/CHANGELOG.v1.6.5.md
Normal file
18
docs/changelogs/old/CHANGELOG.v1.6.5.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# v1.6.5
|
||||
|
||||
QQ Version: Windows 9.9.12-26000 / Linux 3.2.9-26000
|
||||
## 使用前警告
|
||||
1. 在最近版本由于QQ本体大幅变动,为了保证NapCat可用性,NapCat近期启动与安装方式将将大幅变动,请关注文档和社群获取。
|
||||
2. 在Core上完全执行开源,请不要用于违法用途,如此可能造成NapCat完全停止更新。
|
||||
3. 针对原启动方式的围堵,NapCat研发了多种方式,除此其余理论与扩展的分析和思路将部分展示于Docs,以便各位参与开发与维护NapCat。
|
||||
## 其余·备注
|
||||
启动方式: WayBoot.03 (Electron Main进程为Node 直接注入代码 同理项目: LiteLoader)
|
||||
|
||||
## 修复与优化
|
||||
1. 优化了WrapperNative载入代码
|
||||
2. 优化缓存
|
||||
|
||||
## 新增与调整
|
||||
没有哦
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
17
docs/changelogs/old/CHANGELOG.v1.6.6.md
Normal file
17
docs/changelogs/old/CHANGELOG.v1.6.6.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# v1.6.6
|
||||
|
||||
QQ Version: Windows 9.9.12-26000 / Linux 3.2.9-26000
|
||||
## 使用前警告
|
||||
1. 在最近版本由于QQ本体大幅变动,为了保证NapCat可用性,NapCat近期启动与安装方式将将大幅变动,请关注文档和社群获取。
|
||||
2. 在Core上完全执行开源,请不要用于违法用途,如此可能造成NapCat完全停止更新。
|
||||
3. 针对原启动方式的围堵,NapCat研发了多种方式,除此其余理论与扩展的分析和思路将部分展示于Docs,以便各位参与开发与维护NapCat。
|
||||
## 其余·备注
|
||||
启动方式: WayBoot.03 (Electron Main进程为Node 直接注入代码 同理项目: LiteLoader)
|
||||
|
||||
## 修复与优化
|
||||
1. 修复了一些问题
|
||||
|
||||
## 新增与调整
|
||||
没有哦
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
@@ -1,2 +0,0 @@
|
||||
# 开始
|
||||
jadx 跳转于 `com.tencent.qqnt.kernel.*`
|
@@ -1,42 +0,0 @@
|
||||
# Android
|
||||
```java
|
||||
GroupMemberExtReq groupMemberExtReq = new GroupMemberExtReq();
|
||||
groupMemberExtReq.sourceType = MemberExtSourceType.TITLETYPE.ordinal();
|
||||
groupMemberExtReq.groupCode = longOrNull.longValue();
|
||||
groupMemberExtReq.beginUin = "0";
|
||||
groupMemberExtReq.dataTime = "0";
|
||||
Long[] lArr = new Long[1];
|
||||
AppInterface a2 = dVar.a();
|
||||
lArr[0] = Long.valueOf(a2 != null ? a2.getLongAccountUin() : 0L);
|
||||
arrayListOf = CollectionsKt__CollectionsKt.arrayListOf(lArr);
|
||||
groupMemberExtReq.uinList = arrayListOf;
|
||||
MemberExtInfoFilter memberExtInfoFilter = new MemberExtInfoFilter();
|
||||
memberExtInfoFilter.memberLevelInfoUin = 1;
|
||||
memberExtInfoFilter.memberLevelInfoPoint = 1;
|
||||
memberExtInfoFilter.memberLevelInfoActiveDay = 1;
|
||||
memberExtInfoFilter.memberLevelInfoLevel = 1;
|
||||
memberExtInfoFilter.levelName = 1;
|
||||
memberExtInfoFilter.dataTime = 1;
|
||||
memberExtInfoFilter.sysShowFlag = 1;
|
||||
memberExtInfoFilter.userShowFlag = 1;
|
||||
memberExtInfoFilter.userShowFlagNew = 1;
|
||||
memberExtInfoFilter.levelNameNew = 1;
|
||||
Unit unit = Unit.INSTANCE;
|
||||
groupMemberExtReq.memberExtFilter = memberExtInfoFilter;
|
||||
troopLevelFrequencyControl.f(troopUin, new TroopListRepo$fetchTroopLevelInfo$2(b2, groupMemberExtReq, troopUin, new com.tencent.qqnt.troopmemberlist.report.c("fetchTroopLevelInfo")));
|
||||
```
|
||||
# Win
|
||||
参数解析位于 sub_181456A10(24108) -> wrapper.node(24108)+1456A10
|
||||
IGroupService.GetMemberExt(param: object);
|
||||
param展开如下
|
||||
```
|
||||
groupCode string
|
||||
beginUin string
|
||||
dataTime string
|
||||
uinList Array<string>
|
||||
uinNum string
|
||||
groupType string
|
||||
richCardNameVer string
|
||||
sourceType number
|
||||
memberExtFilter object// 参数解析位于 sub_18145A6D0(24108) -> wrapper.node(24108)+145A6D0
|
||||
```
|
16
docs/develop/NC 1.6.X的计划.md
Normal file
16
docs/develop/NC 1.6.X的计划.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# 开发方向
|
||||
方向一 NativeCall/Hook:
|
||||
1. 崩溃检测机制的实现
|
||||
2. Api_Caller 的Hook 可以拿到Event/Handler 进一步提升NC 即时的拦截与处理一些事件比如ReCall拦截
|
||||
3. Node包装层 进一步分析,拿到脱离自带Listener/Adapter,可以拿到一些更加底层的数据变动 或许包括更多二进制数据
|
||||
|
||||
方向二 全新的无头启动 Way01
|
||||
1. 基于Node启动原理,借助导出符号获取函数地址 再次还原NodeMain
|
||||
|
||||
方向三 发包与收包
|
||||
1. 参考 方向一/3 大概可以收包
|
||||
2. 发包 (暂时没有计划)
|
||||
|
||||
方向四 版本控制
|
||||
1. 根据不同版本进行逻辑控制
|
||||
2. 某些参数的自动提取
|
@@ -1,24 +0,0 @@
|
||||
# 前排提示
|
||||
由于Core未处于开源,非组织人员无法参与Core开发,此处为Core开发提示
|
||||
|
||||
# 准备工具
|
||||
frida ida-pro jadx x64dbg ce 内部调试脚本
|
||||
|
||||
## ida-pro
|
||||
1. 用于快速分析入参和返回类型
|
||||
2. 通过静态QLog推测语义
|
||||
3. 提取Listener与Service (常用)
|
||||
## frida
|
||||
1. 用于动态获取QLog推测语义
|
||||
2. 捕捉Native函数 实际入参与数据 分析中间流程
|
||||
|
||||
## jadx
|
||||
1. 通过其它平台实现 静态获取QLog推测语义
|
||||
2. 提供部分未调用代码 参考
|
||||
|
||||
## x64dbg
|
||||
1. 验证IDA的Hook点
|
||||
|
||||
## 内部脚本
|
||||
1. 提取Listener与Service (不调用无类型 不推荐)
|
||||
2. 获取NT调用流程
|
1
docs/develop/碎碎的研究记录.md
Normal file
1
docs/develop/碎碎的研究记录.md
Normal file
@@ -0,0 +1 @@
|
||||
getMsgUniqueId 传入时间 产出一个唯一ID 发送消息作为一个参数
|
@@ -2,7 +2,7 @@
|
||||
"name": "napcat",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"version": "1.5.8",
|
||||
"version": "1.6.7",
|
||||
"scripts": {
|
||||
"watch:dev": "vite --mode development",
|
||||
"watch:prod": "vite --mode production",
|
||||
@@ -33,7 +33,7 @@
|
||||
"@types/fluent-ffmpeg": "^2.1.24",
|
||||
"@types/node": "^20.11.30",
|
||||
"@types/qrcode-terminal": "^0.12.2",
|
||||
"@types/uuid": "^9.0.8",
|
||||
"@types/uuid": "^10.0.0",
|
||||
"@types/ws": "^8.5.10",
|
||||
"@typescript-eslint/eslint-plugin": "^7.4.0",
|
||||
"@typescript-eslint/parser": "^7.4.0",
|
||||
@@ -64,7 +64,7 @@
|
||||
"json-schema-to-ts": "^3.1.0",
|
||||
"log4js": "^6.9.1",
|
||||
"qrcode-terminal": "^0.12.0",
|
||||
"silk-wasm": "^3.3.4",
|
||||
"silk-wasm": "^3.6.1",
|
||||
"sqlite3": "^5.1.7",
|
||||
"uuid": "^10.0.0",
|
||||
"ws": "^8.16.0"
|
||||
|
45
script/BootWay.03.ps1
Normal file
45
script/BootWay.03.ps1
Normal file
@@ -0,0 +1,45 @@
|
||||
# Dont Use This Script
|
||||
# 2024.7.3
|
||||
function Get-QQpath {
|
||||
try {
|
||||
$key = Get-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\QQ"
|
||||
$uninstallString = $key.UninstallString
|
||||
return [System.IO.Path]::GetDirectoryName($uninstallString) + "\QQ.exe"
|
||||
}
|
||||
catch {
|
||||
throw "get QQ path error: $_"
|
||||
}
|
||||
}
|
||||
function Select-QQPath {
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
[System.Windows.Forms.Application]::EnableVisualStyles()
|
||||
|
||||
$dialogTitle = "Select QQ.exe"
|
||||
|
||||
$filePicker = New-Object System.Windows.Forms.OpenFileDialog
|
||||
$filePicker.Title = $dialogTitle
|
||||
$filePicker.Filter = "Executable Files (*.exe)|*.exe|All Files (*.*)|*.*"
|
||||
$filePicker.FilterIndex = 1
|
||||
$null = $filePicker.ShowDialog()
|
||||
if (-not ($filePicker.FileName)) {
|
||||
throw "User did not select an .exe file."
|
||||
}
|
||||
return $filePicker.FileName
|
||||
}
|
||||
|
||||
$params = $args -join " "
|
||||
Try {
|
||||
$QQpath = Get-QQpath
|
||||
}
|
||||
Catch {
|
||||
$QQpath = Select-QQPath
|
||||
}
|
||||
|
||||
if (!(Test-Path $QQpath)) {
|
||||
throw "provided QQ path is invalid: $QQpath"
|
||||
}
|
||||
|
||||
$Bootfile = Join-Path $PSScriptRoot "napcat.mjs"
|
||||
$env:ELECTRON_RUN_AS_NODE = 1
|
||||
$commandInfo = Get-Command $QQpath -ErrorAction Stop
|
||||
Start-Process powershell -ArgumentList "-noexit", "-noprofile", "-command &{& chcp 65001;& '$($commandInfo.Path)' --enable-logging $params}"
|
28
script/NapCat.164.bat
Normal file
28
script/NapCat.164.bat
Normal file
@@ -0,0 +1,28 @@
|
||||
@echo off
|
||||
chcp 65001
|
||||
:: 检查是否有管理员权限
|
||||
net session >nul 2>&1
|
||||
if %errorlevel% neq 0 (
|
||||
echo 请求管理员权限...
|
||||
powershell -Command "Start-Process '%~f0' -Verb runAs"
|
||||
exit /b
|
||||
)
|
||||
:: 如果有管理员权限,继续执行
|
||||
setlocal enabledelayedexpansion
|
||||
:loop_read
|
||||
for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\QQ" /v "UninstallString"') do (
|
||||
set "RetString=%%b"
|
||||
goto :napcat_boot
|
||||
)
|
||||
|
||||
:napcat_boot
|
||||
for %%a in ("!RetString!") do (
|
||||
set "pathWithoutUninstall=%%~dpa"
|
||||
)
|
||||
|
||||
set "QQPath=!pathWithoutUninstall!QQ.exe"
|
||||
|
||||
echo !QQPath!
|
||||
"!QQPath!" --enable-logging %*
|
||||
|
||||
pause
|
3
script/NapCat.Way01.bat
Normal file
3
script/NapCat.Way01.bat
Normal file
@@ -0,0 +1,3 @@
|
||||
REM 全新启动脚本 基于 Hook Native 预计版本1.6.0左右发布
|
||||
@echo off
|
||||
pause
|
20
script/index.js
Normal file
20
script/index.js
Normal file
@@ -0,0 +1,20 @@
|
||||
// --------------------
|
||||
// 2024.7.3 9.9.12 BootWay.03 其余方法暂不公开(此方案为临时方案 Win平台已验证)
|
||||
// 缺陷 (已知)
|
||||
// 1.与非入侵式不同 现在破坏本体代码
|
||||
// 2.重启代码与正常启动代码失效
|
||||
// 3.Win需要补丁
|
||||
// 4.更新后丢失内容 需要重写此文件
|
||||
// 5.安装难度上升与周围基础设施失效
|
||||
// --------------------
|
||||
|
||||
const path = require('path');
|
||||
const CurrentPath = path.dirname(__filename)
|
||||
const hasNapcatParam = process.argv.includes('--enable-logging');
|
||||
if (hasNapcatParam) {
|
||||
(async () => {
|
||||
await import("file://" + path.join(CurrentPath, './napcat/napcat.mjs'));
|
||||
})();
|
||||
} else {
|
||||
require('./launcher.node').load('external_index', module);
|
||||
}
|
18
script/napcat-9912-utf8.bat
Normal file
18
script/napcat-9912-utf8.bat
Normal file
@@ -0,0 +1,18 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
chcp 65001
|
||||
:loop_read
|
||||
for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\QQ" /v "UninstallString"') do (
|
||||
set "RetString=%%b"
|
||||
goto :napcat_boot
|
||||
)
|
||||
|
||||
:napcat_boot
|
||||
for %%a in ("!RetString!") do (
|
||||
set "pathWithoutUninstall=%%~dpa"
|
||||
)
|
||||
|
||||
set "QQPath=!pathWithoutUninstall!"
|
||||
cd /d !QQPath!
|
||||
echo !QQPath!
|
||||
QQ.exe --enable-logging %*
|
41
script/napcat-9912-utf8.ps1
Normal file
41
script/napcat-9912-utf8.ps1
Normal file
@@ -0,0 +1,41 @@
|
||||
function Get-QQpath {
|
||||
try {
|
||||
$key = Get-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\QQ"
|
||||
$uninstallString = $key.UninstallString
|
||||
return [System.IO.Path]::GetDirectoryName($uninstallString) + "\"
|
||||
}
|
||||
catch {
|
||||
throw "get QQ path error: $_"
|
||||
}
|
||||
}
|
||||
function Select-QQPath {
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
[System.Windows.Forms.Application]::EnableVisualStyles()
|
||||
|
||||
$dialogTitle = "Select QQ.exe"
|
||||
|
||||
$filePicker = New-Object System.Windows.Forms.OpenFileDialog
|
||||
$filePicker.Title = $dialogTitle
|
||||
$filePicker.Filter = "Executable Files (*.exe)|*.exe|All Files (*.*)|*.*"
|
||||
$filePicker.FilterIndex = 1
|
||||
$null = $filePicker.ShowDialog()
|
||||
if (-not ($filePicker.FileName)) {
|
||||
throw "User did not select an .exe file."
|
||||
}
|
||||
return $filePicker.FileName
|
||||
}
|
||||
|
||||
$params = $args -join " "
|
||||
Try {
|
||||
$QQpath = Get-QQpath
|
||||
}
|
||||
Catch {
|
||||
$QQpath = Select-QQPath
|
||||
}
|
||||
|
||||
if (!(Test-Path $QQpath)) {
|
||||
throw "provided QQ path is invalid: $QQpath"
|
||||
}
|
||||
|
||||
Set-Location -Path $QQpath
|
||||
Start-Process powershell -ArgumentList "-noexit", "-noprofile", "-command &{& chcp 65001;& ./QQ.exe --enable-logging $params}"
|
17
script/napcat-9912.bat
Normal file
17
script/napcat-9912.bat
Normal file
@@ -0,0 +1,17 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
:loop_read
|
||||
for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\QQ" /v "UninstallString"') do (
|
||||
set "RetString=%%b"
|
||||
goto :napcat_boot
|
||||
)
|
||||
|
||||
:napcat_boot
|
||||
for %%a in ("!RetString!") do (
|
||||
set "pathWithoutUninstall=%%~dpa"
|
||||
)
|
||||
|
||||
set QQPath=!pathWithoutUninstall!
|
||||
cd /d !QQPath!
|
||||
echo !QQPath!
|
||||
QQ.exe --enable-logging %*
|
41
script/napcat-9912.ps1
Normal file
41
script/napcat-9912.ps1
Normal file
@@ -0,0 +1,41 @@
|
||||
function Get-QQpath {
|
||||
try {
|
||||
$key = Get-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\QQ"
|
||||
$uninstallString = $key.UninstallString
|
||||
return [System.IO.Path]::GetDirectoryName($uninstallString) + "\"
|
||||
}
|
||||
catch {
|
||||
throw "get QQ path error: $_"
|
||||
}
|
||||
}
|
||||
function Select-QQPath {
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
[System.Windows.Forms.Application]::EnableVisualStyles()
|
||||
|
||||
$dialogTitle = "Select QQ.exe"
|
||||
|
||||
$filePicker = New-Object System.Windows.Forms.OpenFileDialog
|
||||
$filePicker.Title = $dialogTitle
|
||||
$filePicker.Filter = "Executable Files (*.exe)|*.exe|All Files (*.*)|*.*"
|
||||
$filePicker.FilterIndex = 1
|
||||
$null = $filePicker.ShowDialog()
|
||||
if (-not ($filePicker.FileName)) {
|
||||
throw "User did not select an .exe file."
|
||||
}
|
||||
return $filePicker.FileName
|
||||
}
|
||||
|
||||
$params = $args -join " "
|
||||
Try {
|
||||
$QQpath = Get-QQpath
|
||||
}
|
||||
Catch {
|
||||
$QQpath = Select-QQPath
|
||||
}
|
||||
|
||||
if (!(Test-Path $QQpath)) {
|
||||
throw "provided QQ path is invalid: $QQpath"
|
||||
}
|
||||
|
||||
Set-Location -Path $QQpath
|
||||
Start-Process powershell -ArgumentList "-noexit", "-noprofile", "-command &{& ./QQ.exe --enable-logging $params}"
|
@@ -1,7 +1,7 @@
|
||||
import { sleep } from '@/common/utils/helper';
|
||||
import { logError } from './log';
|
||||
type AsyncQueueTask = (() => void) | (()=>Promise<void>);
|
||||
|
||||
// 2024.7.13 废弃
|
||||
|
||||
export class AsyncQueue {
|
||||
private tasks: (AsyncQueueTask)[] = [];
|
||||
|
@@ -1,4 +1,3 @@
|
||||
import { NodeIKernelMsgListener } from '@/core';
|
||||
import { NodeIQQNTWrapperSession } from '@/core/wrapper';
|
||||
import { randomUUID } from 'crypto';
|
||||
|
||||
|
@@ -21,7 +21,8 @@ class cacheNode<T> {
|
||||
}
|
||||
}
|
||||
|
||||
type cache<T> = { [key: group_id]: { [key: user_id]: cacheNode<T> } };
|
||||
type cache<T, K = { [key: user_id]: cacheNode<T> }> = { [key: group_id]: K };
|
||||
type removeObject<T> = cache<T, { userId: user_id, value: T }[]>
|
||||
class LRU<T> {
|
||||
private maxAge: number;
|
||||
private maxSize: number;
|
||||
@@ -29,9 +30,9 @@ class LRU<T> {
|
||||
private cache: cache<T>;
|
||||
private head: cacheNode<T> | null = null;
|
||||
private tail: cacheNode<T> | null = null;
|
||||
private onFuncs: ((node: cacheNode<T>) => void)[] = [];
|
||||
private onFuncs: ((node: removeObject<T>) => void)[] = [];
|
||||
|
||||
constructor(maxAge: number = 2e4, maxSize: number = 5e3) {
|
||||
constructor(maxAge: number = 6e4 * 3, maxSize: number = 1e4) {
|
||||
this.maxAge = maxAge;
|
||||
this.maxSize = maxSize;
|
||||
this.cache = Object.create(null);
|
||||
@@ -53,46 +54,39 @@ class LRU<T> {
|
||||
node.prev = node.next = null;
|
||||
delete this.cache[node.groupId][node.userId];
|
||||
this.removeNode(node);
|
||||
this.onFuncs.forEach((func) => func(node));
|
||||
this.onFuncs.forEach((func) => func({ [node.groupId]: [node] }));
|
||||
this.currentSize--;
|
||||
}
|
||||
|
||||
public on(func: (node: cacheNode<T>) => void) {
|
||||
public on(func: (node: removeObject<T>) => void) {
|
||||
this.onFuncs.push(func);
|
||||
}
|
||||
|
||||
private removeExpired() {
|
||||
const now = Date.now();
|
||||
let current = this.tail;
|
||||
const nodesToRemove: cacheNode<T>[] = [];
|
||||
let removedCount = 0;
|
||||
let totalNodeNum = 0;
|
||||
|
||||
const removeObject: cache<T, { userId: user_id, value: T }[]> = {};
|
||||
|
||||
// 收集需要删除的节点
|
||||
while (current && now - current.timestamp > this.maxAge) {
|
||||
nodesToRemove.push(current);
|
||||
// 收集节点
|
||||
if (!removeObject[current.groupId]) removeObject[current.groupId] = [];
|
||||
removeObject[current.groupId].push({ userId: current.userId, value: current.value });
|
||||
// 删除LRU节点
|
||||
delete this.cache[current.groupId][current.userId];
|
||||
current = current.prev;
|
||||
removedCount++;
|
||||
if (removedCount >= 100) break;
|
||||
}
|
||||
|
||||
// 更新链表指向
|
||||
if (nodesToRemove.length > 0) {
|
||||
const newTail = nodesToRemove[nodesToRemove.length - 1].prev;
|
||||
if (newTail) {
|
||||
newTail.next = null;
|
||||
} else {
|
||||
this.head = null;
|
||||
}
|
||||
this.tail = newTail;
|
||||
}
|
||||
|
||||
nodesToRemove.forEach((node) => {
|
||||
node.prev = node.next = null;
|
||||
delete this.cache[node.groupId][node.userId];
|
||||
|
||||
totalNodeNum++;
|
||||
this.currentSize--;
|
||||
this.onFuncs.forEach((func) => func(node));
|
||||
});
|
||||
}
|
||||
|
||||
if (!totalNodeNum) return;
|
||||
|
||||
// 跟新链表指向
|
||||
if (current) { current.next = null; } else { this.head = null; }
|
||||
this.tail = current;
|
||||
|
||||
this.onFuncs.forEach(func => func(removeObject));
|
||||
}
|
||||
|
||||
private addNode(node: cacheNode<T>) {
|
||||
@@ -140,6 +134,28 @@ class LRU<T> {
|
||||
}
|
||||
}
|
||||
}
|
||||
public get(groupId: group_id): { userId: user_id; value: T }[];
|
||||
public get(groupId: group_id, userId: user_id): null | { userId: user_id; value: T };
|
||||
public get(groupId: group_id, userId?: user_id): any {
|
||||
const groupObject = this.cache[groupId];
|
||||
if (!groupObject) return userId === undefined ? [] : null;
|
||||
|
||||
if (userId === undefined) {
|
||||
return Object.entries(groupObject).map(([userId, { value }]) => ({
|
||||
userId: Number(userId),
|
||||
value,
|
||||
}));
|
||||
}
|
||||
|
||||
if (groupObject[userId]) {
|
||||
return { userId, value: groupObject[userId].value };
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
export default LRU;
|
||||
|
@@ -1,53 +1,53 @@
|
||||
import crypto from 'crypto';
|
||||
|
||||
class LimitedHashTable<K, V> {
|
||||
private keyToValue: Map<K, V> = new Map();
|
||||
private valueToKey: Map<V, K> = new Map();
|
||||
private maxSize: number;
|
||||
private KeyQueneList: K[] = [];
|
||||
private ValueQueneList: V[] = [];
|
||||
constructor(maxSize: number) {
|
||||
this.maxSize = maxSize;
|
||||
}
|
||||
set(key: K, value: V): void {
|
||||
this.keyToValue.set(key, value);
|
||||
this.valueToKey.set(value, key);
|
||||
if (this.KeyQueneList.length >= this.maxSize || this.ValueQueneList.length >= this.maxSize) {
|
||||
this.KeyQueneList.shift();
|
||||
this.ValueQueneList.shift();
|
||||
}
|
||||
private keyToValue: Map<K, V> = new Map();
|
||||
private valueToKey: Map<V, K> = new Map();
|
||||
private maxSize: number;
|
||||
private KeyQueneList: K[] = [];
|
||||
private ValueQueneList: V[] = [];
|
||||
constructor(maxSize: number) {
|
||||
this.maxSize = maxSize;
|
||||
}
|
||||
set(key: K, value: V): void {
|
||||
this.keyToValue.set(key, value);
|
||||
this.valueToKey.set(value, key);
|
||||
if (this.KeyQueneList.length >= this.maxSize || this.ValueQueneList.length >= this.maxSize) {
|
||||
this.KeyQueneList.shift();
|
||||
this.ValueQueneList.shift();
|
||||
}
|
||||
}
|
||||
|
||||
getValue(key: K): V | undefined {
|
||||
return this.keyToValue.get(key);
|
||||
}
|
||||
getValue(key: K): V | undefined {
|
||||
return this.keyToValue.get(key);
|
||||
}
|
||||
|
||||
getKey(value: V): K | undefined {
|
||||
return this.valueToKey.get(value);
|
||||
}
|
||||
getKey(value: V): K | undefined {
|
||||
return this.valueToKey.get(value);
|
||||
}
|
||||
|
||||
delete(key: K): void {
|
||||
const value = this.keyToValue.get(key);
|
||||
if (value !== undefined) {
|
||||
this.keyToValue.delete(key);
|
||||
this.valueToKey.delete(value);
|
||||
}
|
||||
delete(key: K): void {
|
||||
const value = this.keyToValue.get(key);
|
||||
if (value !== undefined) {
|
||||
this.keyToValue.delete(key);
|
||||
this.valueToKey.delete(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MessageUniqueWrapper {
|
||||
private msgIdMap: LimitedHashTable<number, string> = new LimitedHashTable(1000);
|
||||
createMsg(MsgId: string) {
|
||||
let ShortId = parseInt(crypto.createHash('sha1').update('2345').digest('hex').slice(0, 8), 16);
|
||||
this.msgIdMap.set(ShortId, MsgId);
|
||||
return ShortId;
|
||||
}
|
||||
getMsgIdByShortId(ShortId: number) {
|
||||
return this.msgIdMap.getValue(ShortId);
|
||||
}
|
||||
getShortIdByMsgId(MsgId: string) {
|
||||
return this.msgIdMap.getKey(MsgId);
|
||||
}
|
||||
private msgIdMap: LimitedHashTable<number, string> = new LimitedHashTable(1000);
|
||||
createMsg(MsgId: string) {
|
||||
const ShortId = parseInt(crypto.createHash('sha1').update('2345').digest('hex').slice(0, 8), 16);
|
||||
this.msgIdMap.set(ShortId, MsgId);
|
||||
return ShortId;
|
||||
}
|
||||
getMsgIdByShortId(ShortId: number) {
|
||||
return this.msgIdMap.getValue(ShortId);
|
||||
}
|
||||
getShortIdByMsgId(MsgId: string) {
|
||||
return this.msgIdMap.getKey(MsgId);
|
||||
}
|
||||
}
|
||||
|
||||
export const MessageUnique = new MessageUniqueWrapper();
|
@@ -1,14 +1,14 @@
|
||||
// 方案一 MiniApp发包方案
|
||||
// 前置条件: 处于GUI环境 存在MiniApp
|
||||
|
||||
import { NTQQSystemApi } from "@/core";
|
||||
import { NTQQSystemApi } from '@/core';
|
||||
|
||||
// 前排提示: 开发验证仅Win平台开展
|
||||
export class MiniAppUtil {
|
||||
static async RunMiniAppWithGUI() {
|
||||
//process.env.ELECTRON_RUN_AS_NODE = undefined;//没用还是得自己用cpp之类的语言写个程序转发参数
|
||||
return NTQQSystemApi.BootMiniApp(process.execPath, "miniapp://open/1007?url=https%3A%2F%2Fm.q.qq.com%2Fa%2Fs%2Fedd0a83d3b8afe233dfa07adaaf8033f%3Fscene%3D1007%26min_refer%3D10001");
|
||||
}
|
||||
static async RunMiniAppWithGUI() {
|
||||
//process.env.ELECTRON_RUN_AS_NODE = undefined;//没用还是得自己用cpp之类的语言写个程序转发参数
|
||||
return NTQQSystemApi.BootMiniApp(process.execPath, 'miniapp://open/1007?url=https%3A%2F%2Fm.q.qq.com%2Fa%2Fs%2Fedd0a83d3b8afe233dfa07adaaf8033f%3Fscene%3D1007%26min_refer%3D10001');
|
||||
}
|
||||
}
|
||||
// 方案二 MiniApp发包方案 替代MiniApp方案
|
||||
// 前置条件: 无
|
||||
|
@@ -38,11 +38,11 @@ type QQVersionConfigInfo = {
|
||||
}
|
||||
|
||||
let _qqVersionConfigInfo: QQVersionConfigInfo = {
|
||||
'baseVersion': '9.9.11-24568',
|
||||
'curVersion': '9.9.11-24568',
|
||||
'baseVersion': '9.9.12-25765',
|
||||
'curVersion': '9.9.12-25765',
|
||||
'prevVersion': '',
|
||||
'onErrorVersions': [],
|
||||
'buildId': '24568'
|
||||
'buildId': '25765'
|
||||
};
|
||||
|
||||
if (fs.existsSync(configVersionInfoPath)) {
|
||||
@@ -55,23 +55,23 @@ if (fs.existsSync(configVersionInfoPath)) {
|
||||
}
|
||||
|
||||
export const qqVersionConfigInfo: QQVersionConfigInfo = _qqVersionConfigInfo;
|
||||
//V1_WIN_NQ_9.9.11_24568_GW_B
|
||||
//V1_WIN_NQ_9.9.12_25765_GW_B
|
||||
export const qqPkgInfo: QQPkgInfo = JSON.parse(fs.readFileSync(pkgInfoPath).toString());
|
||||
// platform_type: 3,
|
||||
// app_type: 4,
|
||||
// app_version: '9.9.9-23159',
|
||||
// qua: 'V1_WIN_NQ_9.9.9_23159_GW_B',
|
||||
// appid: '537213764',
|
||||
// app_version: '9.9.12-25765',
|
||||
// qua: 'V1_WIN_NQ_9.9.12_25765_GW_B',
|
||||
// appid: '537234702',
|
||||
// platVer: '10.0.26100',
|
||||
// clientVer: '9.9.9-23159',
|
||||
// clientVer: '9.9.9-25765',
|
||||
|
||||
// Linux
|
||||
// app_version: '3.2.9-24568',
|
||||
// qua: 'V1_LNX_NQ_3.2.9_24568_GW_B',
|
||||
// app_version: '3.2.9-25765',
|
||||
// qua: 'V1_LNX_NQ_3.2.10_25765_GW_B',
|
||||
|
||||
let _appid: string = '537226369'; // 默认为 Windows 平台的 appid
|
||||
let _appid: string = '537234702'; // 默认为 Windows 平台的 appid
|
||||
if (systemPlatform === 'linux') {
|
||||
_appid = '537226441';
|
||||
_appid = '537234773';
|
||||
}
|
||||
// todo: mac 平台的 appid
|
||||
export const appid = _appid;
|
||||
export const appid = _appid;
|
@@ -1,5 +1,5 @@
|
||||
import fs from 'fs';
|
||||
import { encode, getDuration, getWavFileInfo, isWav } from 'silk-wasm';
|
||||
import { encode, getDuration, getWavFileInfo, isWav, isSilk } from 'silk-wasm';
|
||||
import fsPromise from 'fs/promises';
|
||||
import { log, logError } from './log';
|
||||
import path from 'node:path';
|
||||
@@ -63,10 +63,11 @@ export async function encodeSilk(filePath: string) {
|
||||
// }
|
||||
|
||||
try {
|
||||
const file = await fsPromise.readFile(filePath);
|
||||
const pttPath = path.join(TEMP_DIR, uuidv4());
|
||||
if (getFileHeader(filePath) !== '02232153494c4b') {
|
||||
if (!isSilk(file)) {
|
||||
log(`语音文件${filePath}需要转换成silk`);
|
||||
const _isWav = await isWavFile(filePath);
|
||||
const _isWav = isWav(file);
|
||||
const pcmPath = pttPath + '.pcm';
|
||||
let sampleRate = 0;
|
||||
const convert = () => {
|
||||
@@ -96,7 +97,7 @@ export async function encodeSilk(filePath: string) {
|
||||
if (!_isWav) {
|
||||
input = await convert();
|
||||
} else {
|
||||
input = fs.readFileSync(filePath);
|
||||
input = file;
|
||||
const allowSampleRate = [8000, 12000, 16000, 24000, 32000, 44100, 48000];
|
||||
const { fmt } = getWavFileInfo(input);
|
||||
// log(`wav文件信息`, fmt)
|
||||
@@ -113,7 +114,7 @@ export async function encodeSilk(filePath: string) {
|
||||
duration: silk.duration / 1000
|
||||
};
|
||||
} else {
|
||||
const silk = fs.readFileSync(filePath);
|
||||
const silk = file;
|
||||
let duration = 0;
|
||||
try {
|
||||
duration = getDuration(silk) / 1000;
|
||||
|
@@ -72,7 +72,7 @@ class DBUtil extends DBUtilBase {
|
||||
private cache: { gid: number; uid: number }[] = [];
|
||||
private maxSize: number;
|
||||
|
||||
constructor(maxSize: number = 5000) {
|
||||
constructor(maxSize: number = 50000) {
|
||||
this.maxSize = maxSize;
|
||||
}
|
||||
|
||||
@@ -120,57 +120,83 @@ class DBUtil extends DBUtilBase {
|
||||
});
|
||||
|
||||
|
||||
this.LURCache.on(async (node) => {
|
||||
const { value: time, groupId, userId } = node;
|
||||
this.LURCache.on(async (nodeObject) => {
|
||||
|
||||
logDebug('插入发言时间', userId, groupId);
|
||||
await this.createGroupInfoTimeTableIfNotExist(groupId);
|
||||
Object.entries(nodeObject).forEach(async ([_groupId, datas]) => {
|
||||
const userIds = datas.map(v => v.userId);
|
||||
const groupId = Number(_groupId);
|
||||
logDebug('插入发言时间', _groupId);
|
||||
|
||||
const method = await this.getDataSetMethod(groupId, userId);
|
||||
logDebug('插入发言时间方法判断', userId, groupId, method);
|
||||
await this.createGroupInfoTimeTableIfNotExist(groupId);
|
||||
|
||||
const sql =
|
||||
method == 'update'
|
||||
? `UPDATE "${groupId}" SET last_sent_time = ? WHERE user_id = ?`
|
||||
: `INSERT INTO "${groupId}" (last_sent_time, user_id) VALUES (?, ?)`;
|
||||
const needCreatUsers = await this.getNeedCreatList(groupId, userIds);
|
||||
const updateList = needCreatUsers.length > 0 ? datas.filter(user => !needCreatUsers.includes(user.userId)) : datas;
|
||||
const insertList = needCreatUsers.map(userId => datas.find(e => userId == e.userId)!);
|
||||
|
||||
this.db!.all(sql, [time, userId], (err) => {
|
||||
if (err) {
|
||||
return logError('插入/更新发言时间失败', userId, groupId);
|
||||
logDebug('updateList', updateList);
|
||||
logDebug('insertList', insertList);
|
||||
|
||||
if (insertList.length) {
|
||||
const insertSql = `INSERT INTO "${groupId}" (last_sent_time, user_id) VALUES ${insertList.map(() => '(?, ?)').join(', ')};`;
|
||||
|
||||
this.db!.all(insertSql, insertList.map(v => [v.value, v.userId]).flat(), err => {
|
||||
if (err) {
|
||||
logError(`群 ${groupId} 插入失败`);
|
||||
logError(`更新Sql : ${insertSql}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
logDebug('插入/更新发言时间成功', userId, groupId);
|
||||
|
||||
if (updateList.length) {
|
||||
const updateSql =
|
||||
`UPDATE "${groupId}" SET last_sent_time = CASE ` +
|
||||
updateList.map(v => `WHEN user_id = ${v.userId} THEN ${v.value}`).join(' ') +
|
||||
' ELSE last_sent_time END WHERE user_id IN ' +
|
||||
`(${updateList.map(v => v.userId).join(', ')});`;
|
||||
|
||||
this.db!.all(updateSql, [], err => {
|
||||
if (err) {
|
||||
logError(`群 ${groupId} 跟新失败`);
|
||||
logError(`更新Sql : ${updateSql}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
async getDataSetMethod(groupId: number, userId: number) {
|
||||
// 缓存记录
|
||||
if (this.LastSentCache.get(groupId, userId)) {
|
||||
logDebug('缓存命中', userId, groupId);
|
||||
return 'update';
|
||||
async getNeedCreatList(groupId: number, userIds: number[]) {
|
||||
|
||||
// 获取缓存中没有的
|
||||
const unhas = userIds.filter(userId => !this.LastSentCache.get(groupId, userId));
|
||||
|
||||
if (unhas.length == 0) {
|
||||
logDebug('缓存全部命中');
|
||||
return [];
|
||||
}
|
||||
|
||||
// 数据库判断
|
||||
return new Promise<'insert' | 'update'>((resolve, reject) => {
|
||||
this.db!.all(
|
||||
`SELECT * FROM "${groupId}" WHERE user_id = ?`,
|
||||
[userId],
|
||||
(err, rows) => {
|
||||
if (err) {
|
||||
logError('查询发言时间存在失败', userId, groupId, err);
|
||||
return logError('插入发言时间失败', userId, groupId, err);
|
||||
}
|
||||
logDebug('缓存未全部命中');
|
||||
|
||||
if (rows.length === 0) {
|
||||
logDebug('查询发言时间不存在', userId, groupId);
|
||||
return resolve('insert');
|
||||
}
|
||||
const sql = `SELECT * FROM "${groupId}" WHERE user_id IN (${unhas.map(() => '?').join(',')})`;
|
||||
|
||||
logDebug('查询发言时间存在', userId, groupId);
|
||||
resolve('update');
|
||||
return new Promise<number[]>((resolve) => {
|
||||
this.db!.all(sql, unhas, (err, rows: { user_id: number }[]) => {
|
||||
const has = rows.map(v => v.user_id);
|
||||
const needCreatUsers = unhas.filter(userId => !has.includes(userId));
|
||||
|
||||
if (needCreatUsers.length == 0) {
|
||||
logDebug('数据库全部命中');
|
||||
} else {
|
||||
logDebug('数据库未全部命中');
|
||||
}
|
||||
);
|
||||
|
||||
resolve(needCreatUsers);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
async createGroupInfoTimeTableIfNotExist(groupId: number) {
|
||||
const createTableSQL = (groupId: number) =>
|
||||
@@ -408,10 +434,12 @@ class DBUtil extends DBUtilBase {
|
||||
logDebug('读取发言时间', groupId);
|
||||
return new Promise<IRember[]>((resolve, reject) => {
|
||||
this.db!.all(`SELECT * FROM "${groupId}" `, (err, rows: IRember[]) => {
|
||||
const cache = this.LURCache.get(groupId).map(e => ({ user_id: e.userId, last_sent_time: e.value }));
|
||||
if (err) {
|
||||
logError('查询发言时间失败', groupId);
|
||||
return resolve([]);
|
||||
return resolve(cache.map(e => ({ ...e, join_time: 0 })));
|
||||
}
|
||||
Object.assign(rows, cache);
|
||||
logDebug('查询发言时间成功', groupId, rows);
|
||||
resolve(rows);
|
||||
});
|
||||
|
@@ -148,6 +148,8 @@ export async function httpDownload(options: string | HttpDownloadOptions): Promi
|
||||
};
|
||||
if (typeof options === 'string') {
|
||||
url = options;
|
||||
const host = new URL(url).hostname;
|
||||
headers['Host'] = host;
|
||||
} else {
|
||||
url = options.url;
|
||||
if (options.headers) {
|
||||
@@ -158,7 +160,12 @@ export async function httpDownload(options: string | HttpDownloadOptions): Promi
|
||||
}
|
||||
}
|
||||
}
|
||||
const fetchRes = await fetch(url, { headers });
|
||||
const fetchRes = await fetch(url, { headers }).catch((err) => {
|
||||
if (err.cause) {
|
||||
throw err.cause;
|
||||
}
|
||||
throw err;
|
||||
});
|
||||
if (!fetchRes.ok) throw new Error(`下载文件失败: ${fetchRes.statusText}`);
|
||||
|
||||
const blob = await fetchRes.blob();
|
||||
|
@@ -89,7 +89,36 @@ export function CacheClassFuncAsync(ttl: number = 3600 * 1000, customKey: string
|
||||
}
|
||||
return logExecutionTime;
|
||||
}
|
||||
|
||||
export function CacheClassFuncAsyncExtend(ttl: number = 3600 * 1000, customKey: string = '', checker: any = (...data: any[]) => { return true; }) {
|
||||
//console.log('CacheClassFuncAsync', ttl, customKey);
|
||||
function logExecutionTime(target: any, methodName: string, descriptor: PropertyDescriptor) {
|
||||
//console.log('logExecutionTime', target, methodName, descriptor);
|
||||
const cache = new Map<string, { expiry: number; value: any }>();
|
||||
const originalMethod = descriptor.value;
|
||||
descriptor.value = async function (...args: any[]) {
|
||||
const key = `${customKey}${String(methodName)}.(${args.map(arg => JSON.stringify(arg)).join(', ')})`;
|
||||
cache.forEach((value, key) => {
|
||||
if (value.expiry < Date.now()) {
|
||||
cache.delete(key);
|
||||
}
|
||||
});
|
||||
const cachedValue = cache.get(key);
|
||||
if (cachedValue && cachedValue.expiry > Date.now()) {
|
||||
return cachedValue.value;
|
||||
}
|
||||
// const start = Date.now();
|
||||
const result = await originalMethod.apply(this, args);
|
||||
if (!checker(...args, result)) {
|
||||
return result;//丢弃缓存
|
||||
}
|
||||
// const end = Date.now();
|
||||
// console.log(`Method ${methodName} executed in ${end - start} ms.`);
|
||||
cache.set(key, { expiry: Date.now() + ttl, value: result });
|
||||
return result;
|
||||
};
|
||||
}
|
||||
return logExecutionTime;
|
||||
}
|
||||
// export function CacheClassFuncAsync(ttl: number = 3600 * 1000, customKey: string = ''): any {
|
||||
// const cache = new Map<string, { expiry: number; value: any }>();
|
||||
|
||||
@@ -264,23 +293,23 @@ export function isEqual(obj1: any, obj2: any) {
|
||||
}
|
||||
|
||||
export async function deleteOldFiles(directoryPath: string, daysThreshold: number) {
|
||||
try {
|
||||
const files = await fsPromise.readdir(directoryPath);
|
||||
try {
|
||||
const files = await fsPromise.readdir(directoryPath);
|
||||
|
||||
for (const file of files) {
|
||||
const filePath = path.join(directoryPath, file);
|
||||
const stats = await fsPromise.stat(filePath);
|
||||
const lastModifiedTime = stats.mtimeMs;
|
||||
const currentTime = Date.now();
|
||||
const timeDifference = currentTime - lastModifiedTime;
|
||||
const daysDifference = timeDifference / (1000 * 60 * 60 * 24);
|
||||
for (const file of files) {
|
||||
const filePath = path.join(directoryPath, file);
|
||||
const stats = await fsPromise.stat(filePath);
|
||||
const lastModifiedTime = stats.mtimeMs;
|
||||
const currentTime = Date.now();
|
||||
const timeDifference = currentTime - lastModifiedTime;
|
||||
const daysDifference = timeDifference / (1000 * 60 * 60 * 24);
|
||||
|
||||
if (daysDifference > daysThreshold) {
|
||||
await fsPromise.unlink(filePath); // Delete the file
|
||||
//console.log(`Deleted: ${filePath}`);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
//console.error('Error deleting files:', error);
|
||||
if (daysDifference > daysThreshold) {
|
||||
await fsPromise.unlink(filePath); // Delete the file
|
||||
//console.log(`Deleted: ${filePath}`);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
//console.error('Error deleting files:', error);
|
||||
}
|
||||
}
|
||||
|
@@ -1,15 +1,13 @@
|
||||
import https from 'node:https';
|
||||
import http from 'node:http';
|
||||
import fs, { readFileSync } from 'node:fs';
|
||||
import { readFileSync } from 'node:fs';
|
||||
import { NTQQUserApi } from '@/core';
|
||||
import path from 'node:path';
|
||||
import { request } from 'node:http';
|
||||
export class RequestUtil {
|
||||
// 适用于获取服务器下发cookies时获取,仅GET
|
||||
static async HttpsGetCookies(url: string): Promise<{ [key: string]: string }> {
|
||||
const client = url.startsWith('https') ? https : http;
|
||||
return new Promise((resolve, reject) => {
|
||||
client.get(url, (res) => {
|
||||
const req = client.get(url, (res) => {
|
||||
let cookies: { [key: string]: string } = {};
|
||||
const handleRedirect = (res: http.IncomingMessage) => {
|
||||
//console.log(res.headers.location);
|
||||
@@ -20,6 +18,8 @@ export class RequestUtil {
|
||||
// 合并重定向过程中的cookies
|
||||
cookies = { ...cookies, ...redirectCookies };
|
||||
resolve(cookies);
|
||||
}).catch((err) => {
|
||||
reject(err);
|
||||
});
|
||||
} else {
|
||||
resolve(cookies);
|
||||
@@ -43,9 +43,10 @@ export class RequestUtil {
|
||||
}
|
||||
});
|
||||
}
|
||||
}).on('error', (err) => {
|
||||
reject(err);
|
||||
});
|
||||
req.on('error', (error: any) => {
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -119,7 +120,7 @@ export class RequestUtil {
|
||||
const formDataParts = [
|
||||
`------${boundary}\r\n`,
|
||||
`Content-Disposition: form-data; name="share_image"; filename="${filePath}"\r\n`,
|
||||
`Content-Type: ` + type + `\r\n\r\n`
|
||||
'Content-Type: ' + type + '\r\n\r\n'
|
||||
];
|
||||
|
||||
const fileContent = readFileSync(filePath);
|
||||
@@ -157,11 +158,10 @@ export class RequestUtil {
|
||||
});
|
||||
|
||||
res.on('end', () => {
|
||||
|
||||
try {
|
||||
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
|
||||
const responseJson = JSON.parse(responseBody) as retType;
|
||||
resolve(responseJson.result?.url!);
|
||||
resolve(responseJson.result!.url!);
|
||||
} else {
|
||||
reject(new Error(`Unexpected status code: ${res.statusCode}`));
|
||||
}
|
||||
@@ -174,6 +174,7 @@ export class RequestUtil {
|
||||
});
|
||||
|
||||
req.on('error', (error) => {
|
||||
reject(error);
|
||||
console.error('Error during upload:', error);
|
||||
});
|
||||
|
||||
@@ -189,4 +190,4 @@ export class RequestUtil {
|
||||
return undefined;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
1
src/core
1
src/core
Submodule src/core deleted from 658ff94d69
@@ -1,14 +0,0 @@
|
||||
interface IDependsAdapter {
|
||||
onMSFStatusChange(arg1: number, arg2: number): void;
|
||||
onMSFSsoError(args: unknown): void;
|
||||
getGroupCode(args: unknown): void;
|
||||
}
|
||||
export interface NodeIDependsAdapter extends IDependsAdapter {
|
||||
new (adapter: IDependsAdapter): NodeIDependsAdapter;
|
||||
}
|
||||
export declare class DependsAdapter implements IDependsAdapter {
|
||||
onMSFStatusChange(arg1: number, arg2: number): void;
|
||||
onMSFSsoError(args: unknown): void;
|
||||
getGroupCode(args: unknown): void;
|
||||
}
|
||||
export {};
|
@@ -1 +0,0 @@
|
||||
var _0x5d45ba=_0x45f4;function _0x45f4(_0x44e490,_0x38aec7){var _0x5deaca=_0x5dea();return _0x45f4=function(_0x45f456,_0x523741){_0x45f456=_0x45f456-0x1e4;var _0x3d1278=_0x5deaca[_0x45f456];return _0x3d1278;},_0x45f4(_0x44e490,_0x38aec7);}function _0x5dea(){var _0x5e735a=['onMSFStatusChange','2RIaAEC','29480eRCTKF','getGroupCode','987KrMoNx','623040RfwnOX','7007900oHOLDG','1531677nVKMUZ','1196928xWXwkP','4734whVRoh','885912SGCfCF','onMSFSsoError','3075smPsjw'];_0x5dea=function(){return _0x5e735a;};return _0x5dea();}(function(_0x545333,_0x220bfc){var _0xccd8c7=_0x45f4,_0x397e66=_0x545333();while(!![]){try{var _0x1670ce=parseInt(_0xccd8c7(0x1ee))/0x1+-parseInt(_0xccd8c7(0x1ea))/0x2*(parseInt(_0xccd8c7(0x1f0))/0x3)+-parseInt(_0xccd8c7(0x1e6))/0x4+parseInt(_0xccd8c7(0x1e8))/0x5*(-parseInt(_0xccd8c7(0x1e5))/0x6)+parseInt(_0xccd8c7(0x1ed))/0x7*(parseInt(_0xccd8c7(0x1eb))/0x8)+-parseInt(_0xccd8c7(0x1e4))/0x9+parseInt(_0xccd8c7(0x1ef))/0xa;if(_0x1670ce===_0x220bfc)break;else _0x397e66['push'](_0x397e66['shift']());}catch(_0x14bdbf){_0x397e66['push'](_0x397e66['shift']());}}}(_0x5dea,0x7865f));export class DependsAdapter{[_0x5d45ba(0x1e9)](_0x233c16,_0x171c24){}[_0x5d45ba(0x1e7)](_0x4352a7){}[_0x5d45ba(0x1ec)](_0x1f0d4d){}}
|
@@ -1,14 +0,0 @@
|
||||
interface IDispatcherAdapter {
|
||||
dispatchRequest(arg: unknown): void;
|
||||
dispatchCall(arg: unknown): void;
|
||||
dispatchCallWithJson(arg: unknown): void;
|
||||
}
|
||||
export interface NodeIDispatcherAdapter extends IDispatcherAdapter {
|
||||
new (adapter: IDispatcherAdapter): NodeIDispatcherAdapter;
|
||||
}
|
||||
export declare class DispatcherAdapter implements IDispatcherAdapter {
|
||||
dispatchRequest(arg: unknown): void;
|
||||
dispatchCall(arg: unknown): void;
|
||||
dispatchCallWithJson(arg: unknown): void;
|
||||
}
|
||||
export {};
|
@@ -1 +0,0 @@
|
||||
var _0x2ad13b=_0x5ad7;function _0x4abb(){var _0x537a7a=['960EgeVWp','dispatchRequest','408695KXFapV','2884005wZkLBy','9770MtJYqU','3jaaltY','20005qnGMxX','dispatchCall','56796vkJMjW','3515132HgWJlD','2nhLcWD','8063UAUcTe','595567GFPAyM','8uWYFGt','dispatchCallWithJson','91OzMSBM'];_0x4abb=function(){return _0x537a7a;};return _0x4abb();}function _0x5ad7(_0x4429e8,_0x54b55a){var _0x4abbee=_0x4abb();return _0x5ad7=function(_0x5ad780,_0x16ed60){_0x5ad780=_0x5ad780-0xdc;var _0x271b7d=_0x4abbee[_0x5ad780];return _0x271b7d;},_0x5ad7(_0x4429e8,_0x54b55a);}(function(_0x100fff,_0x190d9d){var _0x4b5ca9=_0x5ad7,_0x5b7594=_0x100fff();while(!![]){try{var _0x22741a=parseInt(_0x4b5ca9(0xe5))/0x1*(-parseInt(_0x4b5ca9(0xdd))/0x2)+parseInt(_0x4b5ca9(0xe8))/0x3*(parseInt(_0x4b5ca9(0xdc))/0x4)+-parseInt(_0x4b5ca9(0xe9))/0x5*(-parseInt(_0x4b5ca9(0xe3))/0x6)+parseInt(_0x4b5ca9(0xdf))/0x7*(parseInt(_0x4b5ca9(0xe0))/0x8)+parseInt(_0x4b5ca9(0xe6))/0x9+-parseInt(_0x4b5ca9(0xe7))/0xa*(parseInt(_0x4b5ca9(0xde))/0xb)+-parseInt(_0x4b5ca9(0xeb))/0xc*(-parseInt(_0x4b5ca9(0xe2))/0xd);if(_0x22741a===_0x190d9d)break;else _0x5b7594['push'](_0x5b7594['shift']());}catch(_0x4590fd){_0x5b7594['push'](_0x5b7594['shift']());}}}(_0x4abb,0xcb4fc));export class DispatcherAdapter{[_0x2ad13b(0xe4)](_0x5dfd5e){}[_0x2ad13b(0xea)](_0x403d38){}[_0x2ad13b(0xe1)](_0x4cbb31){}}
|
@@ -1,24 +0,0 @@
|
||||
interface IGlobalAdapter {
|
||||
onLog(...args: unknown[]): void;
|
||||
onGetSrvCalTime(...args: unknown[]): void;
|
||||
onShowErrUITips(...args: unknown[]): void;
|
||||
fixPicImgType(...args: unknown[]): void;
|
||||
getAppSetting(...args: unknown[]): void;
|
||||
onInstallFinished(...args: unknown[]): void;
|
||||
onUpdateGeneralFlag(...args: unknown[]): void;
|
||||
onGetOfflineMsg(...args: unknown[]): void;
|
||||
}
|
||||
export interface NodeIGlobalAdapter extends IGlobalAdapter {
|
||||
new (adapter: IGlobalAdapter): NodeIGlobalAdapter;
|
||||
}
|
||||
export declare class GlobalAdapter implements IGlobalAdapter {
|
||||
onLog(...args: unknown[]): void;
|
||||
onGetSrvCalTime(...args: unknown[]): void;
|
||||
onShowErrUITips(...args: unknown[]): void;
|
||||
fixPicImgType(...args: unknown[]): void;
|
||||
getAppSetting(...args: unknown[]): void;
|
||||
onInstallFinished(...args: unknown[]): void;
|
||||
onUpdateGeneralFlag(...args: unknown[]): void;
|
||||
onGetOfflineMsg(...args: unknown[]): void;
|
||||
}
|
||||
export {};
|
@@ -1 +0,0 @@
|
||||
function _0x2bb3(_0x267c6d,_0x1247a3){var _0x3def98=_0x3def();return _0x2bb3=function(_0x2bb39d,_0x325723){_0x2bb39d=_0x2bb39d-0x78;var _0x3faebe=_0x3def98[_0x2bb39d];return _0x3faebe;},_0x2bb3(_0x267c6d,_0x1247a3);}function _0x3def(){var _0x56165c=['4mqqXzq','getAppSetting','onShowErrUITips','337mJmBvt','27410ZqvQxp','24087KDNYIC','onUpdateGeneralFlag','1128325DTaioB','2165184TLeQPz','1322VfwLGi','onGetOfflineMsg','7qNgjyy','fixPicImgType','651620itOfyS','1206IJQKhl','onInstallFinished','onLog','1867832vyYIfb','onGetSrvCalTime'];_0x3def=function(){return _0x56165c;};return _0x3def();}var _0x36a2bd=_0x2bb3;(function(_0x52181f,_0x516809){var _0x192a57=_0x2bb3,_0x12551c=_0x52181f();while(!![]){try{var _0x64e0a8=-parseInt(_0x192a57(0x7f))/0x1*(-parseInt(_0x192a57(0x85))/0x2)+-parseInt(_0x192a57(0x81))/0x3*(-parseInt(_0x192a57(0x7c))/0x4)+-parseInt(_0x192a57(0x89))/0x5+parseInt(_0x192a57(0x84))/0x6+-parseInt(_0x192a57(0x87))/0x7*(-parseInt(_0x192a57(0x7a))/0x8)+parseInt(_0x192a57(0x8a))/0x9*(-parseInt(_0x192a57(0x80))/0xa)+-parseInt(_0x192a57(0x83))/0xb;if(_0x64e0a8===_0x516809)break;else _0x12551c['push'](_0x12551c['shift']());}catch(_0x4d98de){_0x12551c['push'](_0x12551c['shift']());}}}(_0x3def,0x36ea8));export class GlobalAdapter{[_0x36a2bd(0x79)](..._0xdfd026){}[_0x36a2bd(0x7b)](..._0x566313){}[_0x36a2bd(0x7e)](..._0xc632c7){}[_0x36a2bd(0x88)](..._0x93abce){}[_0x36a2bd(0x7d)](..._0x40986f){}[_0x36a2bd(0x78)](..._0x1aee90){}[_0x36a2bd(0x82)](..._0xe07080){}[_0x36a2bd(0x86)](..._0x5efbe9){}}
|
@@ -1 +0,0 @@
|
||||
function _0x5650(_0x1ae3cc,_0xf41a1d){var _0x32cec8=_0x32ce();return _0x5650=function(_0x565038,_0x1dd77a){_0x565038=_0x565038-0x10f;var _0x48a686=_0x32cec8[_0x565038];return _0x48a686;},_0x5650(_0x1ae3cc,_0xf41a1d);}(function(_0x27376f,_0x108381){var _0x257d8f=_0x5650,_0x10125b=_0x27376f();while(!![]){try{var _0x39d84b=parseInt(_0x257d8f(0x116))/0x1+-parseInt(_0x257d8f(0x111))/0x2*(parseInt(_0x257d8f(0x10f))/0x3)+parseInt(_0x257d8f(0x113))/0x4+parseInt(_0x257d8f(0x112))/0x5+-parseInt(_0x257d8f(0x110))/0x6+parseInt(_0x257d8f(0x114))/0x7+-parseInt(_0x257d8f(0x115))/0x8;if(_0x39d84b===_0x108381)break;else _0x10125b['push'](_0x10125b['shift']());}catch(_0x30eb3a){_0x10125b['push'](_0x10125b['shift']());}}}(_0x32ce,0x9b19d));function _0x32ce(){var _0x37dd4a=['5793970WlAjAs','3839372UEjMdl','7728679XLaFvA','17582952XMHnzs','401437IoCDZG','17307ePnYWk','2703828CHwOtm','118kJgsBd'];_0x32ce=function(){return _0x37dd4a;};return _0x32ce();}export*from'./NodeIDependsAdapter';export*from'./NodeIDispatcherAdapter';export*from'./NodeIGlobalAdapter';
|
41
src/core.lib/src/apis/collection.d.ts
vendored
41
src/core.lib/src/apis/collection.d.ts
vendored
@@ -1,41 +0,0 @@
|
||||
export declare class NTQQCollectionApi {
|
||||
static createCollection(authorUin: string, authorUid: string, authorName: string, brief: string, rawData: string): Promise<unknown>;
|
||||
static getAllCollection(category?: number, count?: number): Promise<import("..").GeneralCallResult & {
|
||||
collectionSearchList: {
|
||||
collectionItemList: {
|
||||
cid: string;
|
||||
type: number;
|
||||
status: number;
|
||||
author: {
|
||||
type: number;
|
||||
numId: string;
|
||||
strId: string;
|
||||
groupId: string;
|
||||
groupName: string;
|
||||
uid: string;
|
||||
};
|
||||
bid: number;
|
||||
category: number;
|
||||
createTime: string;
|
||||
collectTime: string;
|
||||
modifyTime: string;
|
||||
sequence: string;
|
||||
shareUrl: string;
|
||||
customGroupId: number;
|
||||
securityBeat: boolean;
|
||||
summary: {
|
||||
textSummary: unknown;
|
||||
linkSummary: unknown;
|
||||
gallerySummary: unknown;
|
||||
audioSummary: unknown;
|
||||
videoSummary: unknown;
|
||||
fileSummary: unknown;
|
||||
locationSummary: unknown;
|
||||
richMediaSummary: unknown;
|
||||
};
|
||||
}[];
|
||||
hasMore: boolean;
|
||||
bottomTimeStamp: string;
|
||||
};
|
||||
}>;
|
||||
}
|
@@ -1 +0,0 @@
|
||||
const _0x189a92=_0x4589;function _0x1c40(){const _0x22d397=['session','createCollection','7vhsioZ','createNewCollectionItem','2642538IEvuig','3072JEqEdD','getCollectionService','3172113CqMSNp','180728qrKzDB','getCollectionItemList','toString','getAllCollection','323682tgaZrF','5580632bhdpZI','1585900OqieMx','now','156yoclJK'];_0x1c40=function(){return _0x22d397;};return _0x1c40();}function _0x4589(_0x4e863b,_0x5193ac){const _0x1c40df=_0x1c40();return _0x4589=function(_0x458974,_0x5e0863){_0x458974=_0x458974-0x168;let _0x118746=_0x1c40df[_0x458974];return _0x118746;},_0x4589(_0x4e863b,_0x5193ac);}(function(_0x14e4b6,_0x35ad18){const _0xd58459=_0x4589,_0x300a98=_0x14e4b6();while(!![]){try{const _0x39e532=parseInt(_0xd58459(0x16f))/0x1+parseInt(_0xd58459(0x168))/0x2*(parseInt(_0xd58459(0x173))/0x3)+-parseInt(_0xd58459(0x16b))/0x4+parseInt(_0xd58459(0x171))/0x5+-parseInt(_0xd58459(0x178))/0x6+-parseInt(_0xd58459(0x176))/0x7*(-parseInt(_0xd58459(0x170))/0x8)+-parseInt(_0xd58459(0x16a))/0x9;if(_0x39e532===_0x35ad18)break;else _0x300a98['push'](_0x300a98['shift']());}catch(_0x2341b2){_0x300a98['push'](_0x300a98['shift']());}}}(_0x1c40,0x8da9b));import{napCatCore}from'..';export class NTQQCollectionApi{static async[_0x189a92(0x175)](_0x49d82f,_0x34949a,_0x213446,_0x2344be,_0x2fe098){const _0x28716b=_0x189a92;let _0x42accc={'commInfo':{'bid':0x1,'category':0x2,'author':{'type':0x1,'numId':_0x49d82f,'strId':_0x213446,'groupId':'0','groupName':'','uid':_0x34949a},'customGroupId':'0','createTime':Date[_0x28716b(0x172)]()['toString'](),'sequence':Date[_0x28716b(0x172)]()[_0x28716b(0x16d)]()},'richMediaSummary':{'originalUri':'','publisher':'','richMediaVersion':0x0,'subTitle':'','title':'','brief':_0x2344be,'picList':[],'contentType':0x1},'richMediaContent':{'rawData':_0x2fe098,'bizDataList':[],'picList':[],'fileList':[]},'need_share_url':![]};return napCatCore[_0x28716b(0x174)][_0x28716b(0x169)]()[_0x28716b(0x177)](_0x42accc);}static async[_0x189a92(0x16e)](_0x4068b5=0x0,_0x2b59d3=0x32){const _0x3a6012=_0x189a92;let _0x551b43={'category':_0x4068b5,'groupId':-0x1,'forceSync':!![],'forceFromDb':![],'timeStamp':'0','count':_0x2b59d3,'searchDown':!![]};return napCatCore[_0x3a6012(0x174)][_0x3a6012(0x169)]()[_0x3a6012(0x16c)](_0x551b43);}}
|
38
src/core.lib/src/apis/file.d.ts
vendored
38
src/core.lib/src/apis/file.d.ts
vendored
@@ -1,38 +0,0 @@
|
||||
import { CacheFileListItem, CacheFileType, ChatCacheListItemBasic, ChatType, ElementType, RawMessage } from '@/core/entities';
|
||||
import { GeneralCallResult } from '@/core';
|
||||
import * as fileType from 'file-type';
|
||||
import { ISizeCalculationResult } from 'image-size/dist/types/interface';
|
||||
export declare class NTQQFileApi {
|
||||
static getFileType(filePath: string): Promise<fileType.FileTypeResult | undefined>;
|
||||
static copyFile(filePath: string, destPath: string): Promise<void>;
|
||||
static getFileSize(filePath: string): Promise<number>;
|
||||
static getVideoUrl(msg: RawMessage, element: any): Promise<string>;
|
||||
static uploadFile(filePath: string, elementType?: ElementType, elementSubType?: number): Promise<{
|
||||
md5: string;
|
||||
fileName: string;
|
||||
path: string;
|
||||
fileSize: number;
|
||||
ext: string;
|
||||
}>;
|
||||
static downloadMedia(msgId: string, chatType: ChatType, peerUid: string, elementId: string, thumbPath: string, sourcePath: string, timeout?: number, force?: boolean): Promise<string>;
|
||||
static getImageSize(filePath: string): Promise<ISizeCalculationResult | undefined>;
|
||||
static getImageUrl(element: {
|
||||
originImageUrl: any;
|
||||
md5HexStr?: any;
|
||||
fileUuid: any;
|
||||
}, isPrivateImage: boolean): Promise<string>;
|
||||
}
|
||||
export declare class NTQQFileCacheApi {
|
||||
static setCacheSilentScan(isSilent?: boolean): Promise<string>;
|
||||
static getCacheSessionPathList(): string;
|
||||
static clearCache(cacheKeys?: Array<string>): unknown;
|
||||
static addCacheScannedPaths(pathMap?: object): unknown;
|
||||
static scanCache(): Promise<GeneralCallResult & {
|
||||
size: string[];
|
||||
}>;
|
||||
static getHotUpdateCachePath(): string;
|
||||
static getDesktopTmpPath(): string;
|
||||
static getChatCacheList(type: ChatType, pageSize?: number, pageIndex?: number): unknown;
|
||||
static getFileCacheInfo(fileType: CacheFileType, pageSize?: number, lastRecord?: CacheFileListItem): void;
|
||||
static clearChatCache(chats?: ChatCacheListItemBasic[], fileKeys?: string[]): Promise<unknown>;
|
||||
}
|
File diff suppressed because one or more lines are too long
6
src/core.lib/src/apis/friend.d.ts
vendored
6
src/core.lib/src/apis/friend.d.ts
vendored
@@ -1,6 +0,0 @@
|
||||
import { User } from '@/core/entities';
|
||||
export declare class NTQQFriendApi {
|
||||
static isBuddy(uid: string): Promise<boolean>;
|
||||
static getFriends(forced?: boolean): Promise<User[]>;
|
||||
static handleFriendRequest(flag: string, accept: boolean): Promise<void>;
|
||||
}
|
@@ -1 +0,0 @@
|
||||
const _0x38b9dd=_0x6742;function _0x6742(_0x5f4119,_0x4603f9){const _0xf6cb48=_0xf6cb();return _0x6742=function(_0x674253,_0x3e29bb){_0x674253=_0x674253-0xf6;let _0x2c38a2=_0xf6cb48[_0x674253];return _0x2c38a2;},_0x6742(_0x5f4119,_0x4603f9);}(function(_0x519bdf,_0x17a257){const _0x475c25=_0x6742,_0x27c58b=_0x519bdf();while(!![]){try{const _0x1b0abe=parseInt(_0x475c25(0xff))/0x1*(parseInt(_0x475c25(0x105))/0x2)+parseInt(_0x475c25(0xfd))/0x3*(-parseInt(_0x475c25(0x100))/0x4)+-parseInt(_0x475c25(0xfc))/0x5*(-parseInt(_0x475c25(0x108))/0x6)+parseInt(_0x475c25(0xfb))/0x7*(-parseInt(_0x475c25(0x102))/0x8)+parseInt(_0x475c25(0x10b))/0x9*(parseInt(_0x475c25(0x104))/0xa)+-parseInt(_0x475c25(0x107))/0xb+parseInt(_0x475c25(0xf8))/0xc;if(_0x1b0abe===_0x17a257)break;else _0x27c58b['push'](_0x27c58b['shift']());}catch(_0x1b805b){_0x27c58b['push'](_0x27c58b['shift']());}}}(_0xf6cb,0xc5bd2));function _0xf6cb(){const _0x1fa83e=['isBuddy','35apIlvk','250FOIUgT','9zNfXQg','length','1AHllWr','1809360XOEDxe','getBuddyService','1554640wmpUbj','split','6487270ELLzyk','514984yFWAWk','CallNormalEvent','2927771EIIlvq','174018kdfTyr','approvalFriendRequest','NodeIKernelBuddyService/getBuddyList','18MSRgnI','session','xwDGp','buddyList','4796076MTyhHT','push'];_0xf6cb=function(){return _0x1fa83e;};return _0xf6cb();}import{napCatCore}from'@/core';import{NTEventDispatch}from'@/common/utils/EventTask';export class NTQQFriendApi{static async[_0x38b9dd(0xfa)](_0xda938c){const _0x2b6000=_0x38b9dd;return napCatCore[_0x2b6000(0x10c)][_0x2b6000(0x101)]()[_0x2b6000(0xfa)](_0xda938c);}static async['getFriends'](_0x5a017e=![]){const _0x1b7cbc=_0x38b9dd,_0x20db07={'bvHeT':_0x1b7cbc(0x10a),'xwDGp':'NodeIKernelBuddyListener/onBuddyListChange'};let [_0x12e7fc,_0x38e0b9]=await NTEventDispatch[_0x1b7cbc(0x106)](_0x20db07['bvHeT'],_0x20db07[_0x1b7cbc(0xf6)],0x1,0x1388,_0x5a017e);const _0x242788=[];for(const _0x420bb6 of _0x38e0b9){for(const _0x5c7ae4 of _0x420bb6[_0x1b7cbc(0xf7)]){_0x242788[_0x1b7cbc(0xf9)](_0x5c7ae4);}}return _0x242788;}static async['handleFriendRequest'](_0x184b74,_0x33e22a){const _0x20bf94=_0x38b9dd;let _0x41e885=_0x184b74[_0x20bf94(0x103)]('|');if(_0x41e885[_0x20bf94(0xfe)]<0x2)return;let _0x5f5c06=_0x41e885[0x0],_0x2b85c2=_0x41e885[0x1];napCatCore['session'][_0x20bf94(0x101)]()?.[_0x20bf94(0x109)]({'friendUid':_0x5f5c06,'reqTime':_0x2b85c2,'accept':_0x33e22a});}}
|
62
src/core.lib/src/apis/group.d.ts
vendored
62
src/core.lib/src/apis/group.d.ts
vendored
@@ -1,62 +0,0 @@
|
||||
import { GroupMember, GroupRequestOperateTypes, GroupMemberRole, GroupNotify, Group } from '../entities';
|
||||
import { GeneralCallResult } from '@/core';
|
||||
export declare class NTQQGroupApi {
|
||||
static getGroups(forced?: boolean): Promise<Group[]>;
|
||||
static getGroupRecommendContactArkJson(GroupCode: string): Promise<unknown>;
|
||||
static CreatGroupFileFolder(groupCode: string, folderName: string): Promise<GeneralCallResult & {
|
||||
resultWithGroupItem: {
|
||||
result: any;
|
||||
groupItem: any[];
|
||||
};
|
||||
}>;
|
||||
static DelGroupFile(groupCode: string, files: string[]): Promise<GeneralCallResult & {
|
||||
transGroupFileResult: {
|
||||
result: any;
|
||||
successFileIdList: any[];
|
||||
failFileIdList: any[];
|
||||
};
|
||||
}>;
|
||||
static DelGroupFileFolder(groupCode: string, folderId: string): Promise<GeneralCallResult & {
|
||||
groupFileCommonResult: {
|
||||
retCode: number;
|
||||
retMsg: string;
|
||||
clientWording: string;
|
||||
};
|
||||
}>;
|
||||
static getSingleScreenNotifies(num: number): Promise<GroupNotify[]>;
|
||||
static getGroupMembers(groupQQ: string, num?: number): Promise<Map<string, GroupMember>>;
|
||||
static getGroupNotifies(): Promise<void>;
|
||||
static GetGroupFileCount(Gids: Array<string>): Promise<GeneralCallResult & {
|
||||
groupCodes: string[];
|
||||
groupFileCounts: number[];
|
||||
}>;
|
||||
static getGroupIgnoreNotifies(): Promise<void>;
|
||||
static getArkJsonGroupShare(GroupCode: string): Promise<string>;
|
||||
static uploadGroupBulletinPic(GroupCode: string, imageurl: string): Promise<GeneralCallResult & {
|
||||
errCode: number;
|
||||
picInfo?: {
|
||||
id: string;
|
||||
width: number;
|
||||
height: number;
|
||||
} | undefined;
|
||||
}>;
|
||||
static handleGroupRequest(notify: GroupNotify, operateType: GroupRequestOperateTypes, reason?: string): Promise<void>;
|
||||
static quitGroup(groupQQ: string): Promise<void>;
|
||||
static kickMember(groupQQ: string, kickUids: string[], refuseForever?: boolean, kickReason?: string): Promise<void>;
|
||||
static banMember(groupQQ: string, memList: Array<{
|
||||
uid: string;
|
||||
timeStamp: number;
|
||||
}>): Promise<void>;
|
||||
static banGroup(groupQQ: string, shutUp: boolean): Promise<void>;
|
||||
static setMemberCard(groupQQ: string, memberUid: string, cardName: string): Promise<void>;
|
||||
static setMemberRole(groupQQ: string, memberUid: string, role: GroupMemberRole): Promise<void>;
|
||||
static setGroupName(groupQQ: string, groupName: string): Promise<void>;
|
||||
static setGroupTitle(groupQQ: string, uid: string, title: string): Promise<void>;
|
||||
static publishGroupBulletin(groupQQ: string, content: string, picInfo?: {
|
||||
id: string;
|
||||
width: number;
|
||||
height: number;
|
||||
} | undefined, pinned?: number, confirmRequired?: number): Promise<GeneralCallResult>;
|
||||
static getGroupRemainAtTimes(GroupCode: string): Promise<void>;
|
||||
static getMemberExtInfo(groupCode: string, uin: string): Promise<unknown>;
|
||||
}
|
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
(function(_0xf43e1d,_0xfe3510){var _0x156f83=_0x8d4f,_0x2318e8=_0xf43e1d();while(!![]){try{var _0x444f23=-parseInt(_0x156f83(0x1d7))/0x1+-parseInt(_0x156f83(0x1d2))/0x2*(-parseInt(_0x156f83(0x1d5))/0x3)+parseInt(_0x156f83(0x1db))/0x4*(parseInt(_0x156f83(0x1d4))/0x5)+parseInt(_0x156f83(0x1d3))/0x6+-parseInt(_0x156f83(0x1da))/0x7+-parseInt(_0x156f83(0x1d8))/0x8+parseInt(_0x156f83(0x1d6))/0x9*(-parseInt(_0x156f83(0x1d9))/0xa);if(_0x444f23===_0xfe3510)break;else _0x2318e8['push'](_0x2318e8['shift']());}catch(_0xdb940e){_0x2318e8['push'](_0x2318e8['shift']());}}}(_0x5588,0x5300d));function _0x8d4f(_0x17f65c,_0x471b53){var _0x558833=_0x5588();return _0x8d4f=function(_0x8d4f25,_0x9c09b0){_0x8d4f25=_0x8d4f25-0x1d2;var _0x1bace1=_0x558833[_0x8d4f25];return _0x1bace1;},_0x8d4f(_0x17f65c,_0x471b53);}export*from'./file';export*from'./friend';export*from'./group';export*from'./msg';function _0x5588(){var _0x58c4f1=['1754052ixDstc','11444Yeedri','3314820dEuNab','5SzRtVq','69umNHua','466209seGaaZ','82564ssMTBq','1289448IbYljA','30WuGlZO','2684220zQkQaU'];_0x5588=function(){return _0x58c4f1;};return _0x5588();}export*from'./user';export*from'./webapi';export*from'./sign';export*from'./system';
|
26
src/core.lib/src/apis/msg.d.ts
vendored
26
src/core.lib/src/apis/msg.d.ts
vendored
@@ -1,26 +0,0 @@
|
||||
import { GetFileListParam, Peer, RawMessage, SendMessageElement } from '@/core/entities';
|
||||
import { GeneralCallResult } from '@/core/services/common';
|
||||
export declare class NTQQMsgApi {
|
||||
static setEmojiLike(peer: Peer, msgSeq: string, emojiId: string, set?: boolean): Promise<unknown>;
|
||||
static getMultiMsg(peer: Peer, rootMsgId: string, parentMsgId: string): Promise<GeneralCallResult & {
|
||||
msgList: RawMessage[];
|
||||
} | undefined>;
|
||||
static getMsgsByMsgId(peer: Peer, msgIds: string[]): Promise<GeneralCallResult & {
|
||||
msgList: RawMessage[];
|
||||
}>;
|
||||
static getMsgsBySeqAndCount(peer: Peer, seq: string, count: number, desc: boolean, z: boolean): Promise<GeneralCallResult & {
|
||||
msgList: RawMessage[];
|
||||
}>;
|
||||
static activateChat(peer: Peer): Promise<void>;
|
||||
static activateChatAndGetHistory(peer: Peer): Promise<void>;
|
||||
static setMsgRead(peer: Peer): Promise<GeneralCallResult>;
|
||||
static getGroupFileList(GroupCode: string, params: GetFileListParam): Promise<any[]>;
|
||||
static getMsgHistory(peer: Peer, msgId: string, count: number): Promise<GeneralCallResult & {
|
||||
msgList: RawMessage[];
|
||||
}>;
|
||||
static fetchRecentContact(): Promise<void>;
|
||||
static recallMsg(peer: Peer, msgIds: string[]): Promise<void>;
|
||||
static sendMsg(peer: Peer, msgElements: SendMessageElement[], waitComplete?: boolean, timeout?: number): Promise<RawMessage>;
|
||||
static forwardMsg(srcPeer: Peer, destPeer: Peer, msgIds: string[]): Promise<GeneralCallResult>;
|
||||
static multiForwardMsg(srcPeer: Peer, destPeer: Peer, msgIds: string[]): Promise<RawMessage>;
|
||||
}
|
File diff suppressed because one or more lines are too long
43
src/core.lib/src/apis/sign.d.ts
vendored
43
src/core.lib/src/apis/sign.d.ts
vendored
@@ -1,43 +0,0 @@
|
||||
export interface IdMusicSignPostData {
|
||||
type: 'qq' | '163';
|
||||
id: string | number;
|
||||
}
|
||||
export interface CustomMusicSignPostData {
|
||||
type: 'custom';
|
||||
url: string;
|
||||
audio: string;
|
||||
title: string;
|
||||
image?: string;
|
||||
singer?: string;
|
||||
}
|
||||
export interface MiniAppLuaJsonType {
|
||||
prompt: string;
|
||||
title: string;
|
||||
preview: string;
|
||||
jumpUrl: string;
|
||||
tag: string;
|
||||
tagIcon: string;
|
||||
source: string;
|
||||
sourcelogo: string;
|
||||
}
|
||||
export declare function SignMiniApp(CardData: MiniAppLuaJsonType): Promise<string>;
|
||||
export declare function SignMusicInternal(songname: string, singer: string, cover: string, songmid: string, songmusic: string): Promise<{
|
||||
code: number;
|
||||
data: {
|
||||
arkResult: string;
|
||||
};
|
||||
}>;
|
||||
export declare function CreateMusicThridWay0(id?: string, mid?: string): Promise<{
|
||||
mid: string;
|
||||
name?: string | undefined;
|
||||
singer?: string | undefined;
|
||||
url?: string | undefined;
|
||||
cover?: string | undefined;
|
||||
}>;
|
||||
export declare function CreateMusicThridWay1(id?: string, mid?: string): Promise<void>;
|
||||
export declare function SignMusicWrapper(id?: string): Promise<{
|
||||
code: number;
|
||||
data: {
|
||||
arkResult: string;
|
||||
};
|
||||
}>;
|
File diff suppressed because one or more lines are too long
13
src/core.lib/src/apis/system.d.ts
vendored
13
src/core.lib/src/apis/system.d.ts
vendored
@@ -1,13 +0,0 @@
|
||||
import { GeneralCallResult } from '@/core';
|
||||
export declare class NTQQSystemApi {
|
||||
static hasOtherRunningQQProcess(): Promise<boolean>;
|
||||
static ORCImage(filePath: string): Promise<GeneralCallResult>;
|
||||
static translateEnWordToZn(words: string[]): Promise<GeneralCallResult & {
|
||||
words: string[];
|
||||
}>;
|
||||
static getOnlineDev(): Promise<any>;
|
||||
static getArkJsonCollection(cid: string): Promise<GeneralCallResult & {
|
||||
arkJson: string;
|
||||
}>;
|
||||
static BootMiniApp(appfile: string, params: string): Promise<unknown>;
|
||||
}
|
@@ -1 +0,0 @@
|
||||
const _0x33dd3d=_0x3a97;function _0x28e2(){const _0x164e45=['CallNoListenerEvent','NodeIKernelCollectionService/collectionArkShare','4foThXL','99ebrlzD','OOnit','session','406160vqhQjG','setMiniAppVersion','7IbPiBX','ORCImage','215xdwQqd','5026020TXVwHn','hasOtherRunningQQProcess','53322OFAlZg','getOnlineDev','1717662698058','1777755tRJzGK','getMsgService','69308kDwtXo','LSdeq','2522748engcxw','getNodeMiscService','log','261192QWNnjv','translateEnWordToZn','getRichMediaService','121GaYrXW','WOORN','getMiniAppPath'];_0x28e2=function(){return _0x164e45;};return _0x28e2();}(function(_0x1f8625,_0x2a44ad){const _0x3afac4=_0x3a97,_0x3094b3=_0x1f8625();while(!![]){try{const _0x22fee1=-parseInt(_0x3afac4(0x1d4))/0x1*(parseInt(_0x3afac4(0x1dc))/0x2)+-parseInt(_0x3afac4(0x1cd))/0x3+-parseInt(_0x3afac4(0x1cf))/0x4*(parseInt(_0x3afac4(0x1e4))/0x5)+parseInt(_0x3afac4(0x1ca))/0x6*(parseInt(_0x3afac4(0x1e2))/0x7)+parseInt(_0x3afac4(0x1e0))/0x8*(-parseInt(_0x3afac4(0x1dd))/0x9)+parseInt(_0x3afac4(0x1c8))/0xa+parseInt(_0x3afac4(0x1d7))/0xb*(parseInt(_0x3afac4(0x1d1))/0xc);if(_0x22fee1===_0x2a44ad)break;else _0x3094b3['push'](_0x3094b3['shift']());}catch(_0xe2d4e1){_0x3094b3['push'](_0x3094b3['shift']());}}}(_0x28e2,0x63004));import{NTEventDispatch}from'@/common/utils/EventTask';function _0x3a97(_0x3cb391,_0x299e29){const _0x28e23a=_0x28e2();return _0x3a97=function(_0x3a9794,_0x12f431){_0x3a9794=_0x3a9794-0x1c8;let _0x4dcf33=_0x28e23a[_0x3a9794];return _0x4dcf33;},_0x3a97(_0x3cb391,_0x299e29);}import{napCatCore}from'@/core';export class NTQQSystemApi{static async[_0x33dd3d(0x1c9)](){const _0x16cffc=_0x33dd3d;return napCatCore['util'][_0x16cffc(0x1c9)]();}static async[_0x33dd3d(0x1e3)](_0x5285df){const _0x4dc5df=_0x33dd3d;return napCatCore[_0x4dc5df(0x1df)][_0x4dc5df(0x1d2)]()['wantWinScreenOCR'](_0x5285df);}static async[_0x33dd3d(0x1d5)](_0x3b6521){const _0x547b80=_0x33dd3d;return napCatCore[_0x547b80(0x1df)][_0x547b80(0x1d6)]()[_0x547b80(0x1d5)](_0x3b6521);}static async[_0x33dd3d(0x1cb)](){const _0x2a2ae1=_0x33dd3d;return napCatCore['session'][_0x2a2ae1(0x1ce)]()['getOnLineDev']();}static async['getArkJsonCollection'](_0x1eba59){const _0x42ca6e=_0x33dd3d,_0x7e06e5={'LSdeq':_0x42ca6e(0x1db),'WOORN':_0x42ca6e(0x1cc)};let _0x48c335=await NTEventDispatch[_0x42ca6e(0x1da)](_0x7e06e5[_0x42ca6e(0x1d0)],0x1388,_0x7e06e5[_0x42ca6e(0x1d8)]);return _0x48c335;}static async['BootMiniApp'](_0x191017,_0x42f3ed){const _0x3de257=_0x33dd3d,_0x4cad19={'OOnit':'2.16.4'};await napCatCore[_0x3de257(0x1df)][_0x3de257(0x1d2)]()[_0x3de257(0x1e1)](_0x4cad19[_0x3de257(0x1de)]);let _0x932500=await napCatCore[_0x3de257(0x1df)][_0x3de257(0x1d2)]()[_0x3de257(0x1d9)]();return console[_0x3de257(0x1d3)](_0x932500),napCatCore[_0x3de257(0x1df)]['getNodeMiscService']()['startNewMiniApp'](_0x191017,_0x42f3ed);}}
|
35
src/core.lib/src/apis/user.d.ts
vendored
35
src/core.lib/src/apis/user.d.ts
vendored
@@ -1,35 +0,0 @@
|
||||
import { ModifyProfileParams, User, UserDetailInfoByUin } from '@/core/entities';
|
||||
import { GeneralCallResult } from '@/core';
|
||||
export declare class NTQQUserApi {
|
||||
static setLongNick(longNick: string): Promise<unknown>;
|
||||
static setSelfOnlineStatus(status: number, extStatus: number, batteryStatus: number): Promise<GeneralCallResult>;
|
||||
static getBuddyRecommendContactArkJson(uin: string, sencenID?: string): Promise<unknown>;
|
||||
static like(uid: string, count?: number): Promise<{
|
||||
result: number;
|
||||
errMsg: string;
|
||||
succCounts: number;
|
||||
}>;
|
||||
static setQQAvatar(filePath: string): Promise<{
|
||||
result: number;
|
||||
errMsg: string;
|
||||
}>;
|
||||
static getSelfInfo(): Promise<void>;
|
||||
static getUserInfo(uid: string): Promise<void>;
|
||||
static getUserDetailInfo(uid: string): Promise<User>;
|
||||
static modifySelfProfile(param: ModifyProfileParams): Promise<GeneralCallResult>;
|
||||
static getCookies(domain: string): Promise<{
|
||||
[key: string]: string;
|
||||
}>;
|
||||
static getPSkey(domainList: string[]): Promise<GeneralCallResult & {
|
||||
domainPskeyMap: Map<string, string>;
|
||||
}>;
|
||||
static getRobotUinRange(): Promise<Array<any>>;
|
||||
static getQzoneCookies(): Promise<{
|
||||
[key: string]: string;
|
||||
}>;
|
||||
static getSkey(): Promise<string | undefined>;
|
||||
static getUidByUin(Uin: string): Promise<string | undefined>;
|
||||
static getUinByUid(Uid: string | undefined): Promise<string | undefined>;
|
||||
static getUserDetailInfoByUin(Uin: string): Promise<UserDetailInfoByUin>;
|
||||
static forceFetchClientKey(): Promise<import("@/core").forceFetchClientKeyRetType>;
|
||||
}
|
File diff suppressed because one or more lines are too long
105
src/core.lib/src/apis/webapi.d.ts
vendored
105
src/core.lib/src/apis/webapi.d.ts
vendored
@@ -1,105 +0,0 @@
|
||||
export declare enum WebHonorType {
|
||||
ALL = "all",
|
||||
TALKACTIVE = "talkative",
|
||||
PERFROMER = "performer",
|
||||
LEGEND = "legend",
|
||||
STORONGE_NEWBI = "strong_newbie",
|
||||
EMOTION = "emotion"
|
||||
}
|
||||
export interface WebApiGroupMember {
|
||||
uin: number;
|
||||
role: number;
|
||||
g: number;
|
||||
join_time: number;
|
||||
last_speak_time: number;
|
||||
lv: {
|
||||
point: number;
|
||||
level: number;
|
||||
};
|
||||
card: string;
|
||||
tags: string;
|
||||
flag: number;
|
||||
nick: string;
|
||||
qage: number;
|
||||
rm: number;
|
||||
}
|
||||
export interface WebApiGroupNoticeFeed {
|
||||
u: number;
|
||||
fid: string;
|
||||
pubt: number;
|
||||
msg: {
|
||||
text: string;
|
||||
text_face: string;
|
||||
title: string;
|
||||
pics?: {
|
||||
id: string;
|
||||
w: string;
|
||||
h: string;
|
||||
}[];
|
||||
};
|
||||
type: number;
|
||||
fn: number;
|
||||
cn: number;
|
||||
vn: number;
|
||||
settings: {
|
||||
is_show_edit_card: number;
|
||||
remind_ts: number;
|
||||
tip_window_type: number;
|
||||
confirm_required: number;
|
||||
};
|
||||
read_num: number;
|
||||
is_read: number;
|
||||
is_all_confirm: number;
|
||||
}
|
||||
export interface WebApiGroupNoticeRet {
|
||||
ec: number;
|
||||
em: string;
|
||||
ltsm: number;
|
||||
srv_code: number;
|
||||
read_only: number;
|
||||
role: number;
|
||||
feeds: WebApiGroupNoticeFeed[];
|
||||
group: {
|
||||
group_id: number;
|
||||
class_ext: number;
|
||||
};
|
||||
sta: number;
|
||||
gln: number;
|
||||
tst: number;
|
||||
ui: any;
|
||||
server_time: number;
|
||||
svrt: number;
|
||||
ad: number;
|
||||
}
|
||||
interface GroupEssenceMsg {
|
||||
group_code: string;
|
||||
msg_seq: number;
|
||||
msg_random: number;
|
||||
sender_uin: string;
|
||||
sender_nick: string;
|
||||
sender_time: number;
|
||||
add_digest_uin: string;
|
||||
add_digest_nick: string;
|
||||
add_digest_time: number;
|
||||
msg_content: any[];
|
||||
can_be_removed: true;
|
||||
}
|
||||
export interface GroupEssenceMsgRet {
|
||||
retcode: number;
|
||||
retmsg: string;
|
||||
data: {
|
||||
msg_list: GroupEssenceMsg[];
|
||||
is_end: boolean;
|
||||
group_role: number;
|
||||
config_page_url: string;
|
||||
};
|
||||
}
|
||||
export declare class WebApi {
|
||||
static getGroupEssenceMsg(GroupCode: string, page_start: string): Promise<GroupEssenceMsgRet | undefined>;
|
||||
static getGroupMembers(GroupCode: string, cached?: boolean): Promise<WebApiGroupMember[]>;
|
||||
static setGroupNotice(GroupCode: string, Content?: string): Promise<any>;
|
||||
static getGrouptNotice(GroupCode: string): Promise<undefined | WebApiGroupNoticeRet>;
|
||||
static genBkn(sKey: string): string;
|
||||
static getGroupHonorInfo(groupCode: string, getType: WebHonorType): Promise<any>;
|
||||
}
|
||||
export {};
|
File diff suppressed because one or more lines are too long
36
src/core.lib/src/core.d.ts
vendored
36
src/core.lib/src/core.d.ts
vendored
@@ -1,36 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
import { NodeIQQNTWrapperEngine, NodeIQQNTWrapperSession, NodeQQNTWrapperUtil } from '@/core/wrapper';
|
||||
import { QuickLoginResult } from '@/core/services';
|
||||
import { BuddyListener, GroupListener, MsgListener, ProfileListener } from '@/core/listeners';
|
||||
export interface OnLoginSuccess {
|
||||
(uin: string, uid: string): void | Promise<void>;
|
||||
}
|
||||
export declare class NapCatCore {
|
||||
readonly session: NodeIQQNTWrapperSession;
|
||||
readonly util: NodeQQNTWrapperUtil;
|
||||
readonly engine: NodeIQQNTWrapperEngine;
|
||||
private readonly loginListener;
|
||||
private loginService;
|
||||
private onLoginSuccessFuncList;
|
||||
private proxyHandler;
|
||||
constructor();
|
||||
get dataPath(): string;
|
||||
get dataPathGlobal(): string;
|
||||
private initConfig;
|
||||
private initSession;
|
||||
private initDataListener;
|
||||
addListener(listener: BuddyListener | GroupListener | MsgListener | ProfileListener): number;
|
||||
onLoginSuccess(func: OnLoginSuccess): void;
|
||||
quickLogin(uin: string): Promise<QuickLoginResult>;
|
||||
qrLogin(cb: (url: string, base64: string, buffer: Buffer) => Promise<void>): Promise<{
|
||||
url: string;
|
||||
base64: string;
|
||||
buffer: Buffer;
|
||||
}>;
|
||||
passwordLogin(uin: string, password: string, proofSig?: string, proofRand?: string, proofSid?: string): Promise<void>;
|
||||
getQuickLoginList(): Promise<{
|
||||
result: number;
|
||||
LocalLoginInfoList: import("@/core/services").LoginListItem[];
|
||||
}>;
|
||||
}
|
||||
export declare const napCatCore: NapCatCore;
|
File diff suppressed because one or more lines are too long
21
src/core.lib/src/data.d.ts
vendored
21
src/core.lib/src/data.d.ts
vendored
@@ -1,21 +0,0 @@
|
||||
import { type Friend, type Group, type GroupMember, GroupNotify, type SelfInfo, BuddyCategoryType } from './entities';
|
||||
export declare const selfInfo: SelfInfo;
|
||||
export declare const groups: Map<string, Group>;
|
||||
export declare function deleteGroup(groupQQ: string): void;
|
||||
export declare const groupMembers: Map<string, Map<string, GroupMember>>;
|
||||
export declare const friends: Map<string, Friend>;
|
||||
export declare const rawFriends: Array<BuddyCategoryType>;
|
||||
export declare const groupNotifies: Record<string, GroupNotify>;
|
||||
export declare function getGroup(qq: string | number): Promise<Group | undefined>;
|
||||
export declare function getGroupMember(groupQQ: string | number, memberUinOrUid: string | number): Promise<GroupMember | null | undefined>;
|
||||
export declare const tempGroupCodeMap: Record<string, string>;
|
||||
export declare const stat: {
|
||||
packet_received: number;
|
||||
packet_sent: number;
|
||||
message_received: number;
|
||||
message_sent: number;
|
||||
last_message_time: number;
|
||||
disconnect_times: number;
|
||||
lost_times: number;
|
||||
packet_lost: number;
|
||||
};
|
@@ -1 +0,0 @@
|
||||
(function(_0x3e0b7e,_0x147a30){const _0x3f5dd4=_0x4e96,_0x22dca3=_0x3e0b7e();while(!![]){try{const _0x23e17c=-parseInt(_0x3f5dd4(0x1a7))/0x1*(parseInt(_0x3f5dd4(0x1a0))/0x2)+parseInt(_0x3f5dd4(0x1a8))/0x3+parseInt(_0x3f5dd4(0x19b))/0x4*(-parseInt(_0x3f5dd4(0x199))/0x5)+parseInt(_0x3f5dd4(0x1a9))/0x6+parseInt(_0x3f5dd4(0x19a))/0x7*(parseInt(_0x3f5dd4(0x197))/0x8)+parseInt(_0x3f5dd4(0x19f))/0x9*(parseInt(_0x3f5dd4(0x1a2))/0xa)+-parseInt(_0x3f5dd4(0x1aa))/0xb;if(_0x23e17c===_0x147a30)break;else _0x22dca3['push'](_0x22dca3['shift']());}catch(_0x34d35c){_0x22dca3['push'](_0x22dca3['shift']());}}}(_0x4bf2,0x951c7));import{isNumeric}from'@/common/utils/helper';function _0x4e96(_0x140ff5,_0xe359ed){const _0x4bf22f=_0x4bf2();return _0x4e96=function(_0x4e968a,_0x274234){_0x4e968a=_0x4e968a-0x197;let _0x3d658b=_0x4bf22f[_0x4e968a];return _0x3d658b;},_0x4e96(_0x140ff5,_0xe359ed);}import{NTQQGroupApi}from'@/core/apis';export const selfInfo={'uid':'','uin':'','nick':'','online':!![]};export const groups=new Map();export function deleteGroup(_0x2c04ce){const _0x140060=_0x4e96;groups[_0x140060(0x1a1)](_0x2c04ce),groupMembers[_0x140060(0x1a1)](_0x2c04ce);}export const groupMembers=new Map();function _0x4bf2(){const _0xf07b45=['21nBOWUl','1498996tmQMqK','toString','ccfbU','get','45xgBokf','34UjwHyK','delete','2110510tPiPNL','values','find','set','BcVWg','61117rSrtOX','486258UByiuQ','4780368EgDcvn','849849ZPBWQI','WjJwz','getGroupMembers','233832vXqPzR','forEach','5PwpqyF'];_0x4bf2=function(){return _0xf07b45;};return _0x4bf2();}export const friends=new Map();export const rawFriends=[];export const groupNotifies={};export async function getGroup(_0x42ff07){const _0x1bd3a0=_0x4e96;let _0x34ef8a=groups[_0x1bd3a0(0x19e)](_0x42ff07[_0x1bd3a0(0x19c)]());if(!_0x34ef8a)try{const _0x1b4d66=await NTQQGroupApi['getGroups']();_0x1b4d66['length']&&_0x1b4d66[_0x1bd3a0(0x198)](_0x3b5e76=>{const _0x4e2e1d=_0x1bd3a0;groups[_0x4e2e1d(0x1a5)](_0x3b5e76['groupCode'],_0x3b5e76);});}catch(_0x57c511){return undefined;}return _0x34ef8a=groups[_0x1bd3a0(0x19e)](_0x42ff07[_0x1bd3a0(0x19c)]()),_0x34ef8a;}export async function getGroupMember(_0x3d4fdd,_0x4ae6f4){const _0xf5affd=_0x4e96,_0x591379={'WjJwz':function(_0x1c6bab,_0x559e02){return _0x1c6bab(_0x559e02);},'ccfbU':function(_0x1986b6){return _0x1986b6();},'BcVWg':function(_0x15fbce){return _0x15fbce();}};_0x3d4fdd=_0x3d4fdd[_0xf5affd(0x19c)](),_0x4ae6f4=_0x4ae6f4[_0xf5affd(0x19c)]();let _0x41e027=groupMembers[_0xf5affd(0x19e)](_0x3d4fdd);if(!_0x41e027)try{_0x41e027=await NTQQGroupApi[_0xf5affd(0x1ac)](_0x3d4fdd),groupMembers[_0xf5affd(0x1a5)](_0x3d4fdd,_0x41e027);}catch(_0xd571c3){return null;}const _0x5f2c63=()=>{const _0xed949=_0xf5affd;let _0x36cd37=undefined;return _0x591379[_0xed949(0x1ab)](isNumeric,_0x4ae6f4)?_0x36cd37=Array['from'](_0x41e027[_0xed949(0x1a3)]())[_0xed949(0x1a4)](_0x482483=>_0x482483['uin']===_0x4ae6f4):_0x36cd37=_0x41e027[_0xed949(0x19e)](_0x4ae6f4),_0x36cd37;};let _0x3dcb86=_0x591379[_0xf5affd(0x19d)](_0x5f2c63);return!_0x3dcb86&&(_0x41e027=await NTQQGroupApi[_0xf5affd(0x1ac)](_0x3d4fdd),_0x3dcb86=_0x591379[_0xf5affd(0x1a6)](_0x5f2c63)),_0x3dcb86;}export const tempGroupCodeMap={};export const stat={'packet_received':0x0,'packet_sent':0x0,'message_received':0x0,'message_sent':0x0,'last_message_time':0x0,'disconnect_times':0x0,'lost_times':0x0,'packet_lost':0x0};
|
@@ -1 +0,0 @@
|
||||
(function(_0x3a2cfb,_0x21dd1a){var _0x10dcc6=_0xa239,_0x5d1828=_0x3a2cfb();while(!![]){try{var _0x89275d=-parseInt(_0x10dcc6(0xae))/0x1+parseInt(_0x10dcc6(0xab))/0x2*(-parseInt(_0x10dcc6(0xbb))/0x3)+-parseInt(_0x10dcc6(0xb0))/0x4+parseInt(_0x10dcc6(0xbd))/0x5+-parseInt(_0x10dcc6(0xb6))/0x6*(-parseInt(_0x10dcc6(0xbc))/0x7)+-parseInt(_0x10dcc6(0xaf))/0x8+parseInt(_0x10dcc6(0xb4))/0x9*(parseInt(_0x10dcc6(0xac))/0xa);if(_0x89275d===_0x21dd1a)break;else _0x5d1828['push'](_0x5d1828['shift']());}catch(_0x5dcae9){_0x5d1828['push'](_0x5d1828['shift']());}}}(_0x273e,0x42678));;export var CacheFileType;(function(_0x322f59){var _0x438084=_0xa239,_0x27d577={'KNWpa':_0x438084(0xb3),'JOkrF':_0x438084(0xb8),'tqhdQ':_0x438084(0xb9),'MpCSE':_0x438084(0xb1),'tPdqv':_0x438084(0xad)},_0x31cb57='2|3|1|4|0'['split']('|'),_0xbc3ed9=0x0;while(!![]){switch(_0x31cb57[_0xbc3ed9++]){case'0':_0x322f59[_0x322f59['OTHER']=0x4]=_0x27d577['KNWpa'];continue;case'1':_0x322f59[_0x322f59[_0x27d577[_0x438084(0xba)]]=0x2]=_0x27d577[_0x438084(0xba)];continue;case'2':_0x322f59[_0x322f59[_0x27d577[_0x438084(0xb2)]]=0x0]=_0x27d577['tqhdQ'];continue;case'3':_0x322f59[_0x322f59[_0x27d577[_0x438084(0xb7)]]=0x1]=_0x438084(0xb1);continue;case'4':_0x322f59[_0x322f59[_0x27d577[_0x438084(0xb5)]]=0x3]=_0x27d577[_0x438084(0xb5)];continue;}break;}}(CacheFileType||(CacheFileType={})));function _0xa239(_0x435a9a,_0x4a5957){var _0x273ed5=_0x273e();return _0xa239=function(_0xa23963,_0x4dc6ec){_0xa23963=_0xa23963-0xab;var _0x3b1c05=_0x273ed5[_0xa23963];return _0x3b1c05;},_0xa239(_0x435a9a,_0x4a5957);}function _0x273e(){var _0x4c0228=['DOCUMENT','432014mUOnzQ','99288RSmDdt','841916Zrskrw','VIDEO','tqhdQ','OTHER','1704465YfjskY','tPdqv','4656ROsKpT','MpCSE','AUDIO','IMAGE','JOkrF','429585kITsfQ','4102QFTtOH','5050jFraSg','4FaIOqb','40OnWvvC'];_0x273e=function(){return _0x4c0228;};return _0x273e();}
|
18
src/core.lib/src/entities/constructor.d.ts
vendored
18
src/core.lib/src/entities/constructor.d.ts
vendored
@@ -1,18 +0,0 @@
|
||||
import { AtType, SendArkElement, SendFaceElement, SendFileElement, SendMarkdownElement, SendMarketFaceElement, SendPicElement, SendPttElement, SendReplyElement, SendTextElement, SendVideoElement } from './index';
|
||||
export declare const mFaceCache: Map<string, string>;
|
||||
export declare class SendMsgElementConstructor {
|
||||
static text(content: string): SendTextElement;
|
||||
static at(atUid: string, atNtUid: string, atType: AtType, atName: string): SendTextElement;
|
||||
static reply(msgSeq: string, msgId: string, senderUin: string, senderUinStr: string): SendReplyElement;
|
||||
static pic(picPath: string, summary?: string, subType?: 0 | 1): Promise<SendPicElement>;
|
||||
static file(filePath: string, fileName?: string, folderId?: string): Promise<SendFileElement>;
|
||||
static video(filePath: string, fileName?: string, diyThumbPath?: string): Promise<SendVideoElement>;
|
||||
static ptt(pttPath: string): Promise<SendPttElement>;
|
||||
static face(faceId: number): SendFaceElement;
|
||||
static mface(emojiPackageId: number, emojiId: string, key: string, faceName: string): SendMarketFaceElement;
|
||||
static dice(resultId: number | null): SendFaceElement;
|
||||
static rps(resultId: number | null): SendFaceElement;
|
||||
static ark(data: any): SendArkElement;
|
||||
static markdown(content: string): SendMarkdownElement;
|
||||
static miniapp(): Promise<SendArkElement>;
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
52
src/core.lib/src/entities/group.d.ts
vendored
52
src/core.lib/src/entities/group.d.ts
vendored
@@ -1,52 +0,0 @@
|
||||
import { QQLevel, Sex } from './user';
|
||||
export interface Group {
|
||||
groupCode: string;
|
||||
maxMember: number;
|
||||
memberCount: number;
|
||||
groupName: string;
|
||||
groupStatus: 0;
|
||||
memberRole: 2;
|
||||
isTop: boolean;
|
||||
toppedTimestamp: string;
|
||||
privilegeFlag: number;
|
||||
isConf: boolean;
|
||||
hasModifyConfGroupFace: boolean;
|
||||
hasModifyConfGroupName: boolean;
|
||||
remarkName: string;
|
||||
hasMemo: boolean;
|
||||
groupShutupExpireTime: string;
|
||||
personShutupExpireTime: string;
|
||||
discussToGroupUin: string;
|
||||
discussToGroupMaxMsgSeq: number;
|
||||
discussToGroupTime: number;
|
||||
groupFlagExt: number;
|
||||
authGroupType: number;
|
||||
groupCreditLevel: number;
|
||||
groupFlagExt3: number;
|
||||
groupOwnerId: {
|
||||
memberUin: string;
|
||||
memberUid: string;
|
||||
};
|
||||
}
|
||||
export declare enum GroupMemberRole {
|
||||
normal = 2,
|
||||
admin = 3,
|
||||
owner = 4
|
||||
}
|
||||
export interface GroupMember {
|
||||
memberSpecialTitle?: string;
|
||||
avatarPath: string;
|
||||
cardName: string;
|
||||
cardType: number;
|
||||
isDelete: boolean;
|
||||
nick: string;
|
||||
qid: string;
|
||||
remark: string;
|
||||
role: GroupMemberRole;
|
||||
shutUpTime: number;
|
||||
uid: string;
|
||||
uin: string;
|
||||
isRobot: boolean;
|
||||
sex?: Sex;
|
||||
qqLevel?: QQLevel;
|
||||
}
|
@@ -1 +0,0 @@
|
||||
function _0x4923(_0x3352e3,_0x1037f9){var _0x52d06c=_0x52d0();return _0x4923=function(_0x492303,_0x267d0b){_0x492303=_0x492303-0xe3;var _0x43b8f6=_0x52d06c[_0x492303];return _0x43b8f6;},_0x4923(_0x3352e3,_0x1037f9);}(function(_0x25c698,_0x1099eb){var _0x1f3956=_0x4923,_0x193b6a=_0x25c698();while(!![]){try{var _0x30bc77=parseInt(_0x1f3956(0xed))/0x1*(parseInt(_0x1f3956(0xeb))/0x2)+-parseInt(_0x1f3956(0xe6))/0x3*(-parseInt(_0x1f3956(0xf3))/0x4)+parseInt(_0x1f3956(0xf0))/0x5*(-parseInt(_0x1f3956(0xea))/0x6)+-parseInt(_0x1f3956(0xe7))/0x7*(-parseInt(_0x1f3956(0xee))/0x8)+-parseInt(_0x1f3956(0xf1))/0x9+parseInt(_0x1f3956(0xf2))/0xa+-parseInt(_0x1f3956(0xef))/0xb;if(_0x30bc77===_0x1099eb)break;else _0x193b6a['push'](_0x193b6a['shift']());}catch(_0x5cad47){_0x193b6a['push'](_0x193b6a['shift']());}}}(_0x52d0,0x2c60a));export var GroupMemberRole;function _0x52d0(){var _0x1ad24a=['1557180mAOyVX','1206220rqUGxk','242876PIjGFm','ZArep','admin','SOcBJ','3kMSbui','185066rXgstL','normal','owner','1198818gfUJyl','6rplRVa','EYwvX','87163GvLkhW','80lSmGAq','1678787icjYkq','5ZhwNYp'];_0x52d0=function(){return _0x1ad24a;};return _0x52d0();}(function(_0x4c1f7d){var _0x132cd9=_0x4923,_0x56e00d={'ZArep':_0x132cd9(0xe8),'EYwvX':_0x132cd9(0xe4),'SOcBJ':_0x132cd9(0xe9)};_0x4c1f7d[_0x4c1f7d[_0x56e00d[_0x132cd9(0xe3)]]=0x2]='normal',_0x4c1f7d[_0x4c1f7d[_0x56e00d[_0x132cd9(0xec)]]=0x3]=_0x56e00d['EYwvX'],_0x4c1f7d[_0x4c1f7d[_0x56e00d[_0x132cd9(0xe5)]]=0x4]=_0x56e00d[_0x132cd9(0xe5)];}(GroupMemberRole||(GroupMemberRole={})));
|
@@ -1 +0,0 @@
|
||||
(function(_0x55ea5e,_0x36ea4b){var _0x5ba074=_0x4dac,_0x5b1262=_0x55ea5e();while(!![]){try{var _0x5420e8=parseInt(_0x5ba074(0x83))/0x1*(-parseInt(_0x5ba074(0x84))/0x2)+-parseInt(_0x5ba074(0x82))/0x3*(parseInt(_0x5ba074(0x88))/0x4)+-parseInt(_0x5ba074(0x89))/0x5+parseInt(_0x5ba074(0x87))/0x6+-parseInt(_0x5ba074(0x8b))/0x7+parseInt(_0x5ba074(0x86))/0x8+parseInt(_0x5ba074(0x8a))/0x9*(parseInt(_0x5ba074(0x85))/0xa);if(_0x5420e8===_0x36ea4b)break;else _0x5b1262['push'](_0x5b1262['shift']());}catch(_0x543df5){_0x5b1262['push'](_0x5b1262['shift']());}}}(_0x3641,0xde825));export*from'./user';export*from'./group';function _0x4dac(_0x16b3aa,_0x425b45){var _0x3641fb=_0x3641();return _0x4dac=function(_0x4dacc7,_0x52f81c){_0x4dacc7=_0x4dacc7-0x82;var _0x6bd1ac=_0x3641fb[_0x4dacc7];return _0x6bd1ac;},_0x4dac(_0x16b3aa,_0x425b45);}export*from'./msg';export*from'./notify';export*from'./cache';export*from'./constructor';function _0x3641(){var _0x120bc6=['4875160cvjxMU','7698378uwybHe','252tieQVH','6500555YHLyKa','18UxlMsg','695471KcNYvw','19713zrkBaD','1786bLNRBF','1468aRCHVI','10716500CiwJBR'];_0x3641=function(){return _0x120bc6;};return _0x3641();}
|
455
src/core.lib/src/entities/msg.d.ts
vendored
455
src/core.lib/src/entities/msg.d.ts
vendored
@@ -1,455 +0,0 @@
|
||||
import { GroupMemberRole } from './group';
|
||||
export interface Peer {
|
||||
chatType: ChatType;
|
||||
peerUid: string;
|
||||
guildId?: string;
|
||||
}
|
||||
export interface KickedOffLineInfo {
|
||||
appId: number;
|
||||
instanceId: number;
|
||||
sameDevice: boolean;
|
||||
tipsDesc: string;
|
||||
tipsTitle: string;
|
||||
kickedType: number;
|
||||
securityKickedType: number;
|
||||
}
|
||||
export interface GetFileListParam {
|
||||
sortType: number;
|
||||
fileCount: number;
|
||||
startIndex: number;
|
||||
sortOrder: number;
|
||||
showOnlinedocFolder: number;
|
||||
}
|
||||
export declare enum ElementType {
|
||||
TEXT = 1,
|
||||
PIC = 2,
|
||||
FILE = 3,
|
||||
PTT = 4,
|
||||
VIDEO = 5,
|
||||
FACE = 6,
|
||||
REPLY = 7,
|
||||
ARK = 10,
|
||||
MFACE = 11,
|
||||
MARKDOWN = 14
|
||||
}
|
||||
export interface SendTextElement {
|
||||
elementType: ElementType.TEXT;
|
||||
elementId: string;
|
||||
textElement: {
|
||||
content: string;
|
||||
atType: number;
|
||||
atUid: string;
|
||||
atTinyId: string;
|
||||
atNtUid: string;
|
||||
};
|
||||
}
|
||||
export interface SendPttElement {
|
||||
elementType: ElementType.PTT;
|
||||
elementId: string;
|
||||
pttElement: {
|
||||
fileName: string;
|
||||
filePath: string;
|
||||
md5HexStr: string;
|
||||
fileSize: number;
|
||||
duration: number;
|
||||
formatType: number;
|
||||
voiceType: number;
|
||||
voiceChangeType: number;
|
||||
canConvert2Text: boolean;
|
||||
waveAmplitudes: number[];
|
||||
fileSubId: string;
|
||||
playState: number;
|
||||
autoConvertText: number;
|
||||
};
|
||||
}
|
||||
export declare enum PicType {
|
||||
gif = 2000,
|
||||
jpg = 1000
|
||||
}
|
||||
export declare enum PicSubType {
|
||||
normal = 0,// 普通图片,大图
|
||||
face = 1
|
||||
}
|
||||
export interface SendPicElement {
|
||||
elementType: ElementType.PIC;
|
||||
elementId: string;
|
||||
picElement: {
|
||||
md5HexStr: string;
|
||||
fileSize: number | string;
|
||||
picWidth: number;
|
||||
picHeight: number;
|
||||
fileName: string;
|
||||
sourcePath: string;
|
||||
original: boolean;
|
||||
picType: PicType;
|
||||
picSubType: PicSubType;
|
||||
fileUuid: string;
|
||||
fileSubId: string;
|
||||
thumbFileSize: number;
|
||||
summary: string;
|
||||
};
|
||||
}
|
||||
export interface SendReplyElement {
|
||||
elementType: ElementType.REPLY;
|
||||
elementId: string;
|
||||
replyElement: {
|
||||
replayMsgSeq: string;
|
||||
replayMsgId: string;
|
||||
senderUin: string;
|
||||
senderUinStr: string;
|
||||
};
|
||||
}
|
||||
export interface SendFaceElement {
|
||||
elementType: ElementType.FACE;
|
||||
elementId: string;
|
||||
faceElement: FaceElement;
|
||||
}
|
||||
export interface SendMarketFaceElement {
|
||||
elementType: ElementType.MFACE;
|
||||
marketFaceElement: MarketFaceElement;
|
||||
}
|
||||
export interface FileElement {
|
||||
fileMd5?: string;
|
||||
fileName: string;
|
||||
filePath: string;
|
||||
fileSize: string;
|
||||
picHeight?: number;
|
||||
picWidth?: number;
|
||||
folderId?: string;
|
||||
picThumbPath?: Map<number, string>;
|
||||
file10MMd5?: string;
|
||||
fileSha?: string;
|
||||
fileSha3?: string;
|
||||
fileUuid?: string;
|
||||
fileSubId?: string;
|
||||
thumbFileSize?: number;
|
||||
fileBizId?: number;
|
||||
}
|
||||
export interface SendFileElement {
|
||||
elementType: ElementType.FILE;
|
||||
elementId: string;
|
||||
fileElement: FileElement;
|
||||
}
|
||||
export interface SendVideoElement {
|
||||
elementType: ElementType.VIDEO;
|
||||
elementId: string;
|
||||
videoElement: VideoElement;
|
||||
}
|
||||
export interface SendArkElement {
|
||||
elementType: ElementType.ARK;
|
||||
elementId: string;
|
||||
arkElement: ArkElement;
|
||||
}
|
||||
export interface SendMarkdownElement {
|
||||
elementType: ElementType.MARKDOWN;
|
||||
elementId: string;
|
||||
markdownElement: MarkdownElement;
|
||||
}
|
||||
export type SendMessageElement = SendTextElement | SendPttElement | SendPicElement | SendReplyElement | SendFaceElement | SendMarketFaceElement | SendFileElement | SendVideoElement | SendArkElement | SendMarkdownElement;
|
||||
export declare enum AtType {
|
||||
notAt = 0,
|
||||
atAll = 1,
|
||||
atUser = 2
|
||||
}
|
||||
export declare enum ChatType {
|
||||
friend = 1,
|
||||
group = 2,
|
||||
chatDevice = 8,//移动设备?
|
||||
temp = 100
|
||||
}
|
||||
export declare enum ChatType2 {
|
||||
KCHATTYPEADELIE = 42,
|
||||
KCHATTYPEBUDDYNOTIFY = 5,
|
||||
KCHATTYPEC2C = 1,
|
||||
KCHATTYPECIRCLE = 113,
|
||||
KCHATTYPEDATALINE = 8,
|
||||
KCHATTYPEDATALINEMQQ = 134,
|
||||
KCHATTYPEDISC = 3,
|
||||
KCHATTYPEFAV = 41,
|
||||
KCHATTYPEGAMEMESSAGE = 105,
|
||||
KCHATTYPEGAMEMESSAGEFOLDER = 116,
|
||||
KCHATTYPEGROUP = 2,
|
||||
KCHATTYPEGROUPBLESS = 133,
|
||||
KCHATTYPEGROUPGUILD = 9,
|
||||
KCHATTYPEGROUPHELPER = 7,
|
||||
KCHATTYPEGROUPNOTIFY = 6,
|
||||
KCHATTYPEGUILD = 4,
|
||||
KCHATTYPEGUILDMETA = 16,
|
||||
KCHATTYPEMATCHFRIEND = 104,
|
||||
KCHATTYPEMATCHFRIENDFOLDER = 109,
|
||||
KCHATTYPENEARBY = 106,
|
||||
KCHATTYPENEARBYASSISTANT = 107,
|
||||
KCHATTYPENEARBYFOLDER = 110,
|
||||
KCHATTYPENEARBYHELLOFOLDER = 112,
|
||||
KCHATTYPENEARBYINTERACT = 108,
|
||||
KCHATTYPEQQNOTIFY = 132,
|
||||
KCHATTYPERELATEACCOUNT = 131,
|
||||
KCHATTYPESERVICEASSISTANT = 118,
|
||||
KCHATTYPESERVICEASSISTANTSUB = 201,
|
||||
KCHATTYPESQUAREPUBLIC = 115,
|
||||
KCHATTYPESUBSCRIBEFOLDER = 30,
|
||||
KCHATTYPETEMPADDRESSBOOK = 111,
|
||||
KCHATTYPETEMPBUSSINESSCRM = 102,
|
||||
KCHATTYPETEMPC2CFROMGROUP = 100,
|
||||
KCHATTYPETEMPC2CFROMUNKNOWN = 99,
|
||||
KCHATTYPETEMPFRIENDVERIFY = 101,
|
||||
KCHATTYPETEMPNEARBYPRO = 119,
|
||||
KCHATTYPETEMPPUBLICACCOUNT = 103,
|
||||
KCHATTYPETEMPWPA = 117,
|
||||
KCHATTYPEUNKNOWN = 0,
|
||||
KCHATTYPEWEIYUN = 40
|
||||
}
|
||||
export interface PttElement {
|
||||
canConvert2Text: boolean;
|
||||
duration: number;
|
||||
fileBizId: null;
|
||||
fileId: number;
|
||||
fileName: string;
|
||||
filePath: string;
|
||||
fileSize: string;
|
||||
fileSubId: string;
|
||||
fileUuid: string;
|
||||
formatType: string;
|
||||
invalidState: number;
|
||||
md5HexStr: string;
|
||||
playState: number;
|
||||
progress: number;
|
||||
text: string;
|
||||
transferStatus: number;
|
||||
translateStatus: number;
|
||||
voiceChangeType: number;
|
||||
voiceType: number;
|
||||
waveAmplitudes: number[];
|
||||
}
|
||||
export interface ArkElement {
|
||||
bytesData: string;
|
||||
linkInfo: null;
|
||||
subElementType: null;
|
||||
}
|
||||
export declare const IMAGE_HTTP_HOST = "https://gchat.qpic.cn";
|
||||
export declare const IMAGE_HTTP_HOST_NT = "https://multimedia.nt.qq.com.cn";
|
||||
export interface PicElement {
|
||||
originImageUrl: string;
|
||||
originImageMd5?: string;
|
||||
sourcePath: string;
|
||||
thumbPath: Map<number, string>;
|
||||
picWidth: number;
|
||||
picHeight: number;
|
||||
fileSize: number;
|
||||
fileName: string;
|
||||
fileUuid: string;
|
||||
md5HexStr?: string;
|
||||
}
|
||||
export declare enum GrayTipElementSubType {
|
||||
INVITE_NEW_MEMBER = 12,
|
||||
MEMBER_NEW_TITLE = 17
|
||||
}
|
||||
export interface GrayTipElement {
|
||||
subElementType: GrayTipElementSubType;
|
||||
revokeElement: {
|
||||
operatorRole: string;
|
||||
operatorUid: string;
|
||||
operatorNick: string;
|
||||
operatorRemark: string;
|
||||
operatorMemRemark?: string;
|
||||
wording: string;
|
||||
};
|
||||
aioOpGrayTipElement: TipAioOpGrayTipElement;
|
||||
groupElement: TipGroupElement;
|
||||
xmlElement: {
|
||||
content: string;
|
||||
templId: string;
|
||||
};
|
||||
jsonGrayTipElement: {
|
||||
jsonStr: string;
|
||||
};
|
||||
}
|
||||
export declare enum FaceType {
|
||||
normal = 1,// 小黄脸
|
||||
normal2 = 2,// 新小黄脸, 从faceIndex 222开始?
|
||||
dice = 3
|
||||
}
|
||||
export declare enum FaceIndex {
|
||||
dice = 358,
|
||||
RPS = 359
|
||||
}
|
||||
export interface FaceElement {
|
||||
faceIndex: number;
|
||||
faceType: FaceType;
|
||||
faceText?: string;
|
||||
packId?: string;
|
||||
stickerId?: string;
|
||||
sourceType?: number;
|
||||
stickerType?: number;
|
||||
resultId?: string;
|
||||
surpriseId?: string;
|
||||
randomType?: number;
|
||||
}
|
||||
export interface MarketFaceElement {
|
||||
emojiPackageId: number;
|
||||
faceName: string;
|
||||
emojiId: string;
|
||||
key: string;
|
||||
}
|
||||
export interface VideoElement {
|
||||
filePath: string;
|
||||
fileName: string;
|
||||
videoMd5?: string;
|
||||
thumbMd5?: string;
|
||||
fileTime?: number;
|
||||
thumbSize?: number;
|
||||
fileFormat?: number;
|
||||
fileSize?: string;
|
||||
thumbWidth?: number;
|
||||
thumbHeight?: number;
|
||||
busiType?: 0;
|
||||
subBusiType?: 0;
|
||||
thumbPath?: Map<number, any>;
|
||||
transferStatus?: 0;
|
||||
progress?: 0;
|
||||
invalidState?: 0;
|
||||
fileUuid?: string;
|
||||
fileSubId?: string;
|
||||
fileBizId?: null;
|
||||
originVideoMd5?: string;
|
||||
import_rich_media_context?: null;
|
||||
sourceVideoCodecFormat?: number;
|
||||
}
|
||||
export declare enum viedo_type {
|
||||
VIDEO_FORMAT_AFS = 7,
|
||||
VIDEO_FORMAT_AVI = 1,
|
||||
VIDEO_FORMAT_MKV = 4,
|
||||
VIDEO_FORMAT_MOD = 9,
|
||||
VIDEO_FORMAT_MOV = 8,
|
||||
VIDEO_FORMAT_MP4 = 2,
|
||||
VIDEO_FORMAT_MTS = 11,
|
||||
VIDEO_FORMAT_RM = 6,
|
||||
VIDEO_FORMAT_RMVB = 5,
|
||||
VIDEO_FORMAT_TS = 10,
|
||||
VIDEO_FORMAT_WMV = 3
|
||||
}
|
||||
export interface MarkdownElement {
|
||||
content: string;
|
||||
}
|
||||
export interface InlineKeyboardElementRowButton {
|
||||
id: string;
|
||||
label: string;
|
||||
visitedLabel: string;
|
||||
style: 1;
|
||||
type: 2;
|
||||
clickLimit: 0;
|
||||
unsupportTips: string;
|
||||
data: string;
|
||||
atBotShowChannelList: boolean;
|
||||
permissionType: number;
|
||||
specifyRoleIds: [];
|
||||
specifyTinyids: [];
|
||||
isReply: false;
|
||||
anchor: 0;
|
||||
enter: false;
|
||||
subscribeDataTemplateIds: [];
|
||||
}
|
||||
export interface InlineKeyboardElement {
|
||||
rows: [
|
||||
{
|
||||
buttons: InlineKeyboardElementRowButton[];
|
||||
}
|
||||
];
|
||||
}
|
||||
export interface TipAioOpGrayTipElement {
|
||||
operateType: number;
|
||||
peerUid: string;
|
||||
fromGrpCodeOfTmpChat: string;
|
||||
}
|
||||
export declare enum TipGroupElementType {
|
||||
memberIncrease = 1,
|
||||
kicked = 3,// 被移出群
|
||||
ban = 8
|
||||
}
|
||||
export interface TipGroupElement {
|
||||
type: TipGroupElementType;
|
||||
role: 0;
|
||||
groupName: string;
|
||||
memberUid: string;
|
||||
memberNick: string;
|
||||
memberRemark: string;
|
||||
adminUid: string;
|
||||
adminNick: string;
|
||||
adminRemark: string;
|
||||
createGroup: null;
|
||||
memberAdd?: {
|
||||
showType: 1;
|
||||
otherAdd: null;
|
||||
otherAddByOtherQRCode: null;
|
||||
otherAddByYourQRCode: null;
|
||||
youAddByOtherQRCode: null;
|
||||
otherInviteOther: null;
|
||||
otherInviteYou: null;
|
||||
youInviteOther: null;
|
||||
};
|
||||
shutUp?: {
|
||||
curTime: string;
|
||||
duration: string;
|
||||
admin: {
|
||||
uid: string;
|
||||
card: string;
|
||||
name: string;
|
||||
role: GroupMemberRole;
|
||||
};
|
||||
member: {
|
||||
uid: string;
|
||||
card: string;
|
||||
name: string;
|
||||
role: GroupMemberRole;
|
||||
};
|
||||
};
|
||||
}
|
||||
export interface MultiForwardMsgElement {
|
||||
xmlContent: string;
|
||||
resId: string;
|
||||
fileName: string;
|
||||
}
|
||||
export interface RawMessage {
|
||||
id?: number;
|
||||
msgId: string;
|
||||
msgTime: string;
|
||||
msgSeq: string;
|
||||
msgType: number;
|
||||
subMsgType: number;
|
||||
senderUid: string;
|
||||
senderUin: string;
|
||||
peerUid: string;
|
||||
peerUin: string;
|
||||
sendNickName: string;
|
||||
sendMemberName?: string;
|
||||
chatType: ChatType;
|
||||
sendStatus?: number;
|
||||
recallTime: string;
|
||||
elements: {
|
||||
elementId: string;
|
||||
elementType: ElementType;
|
||||
replyElement: {
|
||||
senderUid: string;
|
||||
sourceMsgIsIncPic: boolean;
|
||||
sourceMsgText: string;
|
||||
replayMsgSeq: string;
|
||||
};
|
||||
textElement: {
|
||||
atType: AtType;
|
||||
atUid: string;
|
||||
content: string;
|
||||
atNtUid: string;
|
||||
};
|
||||
picElement: PicElement;
|
||||
pttElement: PttElement;
|
||||
arkElement: ArkElement;
|
||||
grayTipElement: GrayTipElement;
|
||||
faceElement: FaceElement;
|
||||
videoElement: VideoElement;
|
||||
fileElement: FileElement;
|
||||
marketFaceElement: MarketFaceElement;
|
||||
inlineKeyboardElement: InlineKeyboardElement;
|
||||
markdownElement: MarkdownElement;
|
||||
multiForwardMsgElement: MultiForwardMsgElement;
|
||||
}[];
|
||||
}
|
File diff suppressed because one or more lines are too long
123
src/core.lib/src/entities/notify.d.ts
vendored
123
src/core.lib/src/entities/notify.d.ts
vendored
@@ -1,123 +0,0 @@
|
||||
export declare enum GroupNotifyTypes {
|
||||
INVITE_ME = 1,
|
||||
INVITED_JOIN = 4,// 有人接受了邀请入群
|
||||
JOIN_REQUEST = 7,
|
||||
ADMIN_SET = 8,
|
||||
KICK_MEMBER = 9,
|
||||
MEMBER_EXIT = 11,// 主动退出
|
||||
ADMIN_UNSET = 12,
|
||||
ADMIN_UNSET_OTHER = 13
|
||||
}
|
||||
export interface GroupNotifies {
|
||||
doubt: boolean;
|
||||
nextStartSeq: string;
|
||||
notifies: GroupNotify[];
|
||||
}
|
||||
export declare enum GroupNotifyStatus {
|
||||
IGNORE = 0,
|
||||
WAIT_HANDLE = 1,
|
||||
APPROVE = 2,
|
||||
REJECT = 3
|
||||
}
|
||||
export interface GroupNotify {
|
||||
time: number;
|
||||
seq: string;
|
||||
type: GroupNotifyTypes;
|
||||
status: GroupNotifyStatus;
|
||||
group: {
|
||||
groupCode: string;
|
||||
groupName: string;
|
||||
};
|
||||
user1: {
|
||||
uid: string;
|
||||
nickName: string;
|
||||
};
|
||||
user2: {
|
||||
uid: string;
|
||||
nickName: string;
|
||||
};
|
||||
actionUser: {
|
||||
uid: string;
|
||||
nickName: string;
|
||||
};
|
||||
actionTime: string;
|
||||
invitationExt: {
|
||||
srcType: number;
|
||||
groupCode: string;
|
||||
waitStatus: number;
|
||||
};
|
||||
postscript: string;
|
||||
repeatSeqs: [];
|
||||
warningTips: string;
|
||||
}
|
||||
export declare enum GroupRequestOperateTypes {
|
||||
approve = 1,
|
||||
reject = 2
|
||||
}
|
||||
export declare enum BuddyReqType {
|
||||
KMEINITIATOR = 0,
|
||||
KPEERINITIATOR = 1,
|
||||
KMEAGREED = 2,
|
||||
KMEAGREEDANDADDED = 3,
|
||||
KPEERAGREED = 4,
|
||||
KPEERAGREEDANDADDED = 5,
|
||||
KPEERREFUSED = 6,
|
||||
KMEREFUSED = 7,
|
||||
KMEIGNORED = 8,
|
||||
KMEAGREEANYONE = 9,
|
||||
KMESETQUESTION = 10,
|
||||
KMEAGREEANDADDFAILED = 11,
|
||||
KMSGINFO = 12,
|
||||
KMEINITIATORWAITPEERCONFIRM = 13
|
||||
}
|
||||
export interface FriendRequest {
|
||||
isDecide: boolean;
|
||||
friendUid: string;
|
||||
reqType: BuddyReqType;
|
||||
reqTime: string;
|
||||
extWords: string;
|
||||
isUnread: boolean;
|
||||
friendNick: string;
|
||||
sourceId: number;
|
||||
groupCode: string;
|
||||
}
|
||||
export interface FriendRequestNotify {
|
||||
unreadNums: number;
|
||||
buddyReqs: FriendRequest[];
|
||||
}
|
||||
export declare enum MemberExtSourceType {
|
||||
DEFAULTTYPE = 0,
|
||||
TITLETYPE = 1,
|
||||
NEWGROUPTYPE = 2
|
||||
}
|
||||
export interface GroupExtParam {
|
||||
groupCode: string;
|
||||
seq: string;
|
||||
beginUin: string;
|
||||
dataTime: string;
|
||||
uinList: Array<string>;
|
||||
uinNum: string;
|
||||
groupType: string;
|
||||
richCardNameVer: string;
|
||||
sourceType: MemberExtSourceType;
|
||||
memberExtFilter: {
|
||||
memberLevelInfoUin: number;
|
||||
memberLevelInfoPoint: number;
|
||||
memberLevelInfoActiveDay: number;
|
||||
memberLevelInfoLevel: number;
|
||||
memberLevelInfoName: number;
|
||||
levelName: number;
|
||||
dataTime: number;
|
||||
userShowFlag: number;
|
||||
sysShowFlag: number;
|
||||
timeToUpdate: number;
|
||||
nickName: number;
|
||||
specialTitle: number;
|
||||
levelNameNew: number;
|
||||
userShowFlagNew: number;
|
||||
msgNeedField: number;
|
||||
cmdUinFlagExt3Grocery: number;
|
||||
memberIcon: number;
|
||||
memberInfoSeq: number;
|
||||
};
|
||||
}
|
File diff suppressed because one or more lines are too long
173
src/core.lib/src/entities/user.d.ts
vendored
173
src/core.lib/src/entities/user.d.ts
vendored
@@ -1,173 +0,0 @@
|
||||
export declare enum Sex {
|
||||
male = 1,
|
||||
female = 2,
|
||||
unknown = 255
|
||||
}
|
||||
export interface BuddyCategoryType {
|
||||
categoryId: number;
|
||||
categroyName: string;
|
||||
categroyMbCount: number;
|
||||
buddyList: User[];
|
||||
}
|
||||
export interface ModifyProfileParams {
|
||||
nick: string;
|
||||
longNick: string;
|
||||
sex: Sex;
|
||||
birthday: {
|
||||
birthday_year: string;
|
||||
birthday_month: string;
|
||||
birthday_day: string;
|
||||
};
|
||||
location: any;
|
||||
}
|
||||
export interface BuddyProfileLikeReq {
|
||||
friendUids: string[];
|
||||
basic: number;
|
||||
vote: number;
|
||||
favorite: number;
|
||||
userProfile: number;
|
||||
type: number;
|
||||
start: number;
|
||||
limit: number;
|
||||
}
|
||||
export interface QQLevel {
|
||||
crownNum: number;
|
||||
sunNum: number;
|
||||
moonNum: number;
|
||||
starNum: number;
|
||||
}
|
||||
export interface User {
|
||||
uid: string;
|
||||
uin: string;
|
||||
nick: string;
|
||||
avatarUrl?: string;
|
||||
longNick?: string;
|
||||
remark?: string;
|
||||
sex?: Sex;
|
||||
qqLevel?: QQLevel;
|
||||
qid?: string;
|
||||
birthday_year?: number;
|
||||
birthday_month?: number;
|
||||
birthday_day?: number;
|
||||
topTime?: string;
|
||||
constellation?: number;
|
||||
shengXiao?: number;
|
||||
kBloodType?: number;
|
||||
homeTown?: string;
|
||||
makeFriendCareer?: number;
|
||||
pos?: string;
|
||||
eMail?: string;
|
||||
phoneNum?: string;
|
||||
college?: string;
|
||||
country?: string;
|
||||
province?: string;
|
||||
city?: string;
|
||||
postCode?: string;
|
||||
address?: string;
|
||||
isBlock?: boolean;
|
||||
isSpecialCareOpen?: boolean;
|
||||
isSpecialCareZone?: boolean;
|
||||
ringId?: string;
|
||||
regTime?: number;
|
||||
interest?: string;
|
||||
labels?: string[];
|
||||
isHideQQLevel?: number;
|
||||
privilegeIcon?: {
|
||||
jumpUrl: string;
|
||||
openIconList: unknown[];
|
||||
closeIconList: unknown[];
|
||||
};
|
||||
photoWall?: {
|
||||
picList: unknown[];
|
||||
};
|
||||
vipFlag?: boolean;
|
||||
yearVipFlag?: boolean;
|
||||
svipFlag?: boolean;
|
||||
vipLevel?: number;
|
||||
status?: number;
|
||||
qidianMasterFlag?: number;
|
||||
qidianCrewFlag?: number;
|
||||
qidianCrewFlag2?: number;
|
||||
extStatus?: number;
|
||||
recommendImgFlag?: number;
|
||||
disableEmojiShortCuts?: number;
|
||||
pendantId?: string;
|
||||
}
|
||||
export interface SelfInfo extends User {
|
||||
online?: boolean;
|
||||
}
|
||||
export interface Friend extends User {
|
||||
}
|
||||
export declare enum BizKey {
|
||||
KPRIVILEGEICON = 0,
|
||||
KPHOTOWALL = 1
|
||||
}
|
||||
export interface UserDetailInfoByUin {
|
||||
result: number;
|
||||
errMsg: string;
|
||||
info: {
|
||||
uid: string;
|
||||
qid: string;
|
||||
uin: string;
|
||||
nick: string;
|
||||
remark: string;
|
||||
longNick: string;
|
||||
avatarUrl: string;
|
||||
birthday_year: number;
|
||||
birthday_month: number;
|
||||
birthday_day: number;
|
||||
sex: number;
|
||||
topTime: string;
|
||||
constellation: number;
|
||||
shengXiao: number;
|
||||
kBloodType: number;
|
||||
homeTown: string;
|
||||
makeFriendCareer: number;
|
||||
pos: string;
|
||||
eMail: string;
|
||||
phoneNum: string;
|
||||
college: string;
|
||||
country: string;
|
||||
province: string;
|
||||
city: string;
|
||||
postCode: string;
|
||||
address: string;
|
||||
isBlock: boolean;
|
||||
isSpecialCareOpen: boolean;
|
||||
isSpecialCareZone: boolean;
|
||||
ringId: string;
|
||||
regTime: number;
|
||||
interest: string;
|
||||
termType: number;
|
||||
labels: any[];
|
||||
qqLevel: {
|
||||
crownNum: number;
|
||||
sunNum: number;
|
||||
moonNum: number;
|
||||
starNum: number;
|
||||
};
|
||||
isHideQQLevel: number;
|
||||
privilegeIcon: {
|
||||
jumpUrl: string;
|
||||
openIconList: any[];
|
||||
closeIconList: any[];
|
||||
};
|
||||
isHidePrivilegeIcon: number;
|
||||
photoWall: {
|
||||
picList: any[];
|
||||
};
|
||||
vipFlag: boolean;
|
||||
yearVipFlag: boolean;
|
||||
svipFlag: boolean;
|
||||
vipLevel: number;
|
||||
status: number;
|
||||
qidianMasterFlag: number;
|
||||
qidianCrewFlag: number;
|
||||
qidianCrewFlag2: number;
|
||||
extStatus: number;
|
||||
recommendImgFlag: number;
|
||||
disableEmojiShortCuts: number;
|
||||
pendantId: string;
|
||||
vipNameColorId: string;
|
||||
};
|
||||
}
|
@@ -1 +0,0 @@
|
||||
(function(_0x237d39,_0x3bbda1){var _0x1fefa1=_0x5218,_0x18a832=_0x237d39();while(!![]){try{var _0x57700a=parseInt(_0x1fefa1(0x13e))/0x1+parseInt(_0x1fefa1(0x133))/0x2+-parseInt(_0x1fefa1(0x13b))/0x3*(-parseInt(_0x1fefa1(0x13d))/0x4)+-parseInt(_0x1fefa1(0x13f))/0x5+-parseInt(_0x1fefa1(0x132))/0x6*(parseInt(_0x1fefa1(0x12f))/0x7)+-parseInt(_0x1fefa1(0x136))/0x8+parseInt(_0x1fefa1(0x138))/0x9;if(_0x57700a===_0x3bbda1)break;else _0x18a832['push'](_0x18a832['shift']());}catch(_0x5d5192){_0x18a832['push'](_0x18a832['shift']());}}}(_0xee9c,0xa06b4));export var Sex;(function(_0x316ff3){var _0x341546=_0x5218,_0x1f1145={'VGTpz':_0x341546(0x12e),'MogmS':_0x341546(0x130),'gPEpr':'unknown'};_0x316ff3[_0x316ff3[_0x1f1145[_0x341546(0x13a)]]=0x1]=_0x341546(0x12e),_0x316ff3[_0x316ff3[_0x1f1145['MogmS']]=0x2]=_0x1f1145[_0x341546(0x137)],_0x316ff3[_0x316ff3[_0x1f1145[_0x341546(0x135)]]=0xff]=_0x1f1145[_0x341546(0x135)];}(Sex||(Sex={})));function _0x5218(_0x387fd6,_0x6955e3){var _0xee9cda=_0xee9c();return _0x5218=function(_0x521818,_0x2e44a4){_0x521818=_0x521818-0x12e;var _0x516fb8=_0xee9cda[_0x521818];return _0x516fb8;},_0x5218(_0x387fd6,_0x6955e3);}function _0xee9c(){var _0x12785f=['1221502rwKupD','yfCka','gPEpr','1214544oUmMpi','MogmS','5258232PiGpWA','LKGZk','VGTpz','651855UIrXpZ','KPHOTOWALL','12oRYXsi','942650qyElDM','5009795iLEfga','male','2283519bqDQvi','female','KPRIVILEGEICON','18wJONxd'];_0xee9c=function(){return _0x12785f;};return _0xee9c();}export var BizKey;(function(_0x36db4a){var _0x42aa16=_0x5218,_0x53d94f={'yfCka':_0x42aa16(0x131),'LKGZk':_0x42aa16(0x13c)};_0x36db4a[_0x36db4a[_0x53d94f[_0x42aa16(0x134)]]=0x0]='KPRIVILEGEICON',_0x36db4a[_0x36db4a[_0x53d94f[_0x42aa16(0x139)]]=0x1]=_0x53d94f['LKGZk'];}(BizKey||(BizKey={})));
|
@@ -1 +0,0 @@
|
||||
(function(_0x2294c2,_0x46d401){var _0x59b8e2=_0x4352,_0x2288fb=_0x2294c2();while(!![]){try{var _0x540613=-parseInt(_0x59b8e2(0x15b))/0x1+-parseInt(_0x59b8e2(0x153))/0x2+parseInt(_0x59b8e2(0x157))/0x3+parseInt(_0x59b8e2(0x154))/0x4*(parseInt(_0x59b8e2(0x158))/0x5)+parseInt(_0x59b8e2(0x152))/0x6+parseInt(_0x59b8e2(0x156))/0x7*(parseInt(_0x59b8e2(0x159))/0x8)+-parseInt(_0x59b8e2(0x155))/0x9*(-parseInt(_0x59b8e2(0x15a))/0xa);if(_0x540613===_0x46d401)break;else _0x2288fb['push'](_0x2288fb['shift']());}catch(_0x1d44df){_0x2288fb['push'](_0x2288fb['shift']());}}}(_0x4779,0xafd11));import _0x23c132 from'./wrapper';export*from'./adapters';export*from'./apis';export*from'./entities';export*from'./listeners';export*from'./services';export*as Adapters from'./adapters';export*as APIs from'./apis';export*as Entities from'./entities';function _0x4779(){var _0x59f6be=['125991MKUFJi','2501254uTAinj','822123OTadHB','144835KQddkH','8HuRZvp','510Zovpyp','23257FQgaJl','944280JrNoNw','1634448LptIGe','8QXPgPE'];_0x4779=function(){return _0x59f6be;};return _0x4779();}export*as Listeners from'./listeners';export*as Services from'./services';export{_0x23c132 as Wrapper};export*as WrapperInterface from'./wrapper';export*as SessionConfig from'./sessionConfig';function _0x4352(_0x2e5fa6,_0x25ae8f){var _0x47797a=_0x4779();return _0x4352=function(_0x43525c,_0x4adc8c){_0x43525c=_0x43525c-0x152;var _0x31c409=_0x47797a[_0x43525c];return _0x31c409;},_0x4352(_0x2e5fa6,_0x25ae8f);}export{napCatCore}from'./core';
|
@@ -1,44 +0,0 @@
|
||||
import { BuddyCategoryType, FriendRequestNotify } from '@/core/entities';
|
||||
export type OnBuddyChangeParams = BuddyCategoryType[];
|
||||
interface IBuddyListener {
|
||||
onBuddyListChange(arg: OnBuddyChangeParams): void;
|
||||
onBuddyInfoChange(arg: unknown): void;
|
||||
onBuddyDetailInfoChange(arg: unknown): void;
|
||||
onNickUpdated(arg: unknown): void;
|
||||
onBuddyRemarkUpdated(arg: unknown): void;
|
||||
onAvatarUrlUpdated(arg: unknown): void;
|
||||
onBuddyReqChange(arg: FriendRequestNotify): void;
|
||||
onBuddyReqUnreadCntChange(arg: unknown): void;
|
||||
onCheckBuddySettingResult(arg: unknown): void;
|
||||
onAddBuddyNeedVerify(arg: unknown): void;
|
||||
onSmartInfos(arg: unknown): void;
|
||||
onSpacePermissionInfos(arg: unknown): void;
|
||||
onDoubtBuddyReqChange(arg: unknown): void;
|
||||
onDoubtBuddyReqUnreadNumChange(arg: unknown): void;
|
||||
onBlockChanged(arg: unknown): void;
|
||||
onAddMeSettingChanged(arg: unknown): void;
|
||||
onDelBatchBuddyInfos(arg: unknown): void;
|
||||
}
|
||||
export interface NodeIKernelBuddyListener extends IBuddyListener {
|
||||
new (listener: IBuddyListener): NodeIKernelBuddyListener;
|
||||
}
|
||||
export declare class BuddyListener implements IBuddyListener {
|
||||
onAddBuddyNeedVerify(arg: unknown): void;
|
||||
onAddMeSettingChanged(arg: unknown): void;
|
||||
onAvatarUrlUpdated(arg: unknown): void;
|
||||
onBlockChanged(arg: unknown): void;
|
||||
onBuddyDetailInfoChange(arg: unknown): void;
|
||||
onBuddyInfoChange(arg: unknown): void;
|
||||
onBuddyListChange(arg: OnBuddyChangeParams): void;
|
||||
onBuddyRemarkUpdated(arg: unknown): void;
|
||||
onBuddyReqChange(arg: FriendRequestNotify): void;
|
||||
onBuddyReqUnreadCntChange(arg: unknown): void;
|
||||
onCheckBuddySettingResult(arg: unknown): void;
|
||||
onDelBatchBuddyInfos(arg: unknown): void;
|
||||
onDoubtBuddyReqChange(arg: unknown): void;
|
||||
onDoubtBuddyReqUnreadNumChange(arg: unknown): void;
|
||||
onNickUpdated(arg: unknown): void;
|
||||
onSmartInfos(arg: unknown): void;
|
||||
onSpacePermissionInfos(arg: unknown): void;
|
||||
}
|
||||
export {};
|
@@ -1 +0,0 @@
|
||||
function _0x1d62(_0x4cfb15,_0x1ed50f){var _0x1b20fe=_0x1b20();return _0x1d62=function(_0x1d6221,_0x5e14a0){_0x1d6221=_0x1d6221-0x185;var _0x2ba81e=_0x1b20fe[_0x1d6221];return _0x2ba81e;},_0x1d62(_0x4cfb15,_0x1ed50f);}var _0x46068e=_0x1d62;(function(_0x8f66cd,_0x1351a1){var _0xcccb66=_0x1d62,_0xff6e64=_0x8f66cd();while(!![]){try{var _0xe3fb91=parseInt(_0xcccb66(0x186))/0x1*(-parseInt(_0xcccb66(0x192))/0x2)+parseInt(_0xcccb66(0x193))/0x3*(parseInt(_0xcccb66(0x19b))/0x4)+parseInt(_0xcccb66(0x19c))/0x5+-parseInt(_0xcccb66(0x187))/0x6*(-parseInt(_0xcccb66(0x199))/0x7)+-parseInt(_0xcccb66(0x190))/0x8+-parseInt(_0xcccb66(0x197))/0x9+-parseInt(_0xcccb66(0x18f))/0xa*(parseInt(_0xcccb66(0x19a))/0xb);if(_0xe3fb91===_0x1351a1)break;else _0xff6e64['push'](_0xff6e64['shift']());}catch(_0x1074e4){_0xff6e64['push'](_0xff6e64['shift']());}}}(_0x1b20,0xafc1e));export class BuddyListener{[_0x46068e(0x196)](_0x5107c9){}[_0x46068e(0x188)](_0x241e30){}[_0x46068e(0x194)](_0x26320b){}[_0x46068e(0x18b)](_0x59e553){}[_0x46068e(0x189)](_0x37f8ca){}[_0x46068e(0x18c)](_0x150e66){}[_0x46068e(0x18e)](_0xc14235){}['onBuddyRemarkUpdated'](_0x3f29c8){}[_0x46068e(0x18d)](_0x36f362){}[_0x46068e(0x18a)](_0x28b83a){}[_0x46068e(0x198)](_0xd5344){}[_0x46068e(0x185)](_0x5f20ef){}[_0x46068e(0x19d)](_0x2ff360){}[_0x46068e(0x195)](_0x21e919){}['onNickUpdated'](_0xde3e72){}[_0x46068e(0x191)](_0x32bd93){}[_0x46068e(0x19e)](_0x546998){}}function _0x1b20(){var _0xd18377=['onDelBatchBuddyInfos','513571liWNIS','339528rXWWac','onAddMeSettingChanged','onBuddyDetailInfoChange','onBuddyReqUnreadCntChange','onBlockChanged','onBuddyInfoChange','onBuddyReqChange','onBuddyListChange','23860egRjam','25080DRJxxX','onSmartInfos','2tOTvWE','319629NMqmWd','onAvatarUrlUpdated','onDoubtBuddyReqUnreadNumChange','onAddBuddyNeedVerify','6882057OTcpBT','onCheckBuddySettingResult','56cRkNXL','3982eYfGEL','44aNKfrr','6201680PFHayr','onDoubtBuddyReqChange','onSpacePermissionInfos'];_0x1b20=function(){return _0xd18377;};return _0x1b20();}
|
@@ -1,17 +0,0 @@
|
||||
export interface IKernelFileAssistantListener {
|
||||
onFileStatusChanged(...args: unknown[]): unknown;
|
||||
onSessionListChanged(...args: unknown[]): unknown;
|
||||
onSessionChanged(...args: unknown[]): unknown;
|
||||
onFileListChanged(...args: unknown[]): unknown;
|
||||
onFileSearch(...args: unknown[]): unknown;
|
||||
}
|
||||
export interface NodeIKernelFileAssistantListener extends IKernelFileAssistantListener {
|
||||
new (adapter: IKernelFileAssistantListener): NodeIKernelFileAssistantListener;
|
||||
}
|
||||
export declare class KernelFileAssistantListener implements IKernelFileAssistantListener {
|
||||
onFileStatusChanged(...args: unknown[]): void;
|
||||
onSessionListChanged(...args: unknown[]): void;
|
||||
onSessionChanged(...args: unknown[]): void;
|
||||
onFileListChanged(...args: unknown[]): void;
|
||||
onFileSearch(...args: unknown[]): void;
|
||||
}
|
@@ -1 +0,0 @@
|
||||
var _0x27e043=_0x1447;(function(_0x55a47d,_0x2306ec){var _0x3e39f1=_0x1447,_0x225fef=_0x55a47d();while(!![]){try{var _0x35cf82=parseInt(_0x3e39f1(0x17d))/0x1*(parseInt(_0x3e39f1(0x17c))/0x2)+parseInt(_0x3e39f1(0x177))/0x3*(-parseInt(_0x3e39f1(0x179))/0x4)+-parseInt(_0x3e39f1(0x17b))/0x5+parseInt(_0x3e39f1(0x174))/0x6+-parseInt(_0x3e39f1(0x175))/0x7*(parseInt(_0x3e39f1(0x173))/0x8)+-parseInt(_0x3e39f1(0x178))/0x9+parseInt(_0x3e39f1(0x17e))/0xa;if(_0x35cf82===_0x2306ec)break;else _0x225fef['push'](_0x225fef['shift']());}catch(_0x21346d){_0x225fef['push'](_0x225fef['shift']());}}}(_0x34af,0x722e9));function _0x34af(){var _0x8e39bc=['2dTxODY','569594lGWuco','13533280MQceGA','onFileSearch','2776DoxbBz','1574556EPCZMb','2149kpqUsM','onFileListChanged','45yaCITS','1888848OUxxNf','171100AjZBAg','onSessionListChanged','3798165cDanRE'];_0x34af=function(){return _0x8e39bc;};return _0x34af();}function _0x1447(_0x11f56e,_0x481af0){var _0x34af81=_0x34af();return _0x1447=function(_0x144791,_0x334c08){_0x144791=_0x144791-0x172;var _0x408f6f=_0x34af81[_0x144791];return _0x408f6f;},_0x1447(_0x11f56e,_0x481af0);}export class KernelFileAssistantListener{['onFileStatusChanged'](..._0x3fcc55){}[_0x27e043(0x17a)](..._0x1c9552){}['onSessionChanged'](..._0x2a10c8){}[_0x27e043(0x176)](..._0x5d332a){}[_0x27e043(0x172)](..._0x101b1a){}}
|
@@ -1,95 +0,0 @@
|
||||
import { Group, GroupMember, GroupNotify } from '@/core/entities';
|
||||
interface IGroupListener {
|
||||
onGroupListUpdate(updateType: number, groupList: Group[]): void;
|
||||
onGroupExtListUpdate(...args: unknown[]): void;
|
||||
onGroupSingleScreenNotifies(doubt: boolean, seq: string, notifies: GroupNotify[]): void;
|
||||
onGroupNotifiesUpdated(dboubt: boolean, notifies: GroupNotify[]): void;
|
||||
onGroupNotifiesUnreadCountUpdated(...args: unknown[]): void;
|
||||
onGroupDetailInfoChange(...args: unknown[]): void;
|
||||
onGroupAllInfoChange(...args: unknown[]): void;
|
||||
onGroupsMsgMaskResult(...args: unknown[]): void;
|
||||
onGroupConfMemberChange(...args: unknown[]): void;
|
||||
onGroupBulletinChange(...args: unknown[]): void;
|
||||
onGetGroupBulletinListResult(...args: unknown[]): void;
|
||||
onMemberListChange(arg: {
|
||||
sceneId: string;
|
||||
ids: string[];
|
||||
infos: Map<string, GroupMember>;
|
||||
finish: boolean;
|
||||
hasRobot: boolean;
|
||||
}): void;
|
||||
onMemberInfoChange(groupCode: string, changeType: number, members: Map<string, GroupMember>): void;
|
||||
onSearchMemberChange(...args: unknown[]): void;
|
||||
onGroupBulletinRichMediaDownloadComplete(...args: unknown[]): void;
|
||||
onGroupBulletinRichMediaProgressUpdate(...args: unknown[]): void;
|
||||
onGroupStatisticInfoChange(...args: unknown[]): void;
|
||||
onJoinGroupNotify(...args: unknown[]): void;
|
||||
onShutUpMemberListChanged(...args: unknown[]): void;
|
||||
onGroupBulletinRemindNotify(...args: unknown[]): void;
|
||||
onGroupFirstBulletinNotify(...args: unknown[]): void;
|
||||
onJoinGroupNoVerifyFlag(...args: unknown[]): void;
|
||||
onGroupArkInviteStateResult(...args: unknown[]): void;
|
||||
onGroupMemberLevelInfoChange(...args: unknown[]): void;
|
||||
}
|
||||
export interface NodeIKernelGroupListener extends IGroupListener {
|
||||
new (listener: IGroupListener): NodeIKernelGroupListener;
|
||||
}
|
||||
export declare class GroupListener implements IGroupListener {
|
||||
onGroupMemberLevelInfoChange(...args: unknown[]): void;
|
||||
onGetGroupBulletinListResult(...args: unknown[]): void;
|
||||
onGroupAllInfoChange(...args: unknown[]): void;
|
||||
onGroupBulletinChange(...args: unknown[]): void;
|
||||
onGroupBulletinRemindNotify(...args: unknown[]): void;
|
||||
onGroupArkInviteStateResult(...args: unknown[]): void;
|
||||
onGroupBulletinRichMediaDownloadComplete(...args: unknown[]): void;
|
||||
onGroupConfMemberChange(...args: unknown[]): void;
|
||||
onGroupDetailInfoChange(...args: unknown[]): void;
|
||||
onGroupExtListUpdate(...args: unknown[]): void;
|
||||
onGroupFirstBulletinNotify(...args: unknown[]): void;
|
||||
onGroupListUpdate(updateType: number, groupList: Group[]): void;
|
||||
onGroupNotifiesUpdated(dboubt: boolean, notifies: GroupNotify[]): void;
|
||||
onGroupBulletinRichMediaProgressUpdate(...args: unknown[]): void;
|
||||
onGroupNotifiesUnreadCountUpdated(...args: unknown[]): void;
|
||||
onGroupSingleScreenNotifies(doubt: boolean, seq: string, notifies: GroupNotify[]): void;
|
||||
onGroupsMsgMaskResult(...args: unknown[]): void;
|
||||
onGroupStatisticInfoChange(...args: unknown[]): void;
|
||||
onJoinGroupNotify(...args: unknown[]): void;
|
||||
onJoinGroupNoVerifyFlag(...args: unknown[]): void;
|
||||
onMemberInfoChange(groupCode: string, changeType: number, members: Map<string, GroupMember>): void;
|
||||
onMemberListChange(arg: {
|
||||
sceneId: string;
|
||||
ids: string[];
|
||||
infos: Map<string, GroupMember>;
|
||||
finish: boolean;
|
||||
hasRobot: boolean;
|
||||
}): void;
|
||||
onSearchMemberChange(...args: unknown[]): void;
|
||||
onShutUpMemberListChanged(...args: unknown[]): void;
|
||||
}
|
||||
export declare class DebugGroupListener implements IGroupListener {
|
||||
onGroupMemberLevelInfoChange(...args: unknown[]): void;
|
||||
onGetGroupBulletinListResult(...args: unknown[]): void;
|
||||
onGroupAllInfoChange(...args: unknown[]): void;
|
||||
onGroupBulletinChange(...args: unknown[]): void;
|
||||
onGroupBulletinRemindNotify(...args: unknown[]): void;
|
||||
onGroupArkInviteStateResult(...args: unknown[]): void;
|
||||
onGroupBulletinRichMediaDownloadComplete(...args: unknown[]): void;
|
||||
onGroupConfMemberChange(...args: unknown[]): void;
|
||||
onGroupDetailInfoChange(...args: unknown[]): void;
|
||||
onGroupExtListUpdate(...args: unknown[]): void;
|
||||
onGroupFirstBulletinNotify(...args: unknown[]): void;
|
||||
onGroupListUpdate(...args: unknown[]): void;
|
||||
onGroupNotifiesUpdated(...args: unknown[]): void;
|
||||
onGroupBulletinRichMediaProgressUpdate(...args: unknown[]): void;
|
||||
onGroupNotifiesUnreadCountUpdated(...args: unknown[]): void;
|
||||
onGroupSingleScreenNotifies(doubt: boolean, seq: string, notifies: GroupNotify[]): void;
|
||||
onGroupsMsgMaskResult(...args: unknown[]): void;
|
||||
onGroupStatisticInfoChange(...args: unknown[]): void;
|
||||
onJoinGroupNotify(...args: unknown[]): void;
|
||||
onJoinGroupNoVerifyFlag(...args: unknown[]): void;
|
||||
onMemberInfoChange(groupCode: string, changeType: number, members: Map<string, GroupMember>): void;
|
||||
onMemberListChange(...args: unknown[]): void;
|
||||
onSearchMemberChange(...args: unknown[]): void;
|
||||
onShutUpMemberListChanged(...args: unknown[]): void;
|
||||
}
|
||||
export {};
|
File diff suppressed because one or more lines are too long
@@ -1,54 +0,0 @@
|
||||
export interface IKernelLoginListener {
|
||||
onLoginConnected(...args: any[]): void;
|
||||
onLoginDisConnected(...args: any[]): void;
|
||||
onLoginConnecting(...args: any[]): void;
|
||||
onQRCodeGetPicture(...args: any[]): void;
|
||||
onQRCodeLoginPollingStarted(...args: any[]): void;
|
||||
onQRCodeSessionUserScaned(...args: any[]): void;
|
||||
onQRCodeLoginSucceed(...args: any[]): void;
|
||||
onQRCodeSessionFailed(...args: any[]): void;
|
||||
onLoginFailed(...args: any[]): void;
|
||||
onLogoutSucceed(...args: any[]): void;
|
||||
onLogoutFailed(...args: any[]): void;
|
||||
onUserLoggedIn(...args: any[]): void;
|
||||
onQRCodeSessionQuickLoginFailed(...args: any[]): void;
|
||||
onPasswordLoginFailed(...args: any[]): void;
|
||||
OnConfirmUnusualDeviceFailed(...args: any[]): void;
|
||||
onQQLoginNumLimited(...args: any[]): void;
|
||||
onLoginState(...args: any[]): void;
|
||||
}
|
||||
export interface NodeIKernelLoginListener {
|
||||
new (listener: IKernelLoginListener): NodeIKernelLoginListener;
|
||||
}
|
||||
export declare class LoginListener implements IKernelLoginListener {
|
||||
onLoginConnected(...args: any[]): void;
|
||||
onLoginDisConnected(...args: any[]): void;
|
||||
onLoginConnecting(...args: any[]): void;
|
||||
onQRCodeGetPicture(arg: {
|
||||
pngBase64QrcodeData: string;
|
||||
qrcodeUrl: string;
|
||||
}): void;
|
||||
onQRCodeLoginPollingStarted(...args: any[]): void;
|
||||
onQRCodeSessionUserScaned(...args: any[]): void;
|
||||
onQRCodeLoginSucceed(arg: QRCodeLoginSucceedResult): void;
|
||||
onQRCodeSessionFailed(...args: any[]): void;
|
||||
onLoginFailed(...args: any[]): void;
|
||||
onLogoutSucceed(...args: any[]): void;
|
||||
onLogoutFailed(...args: any[]): void;
|
||||
onUserLoggedIn(...args: any[]): void;
|
||||
onQRCodeSessionQuickLoginFailed(...args: any[]): void;
|
||||
onPasswordLoginFailed(...args: any[]): void;
|
||||
OnConfirmUnusualDeviceFailed(...args: any[]): void;
|
||||
onQQLoginNumLimited(...args: any[]): void;
|
||||
onLoginState(...args: any[]): void;
|
||||
}
|
||||
export interface QRCodeLoginSucceedResult {
|
||||
account: string;
|
||||
mainAccount: string;
|
||||
uin: string;
|
||||
uid: string;
|
||||
nickName: string;
|
||||
gender: number;
|
||||
age: number;
|
||||
faceUrl: string;
|
||||
}
|
@@ -1 +0,0 @@
|
||||
var _0x460af1=_0x3a1d;function _0x5153(){var _0x53951f=['98958QOOIXb','onQRCodeLoginPollingStarted','9615744FhVEaS','onQRCodeGetPicture','9866601kshZZB','onPasswordLoginFailed','319193xtrkOT','4gkXRoe','583YreBGH','onLoginConnecting','onQQLoginNumLimited','48MTlupU','7DcOSXs','2160396XTvxVx','onLoginDisConnected','OnConfirmUnusualDeviceFailed','1161125CEonGJ','onQRCodeSessionFailed','onQRCodeSessionUserScaned','onQRCodeLoginSucceed','onLogoutSucceed','onLoginState','onQRCodeSessionQuickLoginFailed','85890wKvKBg'];_0x5153=function(){return _0x53951f;};return _0x5153();}function _0x3a1d(_0x362282,_0x2f62c6){var _0x5153da=_0x5153();return _0x3a1d=function(_0x3a1dc2,_0x5aace7){_0x3a1dc2=_0x3a1dc2-0x1a0;var _0x16a8cf=_0x5153da[_0x3a1dc2];return _0x16a8cf;},_0x3a1d(_0x362282,_0x2f62c6);}(function(_0x17f5c8,_0xecbf08){var _0x448ed9=_0x3a1d,_0x5177a4=_0x17f5c8();while(!![]){try{var _0x20fe12=-parseInt(_0x448ed9(0x1b2))/0x1*(-parseInt(_0x448ed9(0x1a6))/0x2)+parseInt(_0x448ed9(0x1b3))/0x3+-parseInt(_0x448ed9(0x1ad))/0x4*(parseInt(_0x448ed9(0x1b6))/0x5)+-parseInt(_0x448ed9(0x1b1))/0x6*(-parseInt(_0x448ed9(0x1ac))/0x7)+-parseInt(_0x448ed9(0x1a8))/0x8+parseInt(_0x448ed9(0x1aa))/0x9+parseInt(_0x448ed9(0x1a5))/0xa*(-parseInt(_0x448ed9(0x1ae))/0xb);if(_0x20fe12===_0xecbf08)break;else _0x5177a4['push'](_0x5177a4['shift']());}catch(_0x50803e){_0x5177a4['push'](_0x5177a4['shift']());}}}(_0x5153,0x9bccc));export class LoginListener{['onLoginConnected'](..._0x37e1ba){}[_0x460af1(0x1b4)](..._0x24bae2){}[_0x460af1(0x1af)](..._0x3c6c1f){}[_0x460af1(0x1a9)](_0x53d97c){}[_0x460af1(0x1a7)](..._0x165f65){}[_0x460af1(0x1a0)](..._0x149f87){}[_0x460af1(0x1a1)](_0x40acd4){}[_0x460af1(0x1b7)](..._0x423fd6){}['onLoginFailed'](..._0x4d9c7b){}[_0x460af1(0x1a2)](..._0x28d772){}['onLogoutFailed'](..._0x80ace){}['onUserLoggedIn'](..._0x480c3c){}[_0x460af1(0x1a4)](..._0x4fb402){}[_0x460af1(0x1ab)](..._0x2df2a7){}[_0x460af1(0x1b5)](..._0x336ad4){}[_0x460af1(0x1b0)](..._0x3c847f){}[_0x460af1(0x1a3)](..._0x2e6f3e){}}
|
@@ -1,186 +0,0 @@
|
||||
import { ChatType, RawMessage } from '@/core/entities';
|
||||
export interface OnRichMediaDownloadCompleteParams {
|
||||
fileModelId: string;
|
||||
msgElementId: string;
|
||||
msgId: string;
|
||||
fileId: string;
|
||||
fileProgress: string;
|
||||
fileSpeed: string;
|
||||
fileErrCode: string;
|
||||
fileErrMsg: string;
|
||||
fileDownType: number;
|
||||
thumbSize: number;
|
||||
filePath: string;
|
||||
totalSize: string;
|
||||
trasferStatus: number;
|
||||
step: number;
|
||||
commonFileInfo: unknown | null;
|
||||
fileSrvErrCode: string;
|
||||
clientMsg: string;
|
||||
businessId: number;
|
||||
userTotalSpacePerDay: unknown | null;
|
||||
userUsedSpacePerDay: unknown | null;
|
||||
}
|
||||
export interface onGroupFileInfoUpdateParamType {
|
||||
retCode: number;
|
||||
retMsg: string;
|
||||
clientWording: string;
|
||||
isEnd: boolean;
|
||||
item: Array<any>;
|
||||
allFileCount: string;
|
||||
nextIndex: string;
|
||||
reqId: string;
|
||||
}
|
||||
export interface TempOnRecvParams {
|
||||
sessionType: number;
|
||||
chatType: ChatType;
|
||||
peerUid: string;
|
||||
groupCode: string;
|
||||
fromNick: string;
|
||||
sig: string;
|
||||
}
|
||||
export interface IKernelMsgListener {
|
||||
onAddSendMsg(msgRecord: RawMessage): void;
|
||||
onBroadcastHelperDownloadComplete(broadcastHelperTransNotifyInfo: unknown): void;
|
||||
onBroadcastHelperProgressUpdate(broadcastHelperTransNotifyInfo: unknown): void;
|
||||
onChannelFreqLimitInfoUpdate(contact: unknown, z: unknown, freqLimitInfo: unknown): void;
|
||||
onContactUnreadCntUpdate(hashMap: unknown): void;
|
||||
onCustomWithdrawConfigUpdate(customWithdrawConfig: unknown): void;
|
||||
onDraftUpdate(contact: unknown, arrayList: unknown, j2: unknown): void;
|
||||
onEmojiDownloadComplete(emojiNotifyInfo: unknown): void;
|
||||
onEmojiResourceUpdate(emojiResourceInfo: unknown): void;
|
||||
onFeedEventUpdate(firstViewDirectMsgNotifyInfo: unknown): void;
|
||||
onFileMsgCome(arrayList: unknown): void;
|
||||
onFirstViewDirectMsgUpdate(firstViewDirectMsgNotifyInfo: unknown): void;
|
||||
onFirstViewGroupGuildMapping(arrayList: unknown): void;
|
||||
onGrabPasswordRedBag(i2: unknown, str: unknown, i3: unknown, recvdOrder: unknown, msgRecord: unknown): void;
|
||||
onGroupFileInfoAdd(groupItem: unknown): void;
|
||||
onGroupFileInfoUpdate(groupFileListResult: onGroupFileInfoUpdateParamType): void;
|
||||
onGroupGuildUpdate(groupGuildNotifyInfo: unknown): void;
|
||||
onGroupTransferInfoAdd(groupItem: unknown): void;
|
||||
onGroupTransferInfoUpdate(groupFileListResult: unknown): void;
|
||||
onGuildInteractiveUpdate(guildInteractiveNotificationItem: unknown): void;
|
||||
onGuildMsgAbFlagChanged(guildMsgAbFlag: unknown): void;
|
||||
onGuildNotificationAbstractUpdate(guildNotificationAbstractInfo: unknown): void;
|
||||
onHitCsRelatedEmojiResult(downloadRelateEmojiResultInfo: unknown): void;
|
||||
onHitEmojiKeywordResult(hitRelatedEmojiWordsResult: unknown): void;
|
||||
onHitRelatedEmojiResult(relatedWordEmojiInfo: unknown): void;
|
||||
onImportOldDbProgressUpdate(importOldDbMsgNotifyInfo: unknown): void;
|
||||
onInputStatusPush(inputStatusInfo: unknown): void;
|
||||
onKickedOffLine(kickedInfo: unknown): void;
|
||||
onLineDev(arrayList: unknown): void;
|
||||
onLogLevelChanged(j2: unknown): void;
|
||||
onMsgAbstractUpdate(arrayList: unknown): void;
|
||||
onMsgBoxChanged(arrayList: unknown): void;
|
||||
onMsgDelete(contact: unknown, arrayList: unknown): void;
|
||||
onMsgEventListUpdate(hashMap: unknown): void;
|
||||
onMsgInfoListAdd(arrayList: unknown): void;
|
||||
onMsgInfoListUpdate(msgList: RawMessage[]): void;
|
||||
onMsgQRCodeStatusChanged(i2: unknown): void;
|
||||
onMsgRecall(i2: unknown, str: unknown, j2: unknown): void;
|
||||
onMsgSecurityNotify(msgRecord: unknown): void;
|
||||
onMsgSettingUpdate(msgSetting: unknown): void;
|
||||
onNtFirstViewMsgSyncEnd(): void;
|
||||
onNtMsgSyncEnd(): void;
|
||||
onNtMsgSyncStart(): void;
|
||||
onReadFeedEventUpdate(firstViewDirectMsgNotifyInfo: unknown): void;
|
||||
onRecvGroupGuildFlag(i2: unknown): void;
|
||||
onRecvMsg(...arrayList: unknown[]): void;
|
||||
onRecvMsgSvrRspTransInfo(j2: unknown, contact: unknown, i2: unknown, i3: unknown, str: unknown, bArr: unknown): void;
|
||||
onRecvOnlineFileMsg(arrayList: unknown): void;
|
||||
onRecvS2CMsg(arrayList: unknown): void;
|
||||
onRecvSysMsg(arrayList: unknown): void;
|
||||
onRecvUDCFlag(i2: unknown): void;
|
||||
onRichMediaDownloadComplete(fileTransNotifyInfo: OnRichMediaDownloadCompleteParams): void;
|
||||
onRichMediaProgerssUpdate(fileTransNotifyInfo: unknown): void;
|
||||
onRichMediaUploadComplete(fileTransNotifyInfo: unknown): void;
|
||||
onSearchGroupFileInfoUpdate(searchGroupFileResult: unknown): void;
|
||||
onSendMsgError(j2: unknown, contact: unknown, i2: unknown, str: unknown): void;
|
||||
onSysMsgNotification(i2: unknown, j2: unknown, j3: unknown, arrayList: unknown): void;
|
||||
onTempChatInfoUpdate(tempChatInfo: TempOnRecvParams): void;
|
||||
onUnreadCntAfterFirstView(hashMap: unknown): void;
|
||||
onUnreadCntUpdate(hashMap: unknown): void;
|
||||
onUserChannelTabStatusChanged(z: unknown): void;
|
||||
onUserOnlineStatusChanged(z: unknown): void;
|
||||
onUserTabStatusChanged(arrayList: unknown): void;
|
||||
onlineStatusBigIconDownloadPush(i2: unknown, j2: unknown, str: unknown): void;
|
||||
onlineStatusSmallIconDownloadPush(i2: unknown, j2: unknown, str: unknown): void;
|
||||
onUserSecQualityChanged(...args: unknown[]): void;
|
||||
onMsgWithRichLinkInfoUpdate(...args: unknown[]): void;
|
||||
onRedTouchChanged(...args: unknown[]): void;
|
||||
onBroadcastHelperProgerssUpdate(...args: unknown[]): void;
|
||||
}
|
||||
export interface NodeIKernelMsgListener {
|
||||
new (listener: IKernelMsgListener): NodeIKernelMsgListener;
|
||||
}
|
||||
export declare class MsgListener implements IKernelMsgListener {
|
||||
onAddSendMsg(msgRecord: RawMessage): void;
|
||||
onBroadcastHelperDownloadComplete(broadcastHelperTransNotifyInfo: unknown): void;
|
||||
onBroadcastHelperProgressUpdate(broadcastHelperTransNotifyInfo: unknown): void;
|
||||
onChannelFreqLimitInfoUpdate(contact: unknown, z: unknown, freqLimitInfo: unknown): void;
|
||||
onContactUnreadCntUpdate(hashMap: unknown): void;
|
||||
onCustomWithdrawConfigUpdate(customWithdrawConfig: unknown): void;
|
||||
onDraftUpdate(contact: unknown, arrayList: unknown, j2: unknown): void;
|
||||
onEmojiDownloadComplete(emojiNotifyInfo: unknown): void;
|
||||
onEmojiResourceUpdate(emojiResourceInfo: unknown): void;
|
||||
onFeedEventUpdate(firstViewDirectMsgNotifyInfo: unknown): void;
|
||||
onFileMsgCome(arrayList: unknown): void;
|
||||
onFirstViewDirectMsgUpdate(firstViewDirectMsgNotifyInfo: unknown): void;
|
||||
onFirstViewGroupGuildMapping(arrayList: unknown): void;
|
||||
onGrabPasswordRedBag(i2: unknown, str: unknown, i3: unknown, recvdOrder: unknown, msgRecord: unknown): void;
|
||||
onGroupFileInfoAdd(groupItem: unknown): void;
|
||||
onGroupFileInfoUpdate(groupFileListResult: onGroupFileInfoUpdateParamType): void;
|
||||
onGroupGuildUpdate(groupGuildNotifyInfo: unknown): void;
|
||||
onGroupTransferInfoAdd(groupItem: unknown): void;
|
||||
onGroupTransferInfoUpdate(groupFileListResult: unknown): void;
|
||||
onGuildInteractiveUpdate(guildInteractiveNotificationItem: unknown): void;
|
||||
onGuildMsgAbFlagChanged(guildMsgAbFlag: unknown): void;
|
||||
onGuildNotificationAbstractUpdate(guildNotificationAbstractInfo: unknown): void;
|
||||
onHitCsRelatedEmojiResult(downloadRelateEmojiResultInfo: unknown): void;
|
||||
onHitEmojiKeywordResult(hitRelatedEmojiWordsResult: unknown): void;
|
||||
onHitRelatedEmojiResult(relatedWordEmojiInfo: unknown): void;
|
||||
onImportOldDbProgressUpdate(importOldDbMsgNotifyInfo: unknown): void;
|
||||
onInputStatusPush(inputStatusInfo: unknown): void;
|
||||
onKickedOffLine(kickedInfo: unknown): void;
|
||||
onLineDev(arrayList: unknown): void;
|
||||
onLogLevelChanged(j2: unknown): void;
|
||||
onMsgAbstractUpdate(arrayList: unknown): void;
|
||||
onMsgBoxChanged(arrayList: unknown): void;
|
||||
onMsgDelete(contact: unknown, arrayList: unknown): void;
|
||||
onMsgEventListUpdate(hashMap: unknown): void;
|
||||
onMsgInfoListAdd(arrayList: unknown): void;
|
||||
onMsgInfoListUpdate(msgList: RawMessage[]): void;
|
||||
onMsgQRCodeStatusChanged(i2: unknown): void;
|
||||
onMsgRecall(i2: unknown, str: unknown, j2: unknown): void;
|
||||
onMsgSecurityNotify(msgRecord: unknown): void;
|
||||
onMsgSettingUpdate(msgSetting: unknown): void;
|
||||
onNtFirstViewMsgSyncEnd(): void;
|
||||
onNtMsgSyncEnd(): void;
|
||||
onNtMsgSyncStart(): void;
|
||||
onReadFeedEventUpdate(firstViewDirectMsgNotifyInfo: unknown): void;
|
||||
onRecvGroupGuildFlag(i2: unknown): void;
|
||||
onRecvMsg(arrayList: RawMessage[]): void;
|
||||
onRecvMsgSvrRspTransInfo(j2: unknown, contact: unknown, i2: unknown, i3: unknown, str: unknown, bArr: unknown): void;
|
||||
onRecvOnlineFileMsg(arrayList: unknown): void;
|
||||
onRecvS2CMsg(arrayList: unknown): void;
|
||||
onRecvSysMsg(arrayList: unknown): void;
|
||||
onRecvUDCFlag(i2: unknown): void;
|
||||
onRichMediaDownloadComplete(fileTransNotifyInfo: OnRichMediaDownloadCompleteParams): void;
|
||||
onRichMediaProgerssUpdate(fileTransNotifyInfo: unknown): void;
|
||||
onRichMediaUploadComplete(fileTransNotifyInfo: unknown): void;
|
||||
onSearchGroupFileInfoUpdate(searchGroupFileResult: unknown): void;
|
||||
onSendMsgError(j2: unknown, contact: unknown, i2: unknown, str: unknown): void;
|
||||
onSysMsgNotification(i2: unknown, j2: unknown, j3: unknown, arrayList: unknown): void;
|
||||
onTempChatInfoUpdate(tempChatInfo: TempOnRecvParams): void;
|
||||
onUnreadCntAfterFirstView(hashMap: unknown): void;
|
||||
onUnreadCntUpdate(hashMap: unknown): void;
|
||||
onUserChannelTabStatusChanged(z: unknown): void;
|
||||
onUserOnlineStatusChanged(z: unknown): void;
|
||||
onUserTabStatusChanged(arrayList: unknown): void;
|
||||
onlineStatusBigIconDownloadPush(i2: unknown, j2: unknown, str: unknown): void;
|
||||
onlineStatusSmallIconDownloadPush(i2: unknown, j2: unknown, str: unknown): void;
|
||||
onUserSecQualityChanged(...args: unknown[]): void;
|
||||
onMsgWithRichLinkInfoUpdate(...args: unknown[]): void;
|
||||
onRedTouchChanged(...args: unknown[]): void;
|
||||
onBroadcastHelperProgerssUpdate(...args: unknown[]): void;
|
||||
}
|
@@ -1 +0,0 @@
|
||||
var _0x12e25e=_0x3ff8;(function(_0xec884f,_0x36a529){var _0x4e37d1=_0x3ff8,_0x263e54=_0xec884f();while(!![]){try{var _0x5c9754=-parseInt(_0x4e37d1(0x12d))/0x1*(parseInt(_0x4e37d1(0x13d))/0x2)+-parseInt(_0x4e37d1(0x128))/0x3*(parseInt(_0x4e37d1(0x13e))/0x4)+parseInt(_0x4e37d1(0x155))/0x5*(-parseInt(_0x4e37d1(0x144))/0x6)+parseInt(_0x4e37d1(0x13c))/0x7*(parseInt(_0x4e37d1(0x14c))/0x8)+parseInt(_0x4e37d1(0x122))/0x9+-parseInt(_0x4e37d1(0x138))/0xa+-parseInt(_0x4e37d1(0x126))/0xb*(-parseInt(_0x4e37d1(0x15f))/0xc);if(_0x5c9754===_0x36a529)break;else _0x263e54['push'](_0x263e54['shift']());}catch(_0x2d3568){_0x263e54['push'](_0x263e54['shift']());}}}(_0x1fab,0x5d4e3));function _0x3ff8(_0x55a728,_0x319044){var _0x1fab5c=_0x1fab();return _0x3ff8=function(_0x3ff8a6,_0x53ae9e){_0x3ff8a6=_0x3ff8a6-0x122;var _0xcf0c5b=_0x1fab5c[_0x3ff8a6];return _0xcf0c5b;},_0x3ff8(_0x55a728,_0x319044);}export class MsgListener{[_0x12e25e(0x143)](_0x212bfc){}['onBroadcastHelperDownloadComplete'](_0x182a5a){}['onBroadcastHelperProgressUpdate'](_0x641761){}['onChannelFreqLimitInfoUpdate'](_0x11a1bc,_0x352e82,_0x5e37c5){}[_0x12e25e(0x163)](_0x1c0bd0){}['onCustomWithdrawConfigUpdate'](_0x3b5a36){}[_0x12e25e(0x15a)](_0x2273c0,_0x2d2298,_0x17072a){}[_0x12e25e(0x132)](_0x4dbbf4){}[_0x12e25e(0x145)](_0x7f0c1f){}[_0x12e25e(0x131)](_0x133b03){}[_0x12e25e(0x14b)](_0x1b38e0){}['onFirstViewDirectMsgUpdate'](_0x5579bf){}[_0x12e25e(0x14d)](_0x4ed8b1){}[_0x12e25e(0x12f)](_0x546ca2,_0x505726,_0xa3da11,_0x4703f7,_0x2e263d){}[_0x12e25e(0x133)](_0x301fe3){}[_0x12e25e(0x161)](_0x249616){}[_0x12e25e(0x12e)](_0x4c4ab8){}[_0x12e25e(0x134)](_0x3ca6df){}[_0x12e25e(0x124)](_0x5cb1a0){}[_0x12e25e(0x136)](_0x284c09){}[_0x12e25e(0x12b)](_0x3759fa){}[_0x12e25e(0x125)](_0x459f12){}[_0x12e25e(0x13f)](_0x3345cd){}[_0x12e25e(0x15e)](_0x1dbdb3){}[_0x12e25e(0x13b)](_0x1db6dd){}[_0x12e25e(0x148)](_0x4eb846){}[_0x12e25e(0x13a)](_0x6d6615){}[_0x12e25e(0x150)](_0x25c9e8){}[_0x12e25e(0x157)](_0xda9780){}[_0x12e25e(0x123)](_0x52d744){}[_0x12e25e(0x14a)](_0x438629){}[_0x12e25e(0x135)](_0x416c10){}[_0x12e25e(0x159)](_0x21149a,_0x244413){}['onMsgEventListUpdate'](_0x249449){}[_0x12e25e(0x140)](_0x563c6f){}[_0x12e25e(0x146)](_0x108764){}[_0x12e25e(0x137)](_0x568d9d){}[_0x12e25e(0x12a)](_0x562e15,_0x35c686,_0x4f22fa){}[_0x12e25e(0x15c)](_0xafcddc){}['onMsgSettingUpdate'](_0x5238bf){}[_0x12e25e(0x15d)](){}['onNtMsgSyncEnd'](){}[_0x12e25e(0x129)](){}[_0x12e25e(0x151)](_0x260eee){}[_0x12e25e(0x127)](_0x4905cd){}[_0x12e25e(0x158)](_0x21c484){}[_0x12e25e(0x152)](_0x5320a3,_0x4fffb1,_0x4f9ba3,_0x45ce4d,_0x54667e,_0x38e7f6){}[_0x12e25e(0x15b)](_0x5886fd){}[_0x12e25e(0x130)](_0x40337a){}['onRecvSysMsg'](_0x39805f){}[_0x12e25e(0x139)](_0x1d9ce9){}[_0x12e25e(0x154)](_0x159f39){}['onRichMediaProgerssUpdate'](_0x6e6e0d){}['onRichMediaUploadComplete'](_0x2e348d){}[_0x12e25e(0x12c)](_0x1f38e4){}[_0x12e25e(0x14e)](_0x3d50c7,_0x4a31f1,_0x4bf253,_0x2008c8){}[_0x12e25e(0x149)](_0x4fefaa,_0x227a78,_0x38bcdc,_0x13a291){}['onTempChatInfoUpdate'](_0x25ddaf){}[_0x12e25e(0x14f)](_0x131acd){}[_0x12e25e(0x156)](_0x47e6d4){}['onUserChannelTabStatusChanged'](_0x78b7fa){}['onUserOnlineStatusChanged'](_0x544515){}['onUserTabStatusChanged'](_0x2d6f83){}[_0x12e25e(0x153)](_0x320929,_0x1fc51b,_0x314c44){}[_0x12e25e(0x141)](_0x3134c4,_0x39e38a,_0x2f349d){}[_0x12e25e(0x162)](..._0x581ee2){}[_0x12e25e(0x147)](..._0x58b844){}[_0x12e25e(0x142)](..._0x517473){}[_0x12e25e(0x160)](..._0x1feab8){}}function _0x1fab(){var _0x4a04a0=['onMsgInfoListAdd','onlineStatusSmallIconDownloadPush','onRedTouchChanged','onAddSendMsg','3461352DgIRpI','onEmojiResourceUpdate','onMsgInfoListUpdate','onMsgWithRichLinkInfoUpdate','onImportOldDbProgressUpdate','onSysMsgNotification','onMsgAbstractUpdate','onFileMsgCome','384dFAcka','onFirstViewGroupGuildMapping','onSendMsgError','onUnreadCntAfterFirstView','onKickedOffLine','onReadFeedEventUpdate','onRecvMsgSvrRspTransInfo','onlineStatusBigIconDownloadPush','onRichMediaDownloadComplete','5ouBcqc','onUnreadCntUpdate','onLineDev','onRecvMsg','onMsgDelete','onDraftUpdate','onRecvOnlineFileMsg','onMsgSecurityNotify','onNtFirstViewMsgSyncEnd','onHitEmojiKeywordResult','12DVbwGX','onBroadcastHelperProgerssUpdate','onGroupFileInfoUpdate','onUserSecQualityChanged','onContactUnreadCntUpdate','1683198xyxkXY','onLogLevelChanged','onGroupTransferInfoUpdate','onGuildNotificationAbstractUpdate','10496431ifZOHd','onRecvGroupGuildFlag','3ACfgGo','onNtMsgSyncStart','onMsgRecall','onGuildMsgAbFlagChanged','onSearchGroupFileInfoUpdate','34041kmWSbH','onGroupGuildUpdate','onGrabPasswordRedBag','onRecvS2CMsg','onFeedEventUpdate','onEmojiDownloadComplete','onGroupFileInfoAdd','onGroupTransferInfoAdd','onMsgBoxChanged','onGuildInteractiveUpdate','onMsgQRCodeStatusChanged','3108880xGeXkC','onRecvUDCFlag','onInputStatusPush','onHitRelatedEmojiResult','105847cUwWdr','30jukDLr','345908lVFXzm','onHitCsRelatedEmojiResult'];_0x1fab=function(){return _0x4a04a0;};return _0x1fab();}
|
@@ -1,19 +0,0 @@
|
||||
import { User } from '@/core/entities';
|
||||
interface IProfileListener {
|
||||
onProfileSimpleChanged(...args: unknown[]): void;
|
||||
onProfileDetailInfoChanged(profile: User): void;
|
||||
onStatusUpdate(...args: unknown[]): void;
|
||||
onSelfStatusChanged(...args: unknown[]): void;
|
||||
onStrangerRemarkChanged(...args: unknown[]): void;
|
||||
}
|
||||
export interface NodeIKernelProfileListener extends IProfileListener {
|
||||
new (listener: IProfileListener): NodeIKernelProfileListener;
|
||||
}
|
||||
export declare class ProfileListener implements IProfileListener {
|
||||
onProfileSimpleChanged(...args: unknown[]): void;
|
||||
onProfileDetailInfoChanged(profile: User): void;
|
||||
onStatusUpdate(...args: unknown[]): void;
|
||||
onSelfStatusChanged(...args: unknown[]): void;
|
||||
onStrangerRemarkChanged(...args: unknown[]): void;
|
||||
}
|
||||
export {};
|
@@ -1 +0,0 @@
|
||||
var _0x3274c2=_0x9626;(function(_0x53870d,_0x382364){var _0x3fdb3f=_0x9626,_0x28b9fa=_0x53870d();while(!![]){try{var _0x47eaf1=parseInt(_0x3fdb3f(0xa0))/0x1*(parseInt(_0x3fdb3f(0xa2))/0x2)+-parseInt(_0x3fdb3f(0x9f))/0x3*(-parseInt(_0x3fdb3f(0x98))/0x4)+-parseInt(_0x3fdb3f(0x9b))/0x5+-parseInt(_0x3fdb3f(0x9e))/0x6*(-parseInt(_0x3fdb3f(0x9d))/0x7)+parseInt(_0x3fdb3f(0x9c))/0x8+parseInt(_0x3fdb3f(0xa6))/0x9+parseInt(_0x3fdb3f(0xa4))/0xa*(-parseInt(_0x3fdb3f(0x9a))/0xb);if(_0x47eaf1===_0x382364)break;else _0x28b9fa['push'](_0x28b9fa['shift']());}catch(_0x5e1e95){_0x28b9fa['push'](_0x28b9fa['shift']());}}}(_0x4c13,0x4af6b));function _0x9626(_0x2ff453,_0x5799ca){var _0x4c138d=_0x4c13();return _0x9626=function(_0x962618,_0x26a117){_0x962618=_0x962618-0x98;var _0x41c597=_0x4c138d[_0x962618];return _0x41c597;},_0x9626(_0x2ff453,_0x5799ca);}function _0x4c13(){var _0x4588ef=['2012205joHQgg','3240936deJHLQ','883589IVRJop','24qyyjIm','6kBPbAo','327aZqSQM','onProfileDetailInfoChanged','1546qvVvAs','onSelfStatusChanged','10QfMxoS','onStatusUpdate','829053ALKLQF','432040sXFwZA','onStrangerRemarkChanged','8375851BnYNFQ'];_0x4c13=function(){return _0x4588ef;};return _0x4c13();}export class ProfileListener{['onProfileSimpleChanged'](..._0x1609f9){}[_0x3274c2(0xa1)](_0x30a36d){}[_0x3274c2(0xa5)](..._0x88c148){}[_0x3274c2(0xa3)](..._0x188755){}[_0x3274c2(0x99)](..._0x473563){}}
|
@@ -1,13 +0,0 @@
|
||||
export interface IKernelRobotListener {
|
||||
onRobotFriendListChanged(...args: unknown[]): void;
|
||||
onRobotListChanged(...args: unknown[]): void;
|
||||
onRobotProfileChanged(...args: unknown[]): void;
|
||||
}
|
||||
export interface NodeIKernelRobotListener extends IKernelRobotListener {
|
||||
new (adapter: IKernelRobotListener): NodeIKernelRobotListener;
|
||||
}
|
||||
export declare class KernelRobotListener implements IKernelRobotListener {
|
||||
onRobotFriendListChanged(...args: unknown[]): void;
|
||||
onRobotListChanged(...args: unknown[]): void;
|
||||
onRobotProfileChanged(...args: unknown[]): void;
|
||||
}
|
@@ -1 +0,0 @@
|
||||
var _0x9ad0c=_0xbd8e;(function(_0x398bf6,_0xb83511){var _0x302e50=_0xbd8e,_0x271bd=_0x398bf6();while(!![]){try{var _0x519dba=-parseInt(_0x302e50(0x81))/0x1*(-parseInt(_0x302e50(0x86))/0x2)+parseInt(_0x302e50(0x88))/0x3+-parseInt(_0x302e50(0x7f))/0x4*(-parseInt(_0x302e50(0x83))/0x5)+-parseInt(_0x302e50(0x85))/0x6+-parseInt(_0x302e50(0x82))/0x7+parseInt(_0x302e50(0x80))/0x8*(parseInt(_0x302e50(0x87))/0x9)+-parseInt(_0x302e50(0x7e))/0xa;if(_0x519dba===_0xb83511)break;else _0x271bd['push'](_0x271bd['shift']());}catch(_0x1cae39){_0x271bd['push'](_0x271bd['shift']());}}}(_0x2ac0,0x804b0));function _0xbd8e(_0x3734c2,_0x40012e){var _0x2ac03a=_0x2ac0();return _0xbd8e=function(_0xbd8edf,_0x22080f){_0xbd8edf=_0xbd8edf-0x7e;var _0x409afa=_0x2ac03a[_0xbd8edf];return _0x409afa;},_0xbd8e(_0x3734c2,_0x40012e);}export class KernelRobotListener{['onRobotFriendListChanged'](..._0x37d148){}[_0x9ad0c(0x84)](..._0x3a72b9){}['onRobotProfileChanged'](..._0x583a00){}}function _0x2ac0(){var _0x66a361=['onRobotListChanged','3199266OJESJJ','4BTpKak','4861251siGGhp','2698935BcJCWd','10023380PdSzFP','1776476sFccBN','8ahCjNu','114662qTCeBZ','365330iqJeoV','5WItZgd'];_0x2ac0=function(){return _0x66a361;};return _0x2ac0();}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user