mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
Compare commits
69 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
bdea2d02a9 | ||
![]() |
c4307481f1 | ||
![]() |
b8ac1b28bd | ||
![]() |
24038cda95 | ||
![]() |
86c82e9608 | ||
![]() |
daab5d150b | ||
![]() |
9ff82bdb90 | ||
![]() |
c6d70ef1cf | ||
![]() |
15d4bb3c76 | ||
![]() |
3e698981fd | ||
![]() |
9d45c934a5 | ||
![]() |
c2bf9cf93e | ||
![]() |
b3c6fd7f26 | ||
![]() |
ccd155de71 | ||
![]() |
1f90d2e46b | ||
![]() |
4c5d974c22 | ||
![]() |
392eda1cbc | ||
![]() |
a9da3279e8 | ||
![]() |
1ce8351180 | ||
![]() |
96c334478a | ||
![]() |
f1b0875b05 | ||
![]() |
cea9e11c83 | ||
![]() |
f098b39200 | ||
![]() |
012d948b59 | ||
![]() |
3334cd0a71 | ||
![]() |
d63d53fd88 | ||
![]() |
a7fa39b2fd | ||
![]() |
40bb42e193 | ||
![]() |
9c382c639b | ||
![]() |
a43cde38f1 | ||
![]() |
c35d2e08cd | ||
![]() |
3377c383c1 | ||
![]() |
c00e6d95cd | ||
![]() |
725fccf4ed | ||
![]() |
13129bd219 | ||
![]() |
4561977bcf | ||
![]() |
40be8a91f5 | ||
![]() |
2a04d5830b | ||
![]() |
82a38574f3 | ||
![]() |
fea3a33c2b | ||
![]() |
9a502cdf6f | ||
![]() |
4b616299cf | ||
![]() |
102243e064 | ||
![]() |
4b21ac5ebe | ||
![]() |
4dd7363dd3 | ||
![]() |
3d5e5ab78f | ||
![]() |
73045a1b21 | ||
![]() |
871173a7cf | ||
![]() |
0002313093 | ||
![]() |
948cf5cca6 | ||
![]() |
d40230879c | ||
![]() |
ab22b775f1 | ||
![]() |
42c85224ba | ||
![]() |
e57444a353 | ||
![]() |
3c6503d495 | ||
![]() |
149b518f48 | ||
![]() |
74621447ff | ||
![]() |
3280952931 | ||
![]() |
9e670e2736 | ||
![]() |
9fc6347a2f | ||
![]() |
ec7a15a192 | ||
![]() |
7f99982810 | ||
![]() |
935d83aaf8 | ||
![]() |
0ff6edd546 | ||
![]() |
94f629585a | ||
![]() |
89c04be02f | ||
![]() |
3151965ea8 | ||
![]() |
bdf5159be1 | ||
![]() |
0499ebbea3 |
15
docs/changelogs/CHANGELOG.v1.5.3.md
Normal file
15
docs/changelogs/CHANGELOG.v1.5.3.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# v1.5.3
|
||||
|
||||
QQ Version: Windows 9.9.11-24568 / Linux 3.2.9-23568
|
||||
|
||||
## 修复与优化
|
||||
* 修复引用消息id问题
|
||||
* 修复添加好友的通知
|
||||
|
||||
## 新增与调整
|
||||
* 扩展群分享Json生成
|
||||
* 扩展关于收藏的一系列接口
|
||||
* 支持专属群头衔获取
|
||||
* 支持视频获取直链
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
@@ -1,10 +1,10 @@
|
||||
# v1.4.4
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 更新
|
||||
* **重大更新:**更新了版本号
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
||||
|
||||
# v1.4.4
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 更新
|
||||
* **重大更新:**更新了版本号
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
||||
|
@@ -1,12 +1,12 @@
|
||||
# v1.4.5
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 修复与优化
|
||||
* 紧急修复二维扫码问题
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
||||
|
||||
# v1.4.5
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 修复与优化
|
||||
* 紧急修复二维扫码问题
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
||||
|
@@ -1,12 +1,12 @@
|
||||
# v1.4.6
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 修复与优化
|
||||
* 优化整体稳定性
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
||||
|
||||
# v1.4.6
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 修复与优化
|
||||
* 优化整体稳定性
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
||||
|
11
docs/changelogs/old/CHANGELOG.v1.4.7.md
Normal file
11
docs/changelogs/old/CHANGELOG.v1.4.7.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# v1.4.7
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 修复与优化
|
||||
* 临时扩展 Api: GoCQHTTPUploadGroupFile folder_id字段 用于选择文件夹
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
12
docs/changelogs/old/CHANGELOG.v1.4.8.md
Normal file
12
docs/changelogs/old/CHANGELOG.v1.4.8.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# v1.4.8
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 修复与优化
|
||||
* 优化Guid的生成方式
|
||||
* 支持临时消息获取群来源
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
11
docs/changelogs/old/CHANGELOG.v1.4.9.md
Normal file
11
docs/changelogs/old/CHANGELOG.v1.4.9.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# v1.4.9
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 修复与优化
|
||||
* 修复接口调用问题 接口标准化 API:set_group_add_request
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
11
docs/changelogs/old/CHANGELOG.v1.5.0.md
Normal file
11
docs/changelogs/old/CHANGELOG.v1.5.0.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# v1.5.0
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 修复与优化
|
||||
* 修正各Api默认值
|
||||
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
12
docs/changelogs/old/CHANGELOG.v1.5.1.md
Normal file
12
docs/changelogs/old/CHANGELOG.v1.5.1.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# v1.5.1
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 修复与优化
|
||||
* 支持 新Api: set_self_profile 可设置个性签名
|
||||
* 修复 Api: get_group_system_msg
|
||||
* 整理日志、添加颜色、使用统一的日志函数以提高日志可读性
|
||||
## 新增与调整
|
||||
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
13
docs/changelogs/old/CHANGELOG.v1.5.2.md
Normal file
13
docs/changelogs/old/CHANGELOG.v1.5.2.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# v1.5.2
|
||||
|
||||
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
|
||||
|
||||
## 修复与优化
|
||||
* 替换Uid/Uin为内部实现
|
||||
* 增加HttpApi调用稳定性
|
||||
* 修复 GetMsg 兼容性
|
||||
|
||||
## 新增与调整
|
||||
* 支持真正意义上的陌生人信息获取 Api: GoCQHTTP_GetStrangerInfo
|
||||
|
||||
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)
|
2
docs/develop/Android.md
Normal file
2
docs/develop/Android.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# 开始
|
||||
jadx 跳转于 `com.tencent.qqnt.kernel.*`
|
42
docs/develop/GetMemberExt.md
Normal file
42
docs/develop/GetMemberExt.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# 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
|
||||
```
|
444
docs/develop/Msg常量NTAndroid.md
Normal file
444
docs/develop/Msg常量NTAndroid.md
Normal file
@@ -0,0 +1,444 @@
|
||||
```java
|
||||
MsgConstant
|
||||
int ARKSTRUCTELEMENTSUBTYPETENCENTDOCFROMMINIAPP = 1;
|
||||
int ARKSTRUCTELEMENTSUBTYPETENCENTDOCFROMPLUSPANEL = 2;
|
||||
int ARKSTRUCTELEMENTSUBTYPEUNKNOWN = 0;
|
||||
int ATTYPEALL = 1;
|
||||
int ATTYPECATEGORY = 512;
|
||||
int ATTYPECHANNEL = 16;
|
||||
int ATTYPEME = 4;
|
||||
int ATTYPEONE = 2;
|
||||
int ATTYPEONLINE = 64;
|
||||
int ATTYPEROLE = 8;
|
||||
int ATTYPESUMMON = 32;
|
||||
int ATTYPESUMMONONLINE = 128;
|
||||
int ATTYPESUMMONROLE = 256;
|
||||
int ATTYPEUNKNOWN = 0;
|
||||
int CALENDARELEMSUBTYPECOMMON = 3;
|
||||
int CALENDARELEMSUBTYPESTRONG = 1;
|
||||
int CALENDARELEMSUBTYPEUNKNOWN = 0;
|
||||
int CALENDARELEMSUBTYPEWEAK = 2;
|
||||
int FACEBUBBLEELEMSUBTYPENORMAL = 1;
|
||||
int FACEBUBBLEELEMSUBTYPEUNKNOWN = 0;
|
||||
int FETCHLONGMSGERRCODEMSGEXPIRED = 196;
|
||||
int FILEELEMENTSUBTYPEAI = 16;
|
||||
int FILEELEMENTSUBTYPEAPP = 11;
|
||||
int FILEELEMENTSUBTYPEAUDIO = 3;
|
||||
int FILEELEMENTSUBTYPEDOC = 4;
|
||||
int FILEELEMENTSUBTYPEEMOTICON = 15;
|
||||
int FILEELEMENTSUBTYPEEXCEL = 6;
|
||||
int FILEELEMENTSUBTYPEFOLDER = 13;
|
||||
int FILEELEMENTSUBTYPEHTML = 10;
|
||||
int FILEELEMENTSUBTYPEIPA = 14;
|
||||
int FILEELEMENTSUBTYPENORMAL = 0;
|
||||
int FILEELEMENTSUBTYPEPDF = 7;
|
||||
int FILEELEMENTSUBTYPEPIC = 1;
|
||||
int FILEELEMENTSUBTYPEPPT = 5;
|
||||
int FILEELEMENTSUBTYPEPSD = 12;
|
||||
int FILEELEMENTSUBTYPETXT = 8;
|
||||
int FILEELEMENTSUBTYPEVIDEO = 2;
|
||||
int FILEELEMENTSUBTYPEZIP = 9;
|
||||
int GRAYTIPELEMENTSUBTYPEAIOOP = 15;
|
||||
int GRAYTIPELEMENTSUBTYPEBLOCK = 14;
|
||||
int GRAYTIPELEMENTSUBTYPEBUDDY = 5;
|
||||
int GRAYTIPELEMENTSUBTYPEBUDDYNOTIFY = 9;
|
||||
int GRAYTIPELEMENTSUBTYPEEMOJIREPLY = 3;
|
||||
int GRAYTIPELEMENTSUBTYPEESSENCE = 7;
|
||||
int GRAYTIPELEMENTSUBTYPEFEED = 6;
|
||||
int GRAYTIPELEMENTSUBTYPEFEEDCHANNELMSG = 11;
|
||||
int GRAYTIPELEMENTSUBTYPEFILE = 10;
|
||||
int GRAYTIPELEMENTSUBTYPEGROUP = 4;
|
||||
int GRAYTIPELEMENTSUBTYPEGROUPNOTIFY = 8;
|
||||
int GRAYTIPELEMENTSUBTYPEJSON = 17;
|
||||
int GRAYTIPELEMENTSUBTYPELOCALMSG = 13;
|
||||
int GRAYTIPELEMENTSUBTYPEPROCLAMATION = 2;
|
||||
int GRAYTIPELEMENTSUBTYPEREVOKE = 1;
|
||||
int GRAYTIPELEMENTSUBTYPEUNKNOWN = 0;
|
||||
int GRAYTIPELEMENTSUBTYPEWALLET = 16;
|
||||
int GRAYTIPELEMENTSUBTYPEXMLMSG = 12;
|
||||
int INLINEKEYBOARDBUTTONRENDERSTYLEBLUEBLACKGROUND = 4;
|
||||
int INLINEKEYBOARDBUTTONRENDERSTYLEBLUEBORDER = 1;
|
||||
int INLINEKEYBOARDBUTTONRENDERSTYLEGRAYBORDER = 0;
|
||||
int INLINEKEYBOARDBUTTONRENDERSTYLENOBORDER = 2;
|
||||
int INLINEKEYBOARDBUTTONRENDERSTYLEREDCHARACTER = 3;
|
||||
int INPUTSTATUSTYPECANCEL = 2;
|
||||
int INPUTSTATUSTYPESPEAK = 3;
|
||||
int INPUTSTATUSTYPETEXT = 1;
|
||||
int KACTIVITYMSG = 22;
|
||||
int KADDLOCALMSGEXTINFOTYPEPROLOGUEMSG = 1;
|
||||
int KANONYMOUSATMEMSGTYPEINMSGBOX = 1001;
|
||||
int KANONYMOUSFLAGFROMOTHERPEOPLE = 1;
|
||||
int KANONYMOUSFLAGFROMOWN = 2;
|
||||
int KANONYMOUSFLAGINVALID = 0;
|
||||
int KAPPCHANNELMSG = 16;
|
||||
int KATALLMSGTYPEINMSGBOX = 2000;
|
||||
int KATMEMSGTYPEINMSGBOX = 1000;
|
||||
int KATTRIBUTETYPEADELIEMSG = 16;
|
||||
int KATTRIBUTETYPEEXTENDBUSINESS = 13;
|
||||
int KATTRIBUTETYPEFEEDBACKSTATE = 17;
|
||||
int KATTRIBUTETYPEGROUPHONOR = 2;
|
||||
int KATTRIBUTETYPEKINGHONOR = 3;
|
||||
int KATTRIBUTETYPELONGMSG = 8;
|
||||
int KATTRIBUTETYPEMEMORYSTATEMSGINFO = 18;
|
||||
int KATTRIBUTETYPEMSG = 0;
|
||||
int KATTRIBUTETYPEMSGBOXEVENTTYPE = 14;
|
||||
int KATTRIBUTETYPEPERSONAL = 1;
|
||||
int KATTRIBUTETYPEPUBLICACCOUNT = 4;
|
||||
int KATTRIBUTETYPEQQCONNECT = 12;
|
||||
int KATTRIBUTETYPESENDMSGRSPTRANSSVRINFO = 15;
|
||||
int KATTRIBUTETYPESHAREDMSGINFO = 5;
|
||||
int KATTRIBUTETYPETEMPCHATGAMESESSION = 6;
|
||||
int KATTRIBUTETYPETOROBOTMSG = 9;
|
||||
int KATTRIBUTETYPEUININFO = 7;
|
||||
int KATTRIBUTETYPEZPLAN = 11;
|
||||
int KAUTOREPLYTEXTNONEINDEX = -1;
|
||||
int KAVRECORDMSG = 19;
|
||||
int KBUSINESSTYPGUILD = 1;
|
||||
int KBUSINESSTYPNT = 0;
|
||||
int KCHATTYPEADELIE = 42;
|
||||
int KCHATTYPEBUDDYNOTIFY = 5;
|
||||
int KCHATTYPEC2C = 1;
|
||||
int KCHATTYPECIRCLE = 113;
|
||||
int KCHATTYPEDATALINE = 8;
|
||||
int KCHATTYPEDATALINEMQQ = 134;
|
||||
int KCHATTYPEDISC = 3;
|
||||
int KCHATTYPEFAV = 41;
|
||||
int KCHATTYPEGAMEMESSAGE = 105;
|
||||
int KCHATTYPEGAMEMESSAGEFOLDER = 116;
|
||||
int KCHATTYPEGROUP = 2;
|
||||
int KCHATTYPEGROUPBLESS = 133;
|
||||
int KCHATTYPEGROUPGUILD = 9;
|
||||
int KCHATTYPEGROUPHELPER = 7;
|
||||
int KCHATTYPEGROUPNOTIFY = 6;
|
||||
int KCHATTYPEGUILD = 4;
|
||||
int KCHATTYPEGUILDMETA = 16;
|
||||
int KCHATTYPEMATCHFRIEND = 104;
|
||||
int KCHATTYPEMATCHFRIENDFOLDER = 109;
|
||||
int KCHATTYPENEARBY = 106;
|
||||
int KCHATTYPENEARBYASSISTANT = 107;
|
||||
int KCHATTYPENEARBYFOLDER = 110;
|
||||
int KCHATTYPENEARBYHELLOFOLDER = 112;
|
||||
int KCHATTYPENEARBYINTERACT = 108;
|
||||
int KCHATTYPEQQNOTIFY = 132;
|
||||
int KCHATTYPERELATEACCOUNT = 131;
|
||||
int KCHATTYPESERVICEASSISTANT = 118;
|
||||
int KCHATTYPESERVICEASSISTANTSUB = 201;
|
||||
int KCHATTYPESQUAREPUBLIC = 115;
|
||||
int KCHATTYPESUBSCRIBEFOLDER = 30;
|
||||
int KCHATTYPETEMPADDRESSBOOK = 111;
|
||||
int KCHATTYPETEMPBUSSINESSCRM = 102;
|
||||
int KCHATTYPETEMPC2CFROMGROUP = 100;
|
||||
int KCHATTYPETEMPC2CFROMUNKNOWN = 99;
|
||||
int KCHATTYPETEMPFRIENDVERIFY = 101;
|
||||
int KCHATTYPETEMPNEARBYPRO = 119;
|
||||
int KCHATTYPETEMPPUBLICACCOUNT = 103;
|
||||
int KCHATTYPETEMPWPA = 117;
|
||||
int KCHATTYPEUNKNOWN = 0;
|
||||
int KCHATTYPEWEIYUN = 40;
|
||||
int KCOMMONREDENVELOPEMSGTYPEINMSGBOX = 1007;
|
||||
int KDOWNSOURCETYPEAIOINNER = 1;
|
||||
int KDOWNSOURCETYPEBIGSCREEN = 2;
|
||||
int KDOWNSOURCETYPEHISTORY = 3;
|
||||
int KDOWNSOURCETYPEUNKNOWN = 0;
|
||||
int KELEMTYPEACTIVITY = 25;
|
||||
int KELEMTYPEACTIVITYSTATE = 41;
|
||||
int KELEMTYPEACTIVITYSUBTYPECREATEMOBATEAM = 12;
|
||||
int KELEMTYPEACTIVITYSUBTYPEDISBANDMOBATEAM = 11;
|
||||
int KELEMTYPEACTIVITYSUBTYPEFEEDSQUARE = 10001;
|
||||
int KELEMTYPEACTIVITYSUBTYPEFINISHGAME = 16;
|
||||
int KELEMTYPEACTIVITYSUBTYPEFINISHMATCHTEAM = 14;
|
||||
int KELEMTYPEACTIVITYSUBTYPEHOTCHAT = 10000;
|
||||
int KELEMTYPEACTIVITYSUBTYPEMINIGAME = 18;
|
||||
int KELEMTYPEACTIVITYSUBTYPEMUSICPLAY = 17;
|
||||
int KELEMTYPEACTIVITYSUBTYPENEWSMOBA = 9;
|
||||
int KELEMTYPEACTIVITYSUBTYPENOLIVE = 2;
|
||||
int KELEMTYPEACTIVITYSUBTYPENOSCREENSHARE = 7;
|
||||
int KELEMTYPEACTIVITYSUBTYPENOVOICE = 3;
|
||||
int KELEMTYPEACTIVITYSUBTYPEONLIVE = 1;
|
||||
int KELEMTYPEACTIVITYSUBTYPEONSCREENSHARE = 6;
|
||||
int KELEMTYPEACTIVITYSUBTYPEONVOICE = 4;
|
||||
int KELEMTYPEACTIVITYSUBTYPESTARTMATCHTEAM = 13;
|
||||
int KELEMTYPEACTIVITYSUBTYPETARTGAME = 15;
|
||||
int KELEMTYPEACTIVITYSUBTYPEUNKNOWN = 0;
|
||||
int KELEMTYPEADELIEACTIONBAR = 44;
|
||||
int KELEMTYPEADELIERECOMMENDEDMSG = 43;
|
||||
int KELEMTYPEARKSTRUCT = 10;
|
||||
int KELEMTYPEAVRECORD = 21;
|
||||
int KELEMTYPECALENDAR = 19;
|
||||
int KELEMTYPEFACE = 6;
|
||||
int KELEMTYPEFACEBUBBLE = 27;
|
||||
int KELEMTYPEFEED = 22;
|
||||
int KELEMTYPEFILE = 3;
|
||||
int KELEMTYPEGIPHY = 15;
|
||||
int KELEMTYPEGRAYTIP = 8;
|
||||
int KELEMTYPEINLINEKEYBOARD = 17;
|
||||
int KELEMTYPEINTEXTGIFT = 18;
|
||||
int KELEMTYPELIVEGIFT = 12;
|
||||
int KELEMTYPEMARKDOWN = 14;
|
||||
int KELEMTYPEMARKETFACE = 11;
|
||||
int KELEMTYPEMULTIFORWARD = 16;
|
||||
int KELEMTYPEONLINEFILE = 23;
|
||||
int KELEMTYPEPIC = 2;
|
||||
int KELEMTYPEPROLOGUE = 46;
|
||||
int KELEMTYPEPTT = 4;
|
||||
int KELEMTYPEREPLY = 7;
|
||||
int KELEMTYPESHARELOCATION = 28;
|
||||
int KELEMTYPESTRUCTLONGMSG = 13;
|
||||
int KELEMTYPETASKTOPMSG = 29;
|
||||
int KELEMTYPETEXT = 1;
|
||||
int KELEMTYPETOFU = 26;
|
||||
int KELEMTYPEUNKNOWN = 0;
|
||||
int KELEMTYPEVIDEO = 5;
|
||||
int KELEMTYPEWALLET = 9;
|
||||
int KELEMTYPEYOLOGAMERESULT = 20;
|
||||
int KENTERAIO = 1;
|
||||
int KEXITAIO = 2;
|
||||
int KFEEDBACKBUTTONTYPEDISLIKE = 2;
|
||||
int KFEEDBACKBUTTONTYPELIKE = 1;
|
||||
int KFEEDBACKBUTTONTYPEPROMPTCLICK = 5;
|
||||
int KFEEDBACKBUTTONTYPEREGENERATE = 4;
|
||||
int KFEEDBACKBUTTONTYPEUNKNOWN = 0;
|
||||
int KFEEDBACKOPTLIKE = 1;
|
||||
int KFEEDBACKOPTUNKNOWN = 0;
|
||||
int KFEEDBACKOPTUNLIKE = 2;
|
||||
int KFRIENDNEWADDEDMSGTYPEINMSGBOX = 1008;
|
||||
int KGAMEBOXNEWMSGTYPEINMSGBOX = 3000;
|
||||
int KGIFTATMEMSGTYPEINMSGBOX = 1005;
|
||||
int KGROUPFILEATALLMSGTYPEINMSGBOX = 2001;
|
||||
int KGROUPHOMEWORK = 20000;
|
||||
int KGROUPHOMEWORKTASK = 20001;
|
||||
int KGROUPKEYWORDMSGTYPEINMSGBOX = 2006;
|
||||
int KGROUPMANNOUNCEATALLMSGTYPEINMSGBOX = 2004;
|
||||
int KGROUPTASKATALLMSGTYPEINMSGBOX = 2003;
|
||||
int KGROUPUNREADTYPEINMSGBOX = 2007;
|
||||
int KGUILDCHANNELLIST = 10;
|
||||
int KHIGHLIGHTWORDINTEMPCHATTYPEINMSGBOX = 1009;
|
||||
int KHOMEWORKREMINDER = 10000;
|
||||
int KLIKEORDISLIKESTATEDISLIKE = 2;
|
||||
int KLIKEORDISLIKESTATELIKE = 1;
|
||||
int KLIKEORDISLIKESTATENONESELECTED = 0;
|
||||
int KMARKETFACE = 17;
|
||||
int KMEMORYSTATEMSGTYPEADELIEWELCOME = 1;
|
||||
int KMEMORYSTATEMSGTYPEUNKNOWN = 0;
|
||||
int KMINIPROGRAMNOTICE = 114;
|
||||
int KMSGSUBTYPEARKGROUPANNOUNCE = 3;
|
||||
int KMSGSUBTYPEARKGROUPANNOUNCECONFIRMREQUIRED = 4;
|
||||
int KMSGSUBTYPEARKGROUPGIFTATME = 5;
|
||||
int KMSGSUBTYPEARKGROUPTASKATALL = 6;
|
||||
int KMSGSUBTYPEARKMULTIMSG = 7;
|
||||
int KMSGSUBTYPEARKNORMAL = 0;
|
||||
int KMSGSUBTYPEARKTENCENTDOCFROMMINIAPP = 1;
|
||||
int KMSGSUBTYPEARKTENCENTDOCFROMPLUSPANEL = 2;
|
||||
int KMSGSUBTYPEEMOTICON = 15;
|
||||
int KMSGSUBTYPEFILEAPP = 11;
|
||||
int KMSGSUBTYPEFILEAUDIO = 3;
|
||||
int KMSGSUBTYPEFILEDOC = 4;
|
||||
int KMSGSUBTYPEFILEEXCEL = 6;
|
||||
int KMSGSUBTYPEFILEFOLDER = 13;
|
||||
int KMSGSUBTYPEFILEHTML = 10;
|
||||
int KMSGSUBTYPEFILEIPA = 14;
|
||||
int KMSGSUBTYPEFILENORMAL = 0;
|
||||
int KMSGSUBTYPEFILEPDF = 7;
|
||||
int KMSGSUBTYPEFILEPIC = 1;
|
||||
int KMSGSUBTYPEFILEPPT = 5;
|
||||
int KMSGSUBTYPEFILEPSD = 12;
|
||||
int KMSGSUBTYPEFILETXT = 8;
|
||||
int KMSGSUBTYPEFILEVIDEO = 2;
|
||||
int KMSGSUBTYPEFILEZIP = 9;
|
||||
int KMSGSUBTYPELINK = 5;
|
||||
int KMSGSUBTYPEMARKETFACE = 1;
|
||||
int KMSGSUBTYPEMIXEMOTICON = 7;
|
||||
int KMSGSUBTYPEMIXFACE = 3;
|
||||
int KMSGSUBTYPEMIXMARKETFACE = 2;
|
||||
int KMSGSUBTYPEMIXPIC = 1;
|
||||
int KMSGSUBTYPEMIXREPLY = 4;
|
||||
int KMSGSUBTYPEMIXTEXT = 0;
|
||||
int KMSGSUBTYPETENCENTDOC = 6;
|
||||
int KMSGTYPEARKSTRUCT = 11;
|
||||
int KMSGTYPEFACEBUBBLE = 24;
|
||||
int KMSGTYPEFILE = 3;
|
||||
int KMSGTYPEGIFT = 14;
|
||||
int KMSGTYPEGIPHY = 13;
|
||||
int KMSGTYPEGRAYTIPS = 5;
|
||||
int KMSGTYPEMIX = 2;
|
||||
int KMSGTYPEMULTIMSGFORWARD = 8;
|
||||
int KMSGTYPENULL = 1;
|
||||
int KMSGTYPEONLINEFILE = 21;
|
||||
int KMSGTYPEONLINEFOLDER = 27;
|
||||
int KMSGTYPEPROLOGUE = 29;
|
||||
int KMSGTYPEPTT = 6;
|
||||
int KMSGTYPEREPLY = 9;
|
||||
int KMSGTYPESHARELOCATION = 25;
|
||||
int KMSGTYPESTRUCT = 4;
|
||||
int KMSGTYPESTRUCTLONGMSG = 12;
|
||||
int KMSGTYPETEXTGIFT = 15;
|
||||
int KMSGTYPEUNKNOWN = 0;
|
||||
int KMSGTYPEVIDEO = 7;
|
||||
int KMSGTYPEWALLET = 10;
|
||||
int KNEEDCONFIRMGROUPMANNOUNCEATALLMSGTYPEINMSGBOX = 2005;
|
||||
int KNOTPASSTHROUGHEVENTTYPEUPPERBOUNDARY = 9999;
|
||||
int KPTTFORMATTYPEAMR = 0;
|
||||
int KPTTFORMATTYPESILK = 1;
|
||||
int KPTTTRANSLATESTATUSFAIL = 3;
|
||||
int KPTTTRANSLATESTATUSSUC = 2;
|
||||
int KPTTTRANSLATESTATUSTRANSLATING = 1;
|
||||
int KPTTTRANSLATESTATUSUNKNOWN = 0;
|
||||
int KPTTVIPLEVELTYPENONE = 0;
|
||||
int KPTTVIPLEVELTYPEQQVIP = 0;
|
||||
int KPTTVIPLEVELTYPESVIP = 0;
|
||||
int KPTTVOICECHANGETYPEBEASTMACHINE = 7;
|
||||
int KPTTVOICECHANGETYPEBOY = 2;
|
||||
int KPTTVOICECHANGETYPECATCHCOLD = 13;
|
||||
int KPTTVOICECHANGETYPEECHO = 5;
|
||||
int KPTTVOICECHANGETYPEFATGUY = 16;
|
||||
int KPTTVOICECHANGETYPEFLASHING = 9;
|
||||
int KPTTVOICECHANGETYPEGIRL = 1;
|
||||
int KPTTVOICECHANGETYPEHORRIBLE = 3;
|
||||
int KPTTVOICECHANGETYPEKINDERGARTEN = 6;
|
||||
int KPTTVOICECHANGETYPEMEDAROT = 15;
|
||||
int KPTTVOICECHANGETYPENONE = 0;
|
||||
int KPTTVOICECHANGETYPEOPTIMUSPRIME = 8;
|
||||
int KPTTVOICECHANGETYPEOUTOFDATE = 14;
|
||||
int KPTTVOICECHANGETYPEPAPI = 11;
|
||||
int KPTTVOICECHANGETYPEQUICK = 4;
|
||||
int KPTTVOICECHANGETYPESTUTTER = 10;
|
||||
int KPTTVOICECHANGETYPETRAPPEDBEAST = 12;
|
||||
int KPTTVOICETYPEINTERCOM = 1;
|
||||
int KPTTVOICETYPESOUNDRECORD = 2;
|
||||
int KPTTVOICETYPEUNKNOW = 0;
|
||||
int KPTTVOICETYPEVOICECHANGE = 3;
|
||||
int KPUBLICACCOUNTTIANSHUHIGHLIGHTWORDTYPEINMSGBOX = 1010;
|
||||
int KREPLYABSELEMTYPEFACE = 2;
|
||||
int KREPLYABSELEMTYPEPIC = 3;
|
||||
int KREPLYABSELEMTYPETEXT = 1;
|
||||
int KREPLYABSELEMTYPEUNKNOWN = 0;
|
||||
int KREPLYATMEMSGTYPEINMSGBOX = 1002;
|
||||
int KRMDOWNTYPEORIG = 1;
|
||||
int KRMDOWNTYPETHUMB = 2;
|
||||
int KRMDOWNTYPEUNKNOWN = 0;
|
||||
int KRMFILETHUMBSIZE128 = 128;
|
||||
int KRMFILETHUMBSIZE320 = 320;
|
||||
int KRMFILETHUMBSIZE384 = 384;
|
||||
int KRMFILETHUMBSIZE750 = 750;
|
||||
int KRMPICAIOTHUMBSIZE = 0;
|
||||
int KRMPICTHUMBSIZE198 = 198;
|
||||
int KRMPICTHUMBSIZE720 = 720;
|
||||
int KRMPICTYPEBMP = 3;
|
||||
int KRMPICTYPECHECKOTHER = 900;
|
||||
int KRMPICTYPEGIF = 2;
|
||||
int KRMPICTYPEJPG = 0;
|
||||
int KRMPICTYPENEWPICAPNG = 2001;
|
||||
int KRMPICTYPENEWPICBMP = 1005;
|
||||
int KRMPICTYPENEWPICGIF = 2000;
|
||||
int KRMPICTYPENEWPICJPEG = 1000;
|
||||
int KRMPICTYPENEWPICPNG = 1001;
|
||||
int KRMPICTYPENEWPICPROGERSSIVJPEG = 1003;
|
||||
int KRMPICTYPENEWPICSHARPP = 1004;
|
||||
int KRMPICTYPENEWPICWEBP = 1002;
|
||||
int KRMPICTYPEPNG = 1;
|
||||
int KRMPICTYPEUNKOWN = 0;
|
||||
int KRMTHUMBSIZEZERO = 0;
|
||||
int KRMTRNASFERSTATUSDOWNLOADING = 3;
|
||||
int KRMTRNASFERSTATUSFAIL = 5;
|
||||
int KRMTRNASFERSTATUSINIT = 1;
|
||||
int KRMTRNASFERSTATUSSUC = 4;
|
||||
int KRMTRNASFERSTATUSUNKOW = 0;
|
||||
int KRMTRNASFERSTATUSUPLOADING = 2;
|
||||
int KRMTRNASFERSTATUSUSERCANCEL = 6;
|
||||
int KSEEKINGPARTNERFLAGSEEKING = 1;
|
||||
int KSEEKINGPARTNERFLAGUNKNOWN = 0;
|
||||
int KSENDSTATUSFAILED = 0;
|
||||
int KSENDSTATUSSENDING = 1;
|
||||
int KSENDSTATUSSUCCESS = 2;
|
||||
int KSENDSTATUSSUCCESSNOSEQ = 3;
|
||||
int KSENDTYPEDROPPED = 6;
|
||||
int KSENDTYPELOCAL = 3;
|
||||
int KSENDTYPEOTHERDEVICE = 2;
|
||||
int KSENDTYPERECV = 0;
|
||||
int KSENDTYPESELF = 1;
|
||||
int KSENDTYPESELFFORWARD = 4;
|
||||
int KSENDTYPESELFMULTIFORWARD = 5;
|
||||
int KSESSIONTYPEADDRESSBOOK = 5;
|
||||
int KSESSIONTYPEC2C = 1;
|
||||
int KSESSIONTYPEDISC = 3;
|
||||
int KSESSIONTYPEFAV = 41;
|
||||
int KSESSIONTYPEGROUP = 2;
|
||||
int KSESSIONTYPEGROUPBLESS = 52;
|
||||
int KSESSIONTYPEGUILD = 4;
|
||||
int KSESSIONTYPEGUILDMETA = 16;
|
||||
int KSESSIONTYPENEARBYPRO = 54;
|
||||
int KSESSIONTYPEQQNOTIFY = 51;
|
||||
int KSESSIONTYPERELATEACCOUNT = 50;
|
||||
int KSESSIONTYPESERVICEASSISTANT = 19;
|
||||
int KSESSIONTYPESUBSCRIBEFOLDER = 30;
|
||||
int KSESSIONTYPETYPEBUDDYNOTIFY = 7;
|
||||
int KSESSIONTYPETYPEGROUPHELPER = 9;
|
||||
int KSESSIONTYPETYPEGROUPNOTIFY = 8;
|
||||
int KSESSIONTYPEUNKNOWN = 0;
|
||||
int KSESSIONTYPEWEIYUN = 40;
|
||||
int KSPECIALCAREMSGTYPEINMSGBOX = 1006;
|
||||
int KSPECIFIEDREDENVELOPEATMEMSGTYPEINMSGBOX = 1004;
|
||||
int KSPECIFIEDREDENVELOPEATONEMSGTYPEINMSGBOX = 1003;
|
||||
int KTENCENTDOCTYPEADDON = 110;
|
||||
int KTENCENTDOCTYPEDOC = 0;
|
||||
int KTENCENTDOCTYPEDRAWING = 89;
|
||||
int KTENCENTDOCTYPEDRIVE = 101;
|
||||
int KTENCENTDOCTYPEFILE = 100;
|
||||
int KTENCENTDOCTYPEFLOWCHART = 91;
|
||||
int KTENCENTDOCTYPEFOLDER = 3;
|
||||
int KTENCENTDOCTYPEFORM = 2;
|
||||
int KTENCENTDOCTYPEMIND = 90;
|
||||
int KTENCENTDOCTYPENOTES = 5;
|
||||
int KTENCENTDOCTYPEPDF = 6;
|
||||
int KTENCENTDOCTYPEPROGRAM = 7;
|
||||
int KTENCENTDOCTYPESHEET = 1;
|
||||
int KTENCENTDOCTYPESLIDE = 4;
|
||||
int KTENCENTDOCTYPESMARTCANVAS = 8;
|
||||
int KTENCENTDOCTYPESMARTSHEET = 9;
|
||||
int KTENCENTDOCTYPESPEECH = 102;
|
||||
int KTENCENTDOCTYPEUNKNOWN = 10;
|
||||
int KTOFURECORDMSG = 23;
|
||||
int KTOPMSGTYPETASK = 1;
|
||||
int KTOPMSGTYPEUNKNOWN = 0;
|
||||
int KTRIGGERTYPEAUTO = 1;
|
||||
int KTRIGGERTYPEMANUAL = 0;
|
||||
int KUNKNOWN = 0;
|
||||
int KUNKNOWNTYPEINMSGBOX = 0;
|
||||
int KUNREADCNTUPTYPEALLDIRECTSESSION = 4;
|
||||
int KUNREADCNTUPTYPEALLFEEDSINGUILD = 6;
|
||||
int KUNREADCNTUPTYPEALLGUILD = 3;
|
||||
int KUNREADCNTUPTYPECATEGORY = 5;
|
||||
int KUNREADCNTUPTYPECHANNEL = 1;
|
||||
int KUNREADCNTUPTYPECONTACT = 0;
|
||||
int KUNREADCNTUPTYPEGUILD = 2;
|
||||
int KUNREADCNTUPTYPEGUILDGROUP = 7;
|
||||
int KUNREADSHOWTTYPEGRAYPOINT = 2;
|
||||
int KUNREADSHOWTYPEREDPOINT = 1;
|
||||
int KUNREADSHOWTYPESMALLGRAYPOINT = 4;
|
||||
int KUNREADSHOWTYPESMALLREDPOINT = 3;
|
||||
int KUNREADSHOWTYPEUNKNOWN = 0;
|
||||
int KVASGIFTCOINTYPECOIN = 0;
|
||||
int KVASGIFTCOINTYPEMARKETCOIN = 1;
|
||||
int KYOLOGAMERESULTMSG = 18;
|
||||
int PIC_800_RECOMMENDED = 7;
|
||||
int PIC_AIGC_EMOJI = 14;
|
||||
int PIC_ALBUM_GIF = 11;
|
||||
int PIC_COMMERCIAL_ADVERTISING = 9;
|
||||
int PIC_FIND = 10;
|
||||
int PIC_HOT = 2;
|
||||
int PIC_HOT_EMOJI = 13;
|
||||
int PIC_NORMAL = 0;
|
||||
int PIC_PK = 3;
|
||||
int PIC_QQZONE = 5;
|
||||
int PIC_SELFIE_GIF = 8;
|
||||
int PIC_SEND_FROM_TAB_SEARCH_BOX = 12;
|
||||
int PIC_USER = 1;
|
||||
int PIC_WISDOM_FIGURE = 4;
|
||||
int REPLYORIGINALMSGSTATEHASRECALL = 1;
|
||||
int REPLYORIGINALMSGSTATEUNKNOWN = 0;
|
||||
int SHARELOCATIONELEMSUBTYPENORMAL = 1;
|
||||
int SHARELOCATIONELEMSUBTYPEUNKNOWN = 0;
|
||||
int TEXTELEMENTSUBTYPELINK = 1;
|
||||
int TEXTELEMENTSUBTYPETENCENTDOC = 2;
|
||||
int TEXTELEMENTSUBTYPEUNKNOWN = 0;
|
||||
```
|
24
docs/develop/参与开发.md
Normal file
24
docs/develop/参与开发.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# 前排提示
|
||||
由于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调用流程
|
@@ -2,7 +2,7 @@
|
||||
"name": "napcat",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"version": "1.4.6",
|
||||
"version": "1.5.3",
|
||||
"scripts": {
|
||||
"watch:dev": "vite --mode development",
|
||||
"watch:prod": "vite --mode production",
|
||||
@@ -19,6 +19,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@log4js-node/log4js-api": "^1.0.2",
|
||||
"@protobuf-ts/plugin": "^2.9.4",
|
||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||
"@rollup/plugin-typescript": "^11.1.6",
|
||||
"@types/cors": "^2.8.17",
|
||||
@@ -43,11 +44,11 @@
|
||||
"vite": "^5.2.6",
|
||||
"vite-plugin-cp": "^4.0.8",
|
||||
"vite-plugin-dts": "^3.8.2",
|
||||
"vite-tsconfig-paths": "^4.3.2",
|
||||
"@protobuf-ts/plugin": "^2.9.4"
|
||||
"vite-tsconfig-paths": "^4.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"ajv": "^8.13.0",
|
||||
"chalk": "^5.3.0",
|
||||
"commander": "^12.0.0",
|
||||
"cors": "^2.8.5",
|
||||
"express": "^5.0.0-beta.2",
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { sleep } from '@/common/utils/helper';
|
||||
|
||||
import { logError } from './log';
|
||||
type AsyncQueueTask = (() => void) | (()=>Promise<void>);
|
||||
|
||||
|
||||
@@ -26,7 +26,8 @@ export class AsyncQueue {
|
||||
await taskRet;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
// console.error(e);
|
||||
logError(e);
|
||||
}
|
||||
this.tasks.shift();
|
||||
await sleep(100);
|
||||
|
@@ -1,181 +1,182 @@
|
||||
import { NodeIKernelMsgListener } from "@/core";
|
||||
import { NodeIQQNTWrapperSession } from "@/core/wrapper";
|
||||
import { randomUUID } from "crypto";
|
||||
|
||||
interface Internal_MapKey {
|
||||
timeout: number,
|
||||
createtime: number,
|
||||
func: Function
|
||||
}
|
||||
|
||||
export class ListenerClassBase {
|
||||
[key: string]: string;
|
||||
}
|
||||
|
||||
export interface ListenerIBase {
|
||||
// eslint-disable-next-line @typescript-eslint/no-misused-new
|
||||
new(listener: any): ListenerClassBase;
|
||||
}
|
||||
|
||||
export class NTEventWrapper {
|
||||
|
||||
private ListenerMap: { [key: string]: ListenerIBase } | undefined;//ListenerName-Unique -> Listener构造函数
|
||||
private WrapperSession: NodeIQQNTWrapperSession | undefined;//WrapperSession
|
||||
private ListenerManger: Map<string, ListenerClassBase> = new Map<string, ListenerClassBase>(); //ListenerName-Unique -> Listener实例
|
||||
private EventTask = new Map<string, Map<string, Map<string, Internal_MapKey>>>();//tasks ListenerMainName -> ListenerSubName-> uuid -> {timeout,createtime,func}
|
||||
constructor() {
|
||||
|
||||
}
|
||||
createProxyDispatch(ListenerMainName: string) {
|
||||
let current = this;
|
||||
return new Proxy({}, {
|
||||
get(target: any, prop: any, receiver: any) {
|
||||
// console.log('get', prop, typeof target[prop]);
|
||||
if (typeof target[prop] === 'undefined') {
|
||||
// 如果方法不存在,返回一个函数,这个函数调用existentMethod
|
||||
return (...args: any[]) => {
|
||||
current.DispatcherListener.apply(current, [ListenerMainName, prop, ...args]).then();
|
||||
};
|
||||
}
|
||||
// 如果方法存在,正常返回
|
||||
return Reflect.get(target, prop, receiver);
|
||||
}
|
||||
});
|
||||
}
|
||||
init({ ListenerMap, WrapperSession }: { ListenerMap: { [key: string]: typeof ListenerClassBase }, WrapperSession: NodeIQQNTWrapperSession }) {
|
||||
this.ListenerMap = ListenerMap;
|
||||
this.WrapperSession = WrapperSession;
|
||||
}
|
||||
CreatEventFunction<T extends (...args: any) => any>(eventName: string): T | undefined {
|
||||
let eventNameArr = eventName.split('/');
|
||||
type eventType = {
|
||||
[key: string]: () => { [key: string]: (...params: Parameters<T>) => Promise<ReturnType<T>> }
|
||||
}
|
||||
if (eventNameArr.length > 1) {
|
||||
let serviceName = 'get' + eventNameArr[0].replace('NodeIKernel', '');
|
||||
let eventName = eventNameArr[1];
|
||||
//getNodeIKernelGroupListener,GroupService
|
||||
//console.log('2', eventName);
|
||||
let services = (this.WrapperSession as unknown as eventType)[serviceName]();
|
||||
let event = services[eventName];
|
||||
//重新绑定this
|
||||
event = event.bind(services);
|
||||
if (event) {
|
||||
return event as T;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
}
|
||||
CreatListenerFunction<T>(listenerMainName: string, uniqueCode: string = ""): T {
|
||||
let ListenerType = this.ListenerMap![listenerMainName];
|
||||
let Listener = this.ListenerManger.get(listenerMainName + uniqueCode);
|
||||
if (!Listener && ListenerType) {
|
||||
Listener = new ListenerType(this.createProxyDispatch(listenerMainName));
|
||||
let ServiceSubName = listenerMainName.match(/^NodeIKernel(.*?)Listener$/)![1];
|
||||
let Service = "NodeIKernel" + ServiceSubName + "Service/addKernel" + ServiceSubName + "Listener";
|
||||
let addfunc = this.CreatEventFunction<(listener: T) => number>(Service);
|
||||
addfunc!(Listener as T);
|
||||
//console.log(addfunc!(Listener as T));
|
||||
this.ListenerManger.set(listenerMainName + uniqueCode, Listener);
|
||||
}
|
||||
return Listener as T;
|
||||
}
|
||||
//统一回调清理事件
|
||||
async DispatcherListener(ListenerMainName: string, ListenerSubName: string, ...args: any[]) {
|
||||
//console.log(ListenerMainName, this.EventTask.get(ListenerMainName), ListenerSubName, this.EventTask.get(ListenerMainName)?.get(ListenerSubName));
|
||||
this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.forEach((task, uuid) => {
|
||||
//console.log(task.func, uuid, task.createtime, task.timeout);
|
||||
if (task.createtime + task.timeout < Date.now()) {
|
||||
this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.delete(uuid);
|
||||
return;
|
||||
}
|
||||
task.func(...args);
|
||||
})
|
||||
}
|
||||
async CallNoListenerEvent<EventType extends (...args: any[]) => Promise<any>,>(EventName = '', timeout: number = 3000, ...args: Parameters<EventType>) {
|
||||
return new Promise<ReturnType<EventType>>(async (resolve, reject) => {
|
||||
let EventFunc = this.CreatEventFunction<EventType>(EventName);
|
||||
let complete = false;
|
||||
let Timeouter = setTimeout(() => {
|
||||
if (!complete) {
|
||||
reject(new Error('NTEvent EventName:' + EventName + ' timeout'));
|
||||
}
|
||||
}, timeout);
|
||||
let retData = await EventFunc!(...args);
|
||||
complete = true;
|
||||
resolve(retData);
|
||||
});
|
||||
}
|
||||
async CallNormalEvent<EventType extends (...args: any[]) => Promise<any>, ListenerType extends (...args: any[]) => void>(EventName = '', ListenerName = '', waitTimes = 1, timeout: number = 3000, ...args: Parameters<EventType>) {
|
||||
return new Promise<[EventRet: Awaited<ReturnType<EventType>>, ...Parameters<ListenerType>]>(async (resolve, reject) => {
|
||||
const id = randomUUID();
|
||||
let complete = 0;
|
||||
let retData: ArrayLike<Parameters<ListenerType>> | undefined = undefined;
|
||||
let retEvent: any = {};
|
||||
let databack = () => {
|
||||
if (complete < waitTimes) {
|
||||
reject(new Error('NTEvent EventName:' + EventName + ' ListenerName:' + ListenerName + ' timeout'));
|
||||
} else {
|
||||
|
||||
resolve([retEvent as Awaited<ReturnType<EventType>>, ...(retData as Parameters<ListenerType>)]);
|
||||
}
|
||||
}
|
||||
let Timeouter = setTimeout(databack, timeout);
|
||||
|
||||
let ListenerNameList = ListenerName.split('/');
|
||||
let ListenerMainName = ListenerNameList[0];
|
||||
let ListenerSubName = ListenerNameList[1];
|
||||
let eventCallbak = {
|
||||
timeout: timeout,
|
||||
createtime: Date.now(),
|
||||
func: (...args: any[]) => {
|
||||
complete++;
|
||||
//console.log('func', ...args);
|
||||
retData = args as ArrayLike<Parameters<ListenerType>>;
|
||||
if (complete >= waitTimes) {
|
||||
clearTimeout(Timeouter);
|
||||
databack();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!this.EventTask.get(ListenerMainName)) {
|
||||
this.EventTask.set(ListenerMainName, new Map());
|
||||
}
|
||||
if (!(this.EventTask.get(ListenerMainName)?.get(ListenerSubName))) {
|
||||
this.EventTask.get(ListenerMainName)?.set(ListenerSubName, new Map());
|
||||
}
|
||||
this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.set(id, eventCallbak);
|
||||
this.CreatListenerFunction(ListenerMainName);
|
||||
let EventFunc = this.CreatEventFunction<EventType>(EventName);
|
||||
retEvent = await EventFunc!(...args);
|
||||
});
|
||||
}
|
||||
}
|
||||
export const NTEventDispatch = new NTEventWrapper();
|
||||
|
||||
// 示例代码 快速创建事件
|
||||
// let NTEvent = new NTEventWrapper();
|
||||
// let TestEvent = NTEvent.CreatEventFunction<(force: boolean) => Promise<Number>>('NodeIKernelProfileLikeService/GetTest');
|
||||
// if (TestEvent) {
|
||||
// TestEvent(true);
|
||||
// }
|
||||
|
||||
// 示例代码 快速创建监听Listener类
|
||||
// let NTEvent = new NTEventWrapper();
|
||||
// NTEvent.CreatListenerFunction<NodeIKernelMsgListener>('NodeIKernelMsgListener', 'core')
|
||||
|
||||
|
||||
// 调用接口
|
||||
//let NTEvent = new NTEventWrapper();
|
||||
//let ret = await NTEvent.CallNormalEvent<(force: boolean) => Promise<Number>, (data1: string, data2: number) => void>('NodeIKernelProfileLikeService/GetTest', 'NodeIKernelMsgListener/onAddSendMsg', 1, 3000, true);
|
||||
|
||||
// 注册监听 解除监听
|
||||
// NTEventDispatch.RigisterListener('NodeIKernelMsgListener/onAddSendMsg','core',cb);
|
||||
// NTEventDispatch.UnRigisterListener('NodeIKernelMsgListener/onAddSendMsg','core');
|
||||
|
||||
// let GetTest = NTEventDispatch.CreatEvent('NodeIKernelProfileLikeService/GetTest','NodeIKernelMsgListener/onAddSendMsg',Mode);
|
||||
// GetTest('test');
|
||||
|
||||
// always模式
|
||||
import { NodeIKernelMsgListener } from '@/core';
|
||||
import { NodeIQQNTWrapperSession } from '@/core/wrapper';
|
||||
import { randomUUID } from 'crypto';
|
||||
|
||||
interface Internal_MapKey {
|
||||
timeout: number,
|
||||
createtime: number,
|
||||
func: (...arg: any[]) => any,
|
||||
}
|
||||
|
||||
export class ListenerClassBase {
|
||||
[key: string]: string;
|
||||
}
|
||||
|
||||
export interface ListenerIBase {
|
||||
// eslint-disable-next-line @typescript-eslint/no-misused-new
|
||||
new(listener: any): ListenerClassBase;
|
||||
}
|
||||
|
||||
export class NTEventWrapper {
|
||||
|
||||
private ListenerMap: { [key: string]: ListenerIBase } | undefined;//ListenerName-Unique -> Listener构造函数
|
||||
private WrapperSession: NodeIQQNTWrapperSession | undefined;//WrapperSession
|
||||
private ListenerManger: Map<string, ListenerClassBase> = new Map<string, ListenerClassBase>(); //ListenerName-Unique -> Listener实例
|
||||
private EventTask = new Map<string, Map<string, Map<string, Internal_MapKey>>>();//tasks ListenerMainName -> ListenerSubName-> uuid -> {timeout,createtime,func}
|
||||
constructor() {
|
||||
|
||||
}
|
||||
createProxyDispatch(ListenerMainName: string) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
||||
const current = this;
|
||||
return new Proxy({}, {
|
||||
get(target: any, prop: any, receiver: any) {
|
||||
// console.log('get', prop, typeof target[prop]);
|
||||
if (typeof target[prop] === 'undefined') {
|
||||
// 如果方法不存在,返回一个函数,这个函数调用existentMethod
|
||||
return (...args: any[]) => {
|
||||
current.DispatcherListener.apply(current, [ListenerMainName, prop, ...args]).then();
|
||||
};
|
||||
}
|
||||
// 如果方法存在,正常返回
|
||||
return Reflect.get(target, prop, receiver);
|
||||
}
|
||||
});
|
||||
}
|
||||
init({ ListenerMap, WrapperSession }: { ListenerMap: { [key: string]: typeof ListenerClassBase }, WrapperSession: NodeIQQNTWrapperSession }) {
|
||||
this.ListenerMap = ListenerMap;
|
||||
this.WrapperSession = WrapperSession;
|
||||
}
|
||||
CreatEventFunction<T extends (...args: any) => any>(eventName: string): T | undefined {
|
||||
const eventNameArr = eventName.split('/');
|
||||
type eventType = {
|
||||
[key: string]: () => { [key: string]: (...params: Parameters<T>) => Promise<ReturnType<T>> }
|
||||
}
|
||||
if (eventNameArr.length > 1) {
|
||||
const serviceName = 'get' + eventNameArr[0].replace('NodeIKernel', '');
|
||||
const eventName = eventNameArr[1];
|
||||
//getNodeIKernelGroupListener,GroupService
|
||||
//console.log('2', eventName);
|
||||
const services = (this.WrapperSession as unknown as eventType)[serviceName]();
|
||||
let event = services[eventName];
|
||||
//重新绑定this
|
||||
event = event.bind(services);
|
||||
if (event) {
|
||||
return event as T;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
}
|
||||
CreatListenerFunction<T>(listenerMainName: string, uniqueCode: string = ''): T {
|
||||
const ListenerType = this.ListenerMap![listenerMainName];
|
||||
let Listener = this.ListenerManger.get(listenerMainName + uniqueCode);
|
||||
if (!Listener && ListenerType) {
|
||||
Listener = new ListenerType(this.createProxyDispatch(listenerMainName));
|
||||
const ServiceSubName = listenerMainName.match(/^NodeIKernel(.*?)Listener$/)![1];
|
||||
const Service = 'NodeIKernel' + ServiceSubName + 'Service/addKernel' + ServiceSubName + 'Listener';
|
||||
const addfunc = this.CreatEventFunction<(listener: T) => number>(Service);
|
||||
addfunc!(Listener as T);
|
||||
//console.log(addfunc!(Listener as T));
|
||||
this.ListenerManger.set(listenerMainName + uniqueCode, Listener);
|
||||
}
|
||||
return Listener as T;
|
||||
}
|
||||
//统一回调清理事件
|
||||
async DispatcherListener(ListenerMainName: string, ListenerSubName: string, ...args: any[]) {
|
||||
//console.log(ListenerMainName, this.EventTask.get(ListenerMainName), ListenerSubName, this.EventTask.get(ListenerMainName)?.get(ListenerSubName));
|
||||
this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.forEach((task, uuid) => {
|
||||
//console.log(task.func, uuid, task.createtime, task.timeout);
|
||||
if (task.createtime + task.timeout < Date.now()) {
|
||||
this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.delete(uuid);
|
||||
return;
|
||||
}
|
||||
task.func(...args);
|
||||
});
|
||||
}
|
||||
async CallNoListenerEvent<EventType extends (...args: any[]) => Promise<any>,>(EventName = '', timeout: number = 3000, ...args: Parameters<EventType>) {
|
||||
return new Promise<Awaited<ReturnType<EventType>>>(async (resolve, reject) => {
|
||||
const EventFunc = this.CreatEventFunction<EventType>(EventName);
|
||||
let complete = false;
|
||||
const Timeouter = setTimeout(() => {
|
||||
if (!complete) {
|
||||
reject(new Error('NTEvent EventName:' + EventName + ' timeout'));
|
||||
}
|
||||
}, timeout);
|
||||
const retData = await EventFunc!(...args);
|
||||
complete = true;
|
||||
resolve(retData);
|
||||
});
|
||||
}
|
||||
async CallNormalEvent<EventType extends (...args: any[]) => Promise<any>, ListenerType extends (...args: any[]) => void>(EventName = '', ListenerName = '', waitTimes = 1, timeout: number = 3000, ...args: Parameters<EventType>) {
|
||||
return new Promise<[EventRet: Awaited<ReturnType<EventType>>, ...Parameters<ListenerType>]>(async (resolve, reject) => {
|
||||
const id = randomUUID();
|
||||
let complete = 0;
|
||||
let retData: Parameters<ListenerType> | undefined = undefined;
|
||||
let retEvent: any = {};
|
||||
const databack = () => {
|
||||
if (complete < waitTimes) {
|
||||
reject(new Error('NTEvent EventName:' + EventName + ' ListenerName:' + ListenerName + ' timeout'));
|
||||
} else {
|
||||
resolve([retEvent as Awaited<ReturnType<EventType>>, ...retData!]);
|
||||
}
|
||||
};
|
||||
const Timeouter = setTimeout(databack, timeout);
|
||||
|
||||
const ListenerNameList = ListenerName.split('/');
|
||||
const ListenerMainName = ListenerNameList[0];
|
||||
const ListenerSubName = ListenerNameList[1];
|
||||
const eventCallbak = {
|
||||
timeout: timeout,
|
||||
createtime: Date.now(),
|
||||
func: (...args: any[]) => {
|
||||
complete++;
|
||||
//console.log('func', ...args);
|
||||
retData = args as Parameters<ListenerType>;
|
||||
if (complete >= waitTimes) {
|
||||
clearTimeout(Timeouter);
|
||||
databack();
|
||||
}
|
||||
}
|
||||
};
|
||||
if (!this.EventTask.get(ListenerMainName)) {
|
||||
this.EventTask.set(ListenerMainName, new Map());
|
||||
}
|
||||
if (!(this.EventTask.get(ListenerMainName)?.get(ListenerSubName))) {
|
||||
this.EventTask.get(ListenerMainName)?.set(ListenerSubName, new Map());
|
||||
}
|
||||
this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.set(id, eventCallbak);
|
||||
this.CreatListenerFunction(ListenerMainName);
|
||||
const EventFunc = this.CreatEventFunction<EventType>(EventName);
|
||||
//console.log("测试打点", args);
|
||||
retEvent = await EventFunc!(...(args as any[]));
|
||||
});
|
||||
}
|
||||
}
|
||||
export const NTEventDispatch = new NTEventWrapper();
|
||||
|
||||
// 示例代码 快速创建事件
|
||||
// let NTEvent = new NTEventWrapper();
|
||||
// let TestEvent = NTEvent.CreatEventFunction<(force: boolean) => Promise<Number>>('NodeIKernelProfileLikeService/GetTest');
|
||||
// if (TestEvent) {
|
||||
// TestEvent(true);
|
||||
// }
|
||||
|
||||
// 示例代码 快速创建监听Listener类
|
||||
// let NTEvent = new NTEventWrapper();
|
||||
// NTEvent.CreatListenerFunction<NodeIKernelMsgListener>('NodeIKernelMsgListener', 'core')
|
||||
|
||||
|
||||
// 调用接口
|
||||
//let NTEvent = new NTEventWrapper();
|
||||
//let ret = await NTEvent.CallNormalEvent<(force: boolean) => Promise<Number>, (data1: string, data2: number) => void>('NodeIKernelProfileLikeService/GetTest', 'NodeIKernelMsgListener/onAddSendMsg', 1, 3000, true);
|
||||
|
||||
// 注册监听 解除监听
|
||||
// NTEventDispatch.RigisterListener('NodeIKernelMsgListener/onAddSendMsg','core',cb);
|
||||
// NTEventDispatch.UnRigisterListener('NodeIKernelMsgListener/onAddSendMsg','core');
|
||||
|
||||
// let GetTest = NTEventDispatch.CreatEvent('NodeIKernelProfileLikeService/GetTest','NodeIKernelMsgListener/onAddSendMsg',Mode);
|
||||
// GetTest('test');
|
||||
|
||||
// always模式
|
||||
// NTEventDispatch.CreatEvent('NodeIKernelProfileLikeService/GetTest','NodeIKernelMsgListener/onAddSendMsg',Mode,(...args:any[])=>{ console.log(args) });
|
@@ -1,145 +1,145 @@
|
||||
import { logError, logDebug } from "@/common/utils/log";
|
||||
|
||||
type group_id = number;
|
||||
type user_id = number;
|
||||
|
||||
class cacheNode<T> {
|
||||
value: T;
|
||||
groupId: group_id;
|
||||
userId: user_id;
|
||||
prev: cacheNode<T> | null;
|
||||
next: cacheNode<T> | null;
|
||||
timestamp: number;
|
||||
|
||||
constructor(groupId: group_id, userId: user_id, value: T) {
|
||||
this.groupId = groupId;
|
||||
this.userId = userId;
|
||||
this.value = value;
|
||||
this.prev = null;
|
||||
this.next = null;
|
||||
this.timestamp = Date.now();
|
||||
}
|
||||
}
|
||||
|
||||
type cache<T> = { [key: group_id]: { [key: user_id]: cacheNode<T> } };
|
||||
class LRU<T> {
|
||||
private maxAge: number;
|
||||
private maxSize: number;
|
||||
private currentSize: number;
|
||||
private cache: cache<T>;
|
||||
private head: cacheNode<T> | null = null;
|
||||
private tail: cacheNode<T> | null = null;
|
||||
private onFuncs: ((node: cacheNode<T>) => void)[] = [];
|
||||
|
||||
constructor(maxAge: number = 2e4, maxSize: number = 5e3) {
|
||||
this.maxAge = maxAge;
|
||||
this.maxSize = maxSize;
|
||||
this.cache = Object.create(null);
|
||||
this.currentSize = 0;
|
||||
|
||||
if (maxSize == 0) return;
|
||||
setInterval(() => this.removeExpired(), this.maxAge);
|
||||
}
|
||||
|
||||
// 移除LRU节点
|
||||
private removeLRUNode(node: cacheNode<T>) {
|
||||
logDebug(
|
||||
"removeLRUNode",
|
||||
node.groupId,
|
||||
node.userId,
|
||||
node.value,
|
||||
this.currentSize
|
||||
);
|
||||
node.prev = node.next = null;
|
||||
delete this.cache[node.groupId][node.userId];
|
||||
this.removeNode(node);
|
||||
this.onFuncs.forEach((func) => func(node));
|
||||
this.currentSize--;
|
||||
}
|
||||
|
||||
public on(func: (node: cacheNode<T>) => void) {
|
||||
this.onFuncs.push(func);
|
||||
}
|
||||
|
||||
private removeExpired() {
|
||||
const now = Date.now();
|
||||
let current = this.tail;
|
||||
const nodesToRemove: cacheNode<T>[] = [];
|
||||
let removedCount = 0;
|
||||
|
||||
// 收集需要删除的节点
|
||||
while (current && now - current.timestamp > this.maxAge) {
|
||||
nodesToRemove.push(current);
|
||||
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];
|
||||
|
||||
this.currentSize--;
|
||||
this.onFuncs.forEach((func) => func(node));
|
||||
});
|
||||
}
|
||||
|
||||
private addNode(node: cacheNode<T>) {
|
||||
node.next = this.head;
|
||||
if (this.head) this.head.prev = node;
|
||||
if (!this.tail) this.tail = node;
|
||||
this.head = node;
|
||||
}
|
||||
|
||||
private removeNode(node: cacheNode<T>) {
|
||||
if (node.prev) node.prev.next = node.next;
|
||||
if (node.next) node.next.prev = node.prev;
|
||||
if (node === this.head) this.head = node.next;
|
||||
if (node === this.tail) this.tail = node.prev;
|
||||
}
|
||||
|
||||
private moveToHead(node: cacheNode<T>) {
|
||||
if (this.head === node) return;
|
||||
|
||||
this.removeNode(node);
|
||||
this.addNode(node);
|
||||
node.prev = null;
|
||||
}
|
||||
|
||||
public set(groupId: group_id, userId: user_id, value: T) {
|
||||
if (!this.cache[groupId]) {
|
||||
this.cache[groupId] = Object.create(null);
|
||||
}
|
||||
|
||||
const groupObject = this.cache[groupId];
|
||||
|
||||
if (groupObject[userId]) {
|
||||
const node = groupObject[userId];
|
||||
node.value = value;
|
||||
node.timestamp = Date.now();
|
||||
this.moveToHead(node);
|
||||
} else {
|
||||
const node = new cacheNode(groupId, userId, value);
|
||||
groupObject[userId] = node;
|
||||
this.currentSize++;
|
||||
this.addNode(node);
|
||||
if (this.currentSize > this.maxSize) {
|
||||
const tail = this.tail!;
|
||||
this.removeLRUNode(tail);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default LRU;
|
||||
import { logError, logDebug } from '@/common/utils/log';
|
||||
|
||||
type group_id = number;
|
||||
type user_id = number;
|
||||
|
||||
class cacheNode<T> {
|
||||
value: T;
|
||||
groupId: group_id;
|
||||
userId: user_id;
|
||||
prev: cacheNode<T> | null;
|
||||
next: cacheNode<T> | null;
|
||||
timestamp: number;
|
||||
|
||||
constructor(groupId: group_id, userId: user_id, value: T) {
|
||||
this.groupId = groupId;
|
||||
this.userId = userId;
|
||||
this.value = value;
|
||||
this.prev = null;
|
||||
this.next = null;
|
||||
this.timestamp = Date.now();
|
||||
}
|
||||
}
|
||||
|
||||
type cache<T> = { [key: group_id]: { [key: user_id]: cacheNode<T> } };
|
||||
class LRU<T> {
|
||||
private maxAge: number;
|
||||
private maxSize: number;
|
||||
private currentSize: number;
|
||||
private cache: cache<T>;
|
||||
private head: cacheNode<T> | null = null;
|
||||
private tail: cacheNode<T> | null = null;
|
||||
private onFuncs: ((node: cacheNode<T>) => void)[] = [];
|
||||
|
||||
constructor(maxAge: number = 2e4, maxSize: number = 5e3) {
|
||||
this.maxAge = maxAge;
|
||||
this.maxSize = maxSize;
|
||||
this.cache = Object.create(null);
|
||||
this.currentSize = 0;
|
||||
|
||||
if (maxSize == 0) return;
|
||||
setInterval(() => this.removeExpired(), this.maxAge);
|
||||
}
|
||||
|
||||
// 移除LRU节点
|
||||
private removeLRUNode(node: cacheNode<T>) {
|
||||
logDebug(
|
||||
'removeLRUNode',
|
||||
node.groupId,
|
||||
node.userId,
|
||||
node.value,
|
||||
this.currentSize
|
||||
);
|
||||
node.prev = node.next = null;
|
||||
delete this.cache[node.groupId][node.userId];
|
||||
this.removeNode(node);
|
||||
this.onFuncs.forEach((func) => func(node));
|
||||
this.currentSize--;
|
||||
}
|
||||
|
||||
public on(func: (node: cacheNode<T>) => void) {
|
||||
this.onFuncs.push(func);
|
||||
}
|
||||
|
||||
private removeExpired() {
|
||||
const now = Date.now();
|
||||
let current = this.tail;
|
||||
const nodesToRemove: cacheNode<T>[] = [];
|
||||
let removedCount = 0;
|
||||
|
||||
// 收集需要删除的节点
|
||||
while (current && now - current.timestamp > this.maxAge) {
|
||||
nodesToRemove.push(current);
|
||||
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];
|
||||
|
||||
this.currentSize--;
|
||||
this.onFuncs.forEach((func) => func(node));
|
||||
});
|
||||
}
|
||||
|
||||
private addNode(node: cacheNode<T>) {
|
||||
node.next = this.head;
|
||||
if (this.head) this.head.prev = node;
|
||||
if (!this.tail) this.tail = node;
|
||||
this.head = node;
|
||||
}
|
||||
|
||||
private removeNode(node: cacheNode<T>) {
|
||||
if (node.prev) node.prev.next = node.next;
|
||||
if (node.next) node.next.prev = node.prev;
|
||||
if (node === this.head) this.head = node.next;
|
||||
if (node === this.tail) this.tail = node.prev;
|
||||
}
|
||||
|
||||
private moveToHead(node: cacheNode<T>) {
|
||||
if (this.head === node) return;
|
||||
|
||||
this.removeNode(node);
|
||||
this.addNode(node);
|
||||
node.prev = null;
|
||||
}
|
||||
|
||||
public set(groupId: group_id, userId: user_id, value: T) {
|
||||
if (!this.cache[groupId]) {
|
||||
this.cache[groupId] = Object.create(null);
|
||||
}
|
||||
|
||||
const groupObject = this.cache[groupId];
|
||||
|
||||
if (groupObject[userId]) {
|
||||
const node = groupObject[userId];
|
||||
node.value = value;
|
||||
node.timestamp = Date.now();
|
||||
this.moveToHead(node);
|
||||
} else {
|
||||
const node = new cacheNode(groupId, userId, value);
|
||||
groupObject[userId] = node;
|
||||
this.currentSize++;
|
||||
this.addNode(node);
|
||||
if (this.currentSize > this.maxSize) {
|
||||
const tail = this.tail!;
|
||||
this.removeLRUNode(tail);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default LRU;
|
||||
|
53
src/common/utils/MessageUnique.ts
Normal file
53
src/common/utils/MessageUnique.ts
Normal file
@@ -0,0 +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();
|
||||
}
|
||||
}
|
||||
|
||||
getValue(key: K): V | undefined {
|
||||
return this.keyToValue.get(key);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
export const MessageUnique = new MessageUniqueWrapper();
|
@@ -2,6 +2,7 @@ import path from 'node:path';
|
||||
import fs from 'node:fs';
|
||||
import os from 'node:os';
|
||||
import { systemPlatform } from '@/common/utils/system';
|
||||
import { logError } from '@/common/utils/log';
|
||||
|
||||
export const exePath = process.execPath;
|
||||
|
||||
@@ -49,7 +50,7 @@ if (fs.existsSync(configVersionInfoPath)) {
|
||||
const _ =JSON.parse(fs.readFileSync(configVersionInfoPath).toString());
|
||||
_qqVersionConfigInfo = Object.assign(_qqVersionConfigInfo, _);
|
||||
} catch (e) {
|
||||
console.error('Load QQ version config info failed, Use default version', e);
|
||||
logError('Load QQ version config info failed, Use default version', e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -24,7 +24,7 @@ export async function encodeSilk(filePath: string) {
|
||||
const fileHeader = buffer.toString('hex', 0, bytesToRead);
|
||||
return fileHeader;
|
||||
} catch (err) {
|
||||
console.error('读取文件错误:', err);
|
||||
logError('读取文件错误:', err);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@@ -4,7 +4,6 @@ import fs from 'fs';
|
||||
import { dirname } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
export function getModuleWithArchName(moduleName: string) {
|
||||
|
@@ -1,509 +1,449 @@
|
||||
import { ElementType, FileElement, PicElement, PttElement, RawMessage, VideoElement } from '../../core/src/entities';
|
||||
|
||||
import sqlite3 from 'sqlite3';
|
||||
import { log, logDebug, logError } from '@/common/utils/log';
|
||||
import { NTQQMsgApi } from '@/core';
|
||||
import LRU from "@/common/utils/LRUCache";
|
||||
|
||||
export interface IRember {
|
||||
last_sent_time: number;
|
||||
join_time: number;
|
||||
user_id: number;
|
||||
}
|
||||
|
||||
|
||||
type DBMsg = {
|
||||
id: number,
|
||||
shortId: number,
|
||||
longId: string,
|
||||
seq: number,
|
||||
peerUid: string,
|
||||
chatType: number,
|
||||
}
|
||||
|
||||
type DBFile = {
|
||||
name: string; // 文件名
|
||||
path: string;
|
||||
url: string;
|
||||
size: number;
|
||||
uuid: string;
|
||||
msgId: string;
|
||||
elementId: string;
|
||||
element: PicElement | VideoElement | FileElement | PttElement;
|
||||
elementType: ElementType.PIC | ElementType.VIDEO | ElementType.FILE | ElementType.PTT;
|
||||
}
|
||||
|
||||
|
||||
class DBUtilBase {
|
||||
protected db: sqlite3.Database | undefined;
|
||||
|
||||
async init(dbPath: string) {
|
||||
if (this.db) {
|
||||
return;
|
||||
}
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
this.db = new sqlite3.Database(dbPath, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err) => {
|
||||
if (err) {
|
||||
logError('Could not connect to database', err);
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
this.createTable();
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
protected createTable() {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
|
||||
close() {
|
||||
this.db?.close();
|
||||
}
|
||||
}
|
||||
|
||||
class DBUtil extends DBUtilBase {
|
||||
private msgCache: Map<string | number, RawMessage> = new Map<string | number, RawMessage>();
|
||||
private globalMsgShortId = -2147483640;
|
||||
private groupIds: number[] = [];
|
||||
private LURCache = new LRU<number>();
|
||||
private LastSentCache = new (class {
|
||||
private cache: { gid: number; uid: number }[] = [];
|
||||
private maxSize: number;
|
||||
|
||||
constructor(maxSize: number = 5000) {
|
||||
this.maxSize = maxSize;
|
||||
}
|
||||
|
||||
get(gid: number, uid: number): boolean {
|
||||
const exists = this.cache.some(
|
||||
(entry) => entry.gid === gid && entry.uid === uid
|
||||
);
|
||||
if (!exists) {
|
||||
this.cache.push({ gid, uid });
|
||||
if (this.cache.length > this.maxSize) {
|
||||
this.cache.shift();
|
||||
}
|
||||
}
|
||||
|
||||
return exists;
|
||||
}
|
||||
})();
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
const interval = 1000 * 60 * 10; // 10分钟清理一次缓存
|
||||
setInterval(() => {
|
||||
logDebug('清理消息缓存');
|
||||
this.msgCache.forEach((msg, key) => {
|
||||
if ((Date.now() - parseInt(msg.msgTime) * 1000) > interval) {
|
||||
this.msgCache.delete(key);
|
||||
}
|
||||
});
|
||||
}, interval);
|
||||
}
|
||||
|
||||
async init(dbPath: string) {
|
||||
await super.init(dbPath);
|
||||
this.globalMsgShortId = await this.getCurrentMaxShortId();
|
||||
|
||||
|
||||
// 初始化群缓存列表
|
||||
this.db!.serialize(() => {
|
||||
const sql = `SELECT * FROM sqlite_master WHERE type='table'`;
|
||||
this.db!.all(sql, [], (err, rows: { name: string }[]) => {
|
||||
if (err) return logError(err);
|
||||
rows.forEach((row) => this.groupIds.push(parseInt(row.name)));
|
||||
//logDebug(`已加载 ${groupIds.length} 个群`);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
this.LURCache.on(async (node) => {
|
||||
const { value: time, groupId, userId } = node;
|
||||
|
||||
logDebug("插入发言时间", userId, groupId);
|
||||
await this.createGroupInfoTimeTableIfNotExist(groupId);
|
||||
|
||||
const method = await this.getDataSetMethod(groupId, userId);
|
||||
logDebug("插入发言时间方法判断", userId, groupId, method);
|
||||
|
||||
const sql =
|
||||
method == "update"
|
||||
? `UPDATE "${groupId}" SET last_sent_time = ? WHERE user_id = ?`
|
||||
: `INSERT INTO "${groupId}" (last_sent_time, user_id) VALUES (?, ?)`;
|
||||
|
||||
this.db!.all(sql, [time, userId], (err) => {
|
||||
if (err) {
|
||||
return logError("插入/更新发言时间失败", userId, groupId);
|
||||
}
|
||||
logDebug("插入/更新发言时间成功", userId, groupId);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
async getDataSetMethod(groupId: number, userId: number) {
|
||||
// 缓存记录
|
||||
if (this.LastSentCache.get(groupId, userId)) {
|
||||
logDebug("缓存命中", userId, groupId);
|
||||
return "update";
|
||||
}
|
||||
|
||||
// 数据库判断
|
||||
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);
|
||||
}
|
||||
|
||||
if (rows.length === 0) {
|
||||
logDebug("查询发言时间不存在", userId, groupId);
|
||||
return resolve("insert");
|
||||
}
|
||||
|
||||
logDebug("查询发言时间存在", userId, groupId);
|
||||
resolve("update");
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
async createGroupInfoTimeTableIfNotExist(groupId: number) {
|
||||
const createTableSQL = (groupId: number) =>
|
||||
`CREATE TABLE IF NOT EXISTS "${groupId}" (
|
||||
user_id INTEGER,
|
||||
last_sent_time INTEGER,
|
||||
join_time INTEGER,
|
||||
PRIMARY KEY (user_id)
|
||||
);`;
|
||||
|
||||
if (this.groupIds.includes(groupId)) {
|
||||
return;
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
const sql = createTableSQL(groupId);
|
||||
this.db!.all(sql, (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
this.groupIds.push(groupId);
|
||||
resolve(true);
|
||||
});
|
||||
});
|
||||
}
|
||||
protected createTable() {
|
||||
// 消息记录
|
||||
const createTableSQL = `
|
||||
CREATE TABLE IF NOT EXISTS msgs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
shortId INTEGER NOT NULL UNIQUE,
|
||||
longId TEXT NOT NULL UNIQUE,
|
||||
seq INTEGER NOT NULL,
|
||||
peerUid TEXT NOT NULL,
|
||||
chatType INTEGER NOT NULL
|
||||
)`;
|
||||
this.db!.run(createTableSQL, function (err) {
|
||||
if (err) {
|
||||
logError('Could not create table msgs', err.stack);
|
||||
}
|
||||
});
|
||||
|
||||
// 文件缓存
|
||||
const createFileTableSQL = `
|
||||
CREATE TABLE IF NOT EXISTS files (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL,
|
||||
path TEXT NOT NULL,
|
||||
url TEXT,
|
||||
size INTEGER NOT NULL,
|
||||
uuid TEXT,
|
||||
elementType INTEGER,
|
||||
element TEXT NOT NULL,
|
||||
elementId TEXT NOT NULL,
|
||||
msgId TEXT NOT NULL
|
||||
)`;
|
||||
this.db!.run(createFileTableSQL, function (err) {
|
||||
if (err) {
|
||||
logError('Could not create table files', err);
|
||||
}
|
||||
});
|
||||
|
||||
// 接收到的临时会话消息uid
|
||||
const createTempUinTableSQL = `
|
||||
CREATE TABLE IF NOT EXISTS temp_uins (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
uid TEXT,
|
||||
uin TEXT
|
||||
)`;
|
||||
this.db!.run(createTempUinTableSQL, function (err) {
|
||||
if (err) {
|
||||
logError('Could not create table temp_uins', err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private async getCurrentMaxShortId() {
|
||||
return new Promise<number>((resolve, reject) => {
|
||||
this.db!.get('SELECT MAX(shortId) as maxId FROM msgs', (err, row: { maxId: number }) => {
|
||||
if (err) {
|
||||
logDebug('Could not get max short id, Use default -2147483640', err);
|
||||
return resolve(-2147483640);
|
||||
}
|
||||
logDebug('数据库中消息最大短id', row?.maxId);
|
||||
resolve(row?.maxId ?? -2147483640);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private async getMsg(query: string, params: any[]) {
|
||||
const stmt = this.db!.prepare(query);
|
||||
return new Promise<RawMessage | null>((resolve, reject) => {
|
||||
stmt.get(...params, (err: any, row: DBMsg) => {
|
||||
// log("getMsg", row, err);
|
||||
if (err) {
|
||||
logError('Could not get msg', err, query, params);
|
||||
return resolve(null);
|
||||
}
|
||||
if (!row) {
|
||||
// logDebug('不存在数据库中的消息,不进行处理', query, params);
|
||||
resolve(null);
|
||||
return;
|
||||
}
|
||||
const msgId = row.longId;
|
||||
NTQQMsgApi.getMsgsByMsgId({ peerUid: row.peerUid, chatType: row.chatType }, [msgId]).then(res => {
|
||||
const msg = res.msgList[0];
|
||||
if (!msg) {
|
||||
resolve(null);
|
||||
return;
|
||||
}
|
||||
msg.id = row.shortId;
|
||||
resolve(msg);
|
||||
}).catch(e => {
|
||||
resolve(null);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async getMsgByShortId(shortId: number): Promise<RawMessage | null> {
|
||||
if (this.msgCache.has(shortId)) {
|
||||
return this.msgCache.get(shortId)!;
|
||||
}
|
||||
const getStmt = 'SELECT * FROM msgs WHERE shortId = ?';
|
||||
return this.getMsg(getStmt, [shortId]);
|
||||
}
|
||||
|
||||
async getMsgByLongId(longId: string): Promise<RawMessage | null> {
|
||||
if (this.msgCache.has(longId)) {
|
||||
return this.msgCache.get(longId)!;
|
||||
}
|
||||
return this.getMsg('SELECT * FROM msgs WHERE longId = ?', [longId]);
|
||||
}
|
||||
|
||||
async getMsgBySeq(peerUid: string, seq: string): Promise<RawMessage | null> {
|
||||
const stmt = 'SELECT * FROM msgs WHERE peerUid = ? AND seq = ?';
|
||||
return this.getMsg(stmt, [peerUid, seq]);
|
||||
}
|
||||
|
||||
async addMsg(msg: RawMessage, update = true): Promise<number> {
|
||||
const existMsg = await this.getMsgByLongId(msg.msgId);
|
||||
if (existMsg) {
|
||||
// logDebug('消息已存在,更新数据库', msg.msgId);
|
||||
if (update) this.updateMsg(msg).then();
|
||||
return existMsg.id!;
|
||||
}
|
||||
const stmt = this.db!.prepare('INSERT INTO msgs (shortId, longId, seq, peerUid, chatType) VALUES (?, ?, ?, ?, ?)');
|
||||
// const runAsync = promisify(stmt.run.bind(stmt));
|
||||
const shortId = ++this.globalMsgShortId;
|
||||
msg.id = shortId;
|
||||
//logDebug(`记录消息到数据库, 消息长id: ${msg.msgId}, 短id: ${msg.id}`);
|
||||
this.msgCache.set(shortId, msg);
|
||||
this.msgCache.set(msg.msgId, msg);
|
||||
stmt.run(this.globalMsgShortId, msg.msgId, msg.msgSeq.toString(), msg.peerUid, msg.chatType, (err: any) => {
|
||||
if (err) {
|
||||
if (err.errno === 19) {
|
||||
this.getMsgByLongId(msg.msgId).then((msg: RawMessage | null) => {
|
||||
if (msg) {
|
||||
this.msgCache.set(shortId, msg);
|
||||
this.msgCache.set(msg.msgId, msg);
|
||||
// logDebug('获取消息短id成功', msg.id);
|
||||
} else {
|
||||
logError('db could not get msg by long id', err);
|
||||
}
|
||||
}).catch(e => logError('db getMsgByLongId error', e));
|
||||
} else {
|
||||
logError('db could not add msg', err);
|
||||
}
|
||||
}
|
||||
});
|
||||
return shortId;
|
||||
}
|
||||
|
||||
async updateMsg(msg: RawMessage) {
|
||||
const existMsg = this.msgCache.get(msg.msgId);
|
||||
if (existMsg) {
|
||||
Object.assign(existMsg, msg);
|
||||
}
|
||||
//logDebug(`更新消息, shortId:${msg.id}, seq: ${msg.msgSeq}, msgId: ${msg.msgId}`);
|
||||
const stmt = this.db!.prepare('UPDATE msgs SET seq=? WHERE longId=?');
|
||||
stmt.run(msg.msgSeq, msg.msgId, (err: any) => {
|
||||
if (err) {
|
||||
logError('updateMsg db error', err);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
async addFileCache(file: DBFile) {
|
||||
const stmt = this.db!.prepare('INSERT INTO files (name, path, url, size, uuid, elementType ,element, elementId, msgId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)');
|
||||
return new Promise((resolve, reject) => {
|
||||
stmt.run(file.name, file.path, file.url, file.size, file.uuid,
|
||||
file.elementType,
|
||||
JSON.stringify(file.element),
|
||||
file.elementId,
|
||||
file.msgId,
|
||||
function (err: any) {
|
||||
if (err) {
|
||||
logError('db could not add file', err);
|
||||
reject(err);
|
||||
}
|
||||
resolve(null);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private async getFileCache(query: string, params: any[]) {
|
||||
const stmt = this.db!.prepare(query);
|
||||
return new Promise<DBFile | null>((resolve, reject) => {
|
||||
stmt.get(...params, (err: any, row: DBFile & { element: string }) => {
|
||||
if (err) {
|
||||
logError('db could not get file cache', err);
|
||||
reject(err);
|
||||
}
|
||||
if (row) {
|
||||
row.element = JSON.parse(row.element);
|
||||
}
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async getFileCacheByName(name: string): Promise<DBFile | null> {
|
||||
return this.getFileCache('SELECT * FROM files WHERE name = ?', [name]);
|
||||
}
|
||||
|
||||
async getFileCacheByUuid(uuid: string): Promise<DBFile | null> {
|
||||
return this.getFileCache('SELECT * FROM files WHERE uuid = ?', [uuid]);
|
||||
}
|
||||
|
||||
// todo: 是否所有的文件都有uuid?语音消息有没有uuid?
|
||||
async updateFileCache(file: DBFile) {
|
||||
const stmt = this.db!.prepare('UPDATE files SET path = ?, url = ? WHERE uuid = ?');
|
||||
return new Promise((resolve, reject) => {
|
||||
stmt.run(file.path, file.url, file.uuid, function (err: any) {
|
||||
if (err) {
|
||||
logError('db could not update file cache', err);
|
||||
reject(err);
|
||||
}
|
||||
resolve(null);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// 被动收到的临时会话消息uin->uid
|
||||
async getReceivedTempUinMap() {
|
||||
const stmt = 'SELECT * FROM temp_uins';
|
||||
return new Promise<Record<string, string>>((resolve, reject) => {
|
||||
this.db!.all(stmt, (err, rows: { uin: string, uid: string }[]) => {
|
||||
if (err) {
|
||||
logError('db could not get temp uin map', err);
|
||||
reject(err);
|
||||
}
|
||||
const map: Record<string, string> = {};
|
||||
rows.forEach(row => {
|
||||
map[row.uin] = row.uid;
|
||||
});
|
||||
resolve(map);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// 通过uin获取临时会话消息uid
|
||||
async getUidByTempUin(uid: string) {
|
||||
const stmt = 'SELECT * FROM temp_uins WHERE uin = ?';
|
||||
return new Promise<string>((resolve, reject) => {
|
||||
this.db!.get(stmt, [uid], (err, row: { uin: string, uid: string }) => {
|
||||
if (err) {
|
||||
logError('db could not get temp uin map', err);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row?.uid);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async addTempUin(uin: string, uid: string) {
|
||||
const existUid = await this.getUidByTempUin(uin);
|
||||
if (!existUid) {
|
||||
const stmt = this.db!.prepare('INSERT INTO temp_uins (uin, uid) VALUES (?, ?)');
|
||||
return new Promise((resolve, reject) => {
|
||||
stmt.run(uin, uid, function (err: any) {
|
||||
if (err) {
|
||||
logError('db could not add temp uin', err);
|
||||
reject(err);
|
||||
}
|
||||
resolve(null);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
async getLastSentTimeAndJoinTime(
|
||||
groupId: number
|
||||
): Promise<IRember[]> {
|
||||
logDebug("读取发言时间", groupId);
|
||||
return new Promise<IRember[]>((resolve, reject) => {
|
||||
this.db!.all(`SELECT * FROM "${groupId}" `, (err, rows: IRember[]) => {
|
||||
if (err) {
|
||||
logError("查询发言时间失败", groupId);
|
||||
return resolve([]);
|
||||
}
|
||||
logDebug("查询发言时间成功", groupId, rows);
|
||||
resolve(rows);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
insertLastSentTime(
|
||||
groupId: number,
|
||||
userId: number,
|
||||
time: number
|
||||
) {
|
||||
this.LURCache.set(groupId, userId, time)
|
||||
}
|
||||
async insertJoinTime(
|
||||
groupId: number,
|
||||
userId: number,
|
||||
time: number
|
||||
) {
|
||||
await this.createGroupInfoTimeTableIfNotExist(groupId);
|
||||
this.db!.all(
|
||||
`INSERT OR REPLACE INTO "${groupId}" (user_id, last_sent_time, join_time) VALUES (?,?,?)`,
|
||||
[userId, time, time],
|
||||
(err) => {
|
||||
if (err)
|
||||
logError(err),
|
||||
Promise.reject(),
|
||||
console.log("插入入群时间失败", userId, groupId);
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const dbUtil = new DBUtil();
|
||||
import { ElementType, FileElement, PicElement, PttElement, RawMessage, VideoElement } from '../../core/src/entities';
|
||||
|
||||
import sqlite3 from 'sqlite3';
|
||||
import { log, logDebug, logError } from '@/common/utils/log';
|
||||
import { NTQQMsgApi } from '@/core';
|
||||
import LRU from '@/common/utils/LRUCache';
|
||||
|
||||
export interface IRember {
|
||||
last_sent_time: number;
|
||||
join_time: number;
|
||||
user_id: number;
|
||||
}
|
||||
|
||||
|
||||
type DBMsg = {
|
||||
id: number,
|
||||
shortId: number,
|
||||
longId: string,
|
||||
seq: number,
|
||||
peerUid: string,
|
||||
chatType: number,
|
||||
}
|
||||
|
||||
type DBFile = {
|
||||
name: string; // 文件名
|
||||
path: string;
|
||||
url: string;
|
||||
size: number;
|
||||
uuid: string;
|
||||
msgId: string;
|
||||
elementId: string;
|
||||
element: PicElement | VideoElement | FileElement | PttElement;
|
||||
elementType: ElementType.PIC | ElementType.VIDEO | ElementType.FILE | ElementType.PTT;
|
||||
}
|
||||
|
||||
|
||||
class DBUtilBase {
|
||||
protected db: sqlite3.Database | undefined;
|
||||
|
||||
async init(dbPath: string) {
|
||||
if (this.db) {
|
||||
return;
|
||||
}
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
this.db = new sqlite3.Database(dbPath, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err) => {
|
||||
if (err) {
|
||||
logError('Could not connect to database', err);
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
this.createTable();
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
protected createTable() {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
|
||||
close() {
|
||||
this.db?.close();
|
||||
}
|
||||
}
|
||||
|
||||
class DBUtil extends DBUtilBase {
|
||||
private msgCache: Map<string | number, RawMessage> = new Map<string | number, RawMessage>();
|
||||
private globalMsgShortId = -2147483640;
|
||||
private groupIds: number[] = [];
|
||||
private LURCache = new LRU<number>();
|
||||
private LastSentCache = new (class {
|
||||
private cache: { gid: number; uid: number }[] = [];
|
||||
private maxSize: number;
|
||||
|
||||
constructor(maxSize: number = 5000) {
|
||||
this.maxSize = maxSize;
|
||||
}
|
||||
|
||||
get(gid: number, uid: number): boolean {
|
||||
const exists = this.cache.some(
|
||||
(entry) => entry.gid === gid && entry.uid === uid
|
||||
);
|
||||
if (!exists) {
|
||||
this.cache.push({ gid, uid });
|
||||
if (this.cache.length > this.maxSize) {
|
||||
this.cache.shift();
|
||||
}
|
||||
}
|
||||
|
||||
return exists;
|
||||
}
|
||||
})();
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
const interval = 1000 * 60 * 10; // 10分钟清理一次缓存
|
||||
setInterval(() => {
|
||||
logDebug('清理消息缓存');
|
||||
this.msgCache.forEach((msg, key) => {
|
||||
if ((Date.now() - parseInt(msg.msgTime) * 1000) > interval) {
|
||||
this.msgCache.delete(key);
|
||||
}
|
||||
});
|
||||
}, interval);
|
||||
}
|
||||
|
||||
async init(dbPath: string) {
|
||||
await super.init(dbPath);
|
||||
this.globalMsgShortId = await this.getCurrentMaxShortId();
|
||||
|
||||
|
||||
// 初始化群缓存列表
|
||||
this.db!.serialize(() => {
|
||||
const sql = 'SELECT * FROM sqlite_master WHERE type=\'table\'';
|
||||
this.db!.all(sql, [], (err, rows: { name: string }[]) => {
|
||||
if (err) return logError(err);
|
||||
rows.forEach((row) => this.groupIds.push(parseInt(row.name)));
|
||||
//logDebug(`已加载 ${groupIds.length} 个群`);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
this.LURCache.on(async (node) => {
|
||||
const { value: time, groupId, userId } = node;
|
||||
|
||||
logDebug('插入发言时间', userId, groupId);
|
||||
await this.createGroupInfoTimeTableIfNotExist(groupId);
|
||||
|
||||
const method = await this.getDataSetMethod(groupId, userId);
|
||||
logDebug('插入发言时间方法判断', userId, groupId, method);
|
||||
|
||||
const sql =
|
||||
method == 'update'
|
||||
? `UPDATE "${groupId}" SET last_sent_time = ? WHERE user_id = ?`
|
||||
: `INSERT INTO "${groupId}" (last_sent_time, user_id) VALUES (?, ?)`;
|
||||
|
||||
this.db!.all(sql, [time, userId], (err) => {
|
||||
if (err) {
|
||||
return logError('插入/更新发言时间失败', userId, groupId);
|
||||
}
|
||||
logDebug('插入/更新发言时间成功', userId, groupId);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
async getDataSetMethod(groupId: number, userId: number) {
|
||||
// 缓存记录
|
||||
if (this.LastSentCache.get(groupId, userId)) {
|
||||
logDebug('缓存命中', userId, groupId);
|
||||
return 'update';
|
||||
}
|
||||
|
||||
// 数据库判断
|
||||
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);
|
||||
}
|
||||
|
||||
if (rows.length === 0) {
|
||||
logDebug('查询发言时间不存在', userId, groupId);
|
||||
return resolve('insert');
|
||||
}
|
||||
|
||||
logDebug('查询发言时间存在', userId, groupId);
|
||||
resolve('update');
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
async createGroupInfoTimeTableIfNotExist(groupId: number) {
|
||||
const createTableSQL = (groupId: number) =>
|
||||
`CREATE TABLE IF NOT EXISTS "${groupId}" (
|
||||
user_id INTEGER,
|
||||
last_sent_time INTEGER,
|
||||
join_time INTEGER,
|
||||
PRIMARY KEY (user_id)
|
||||
);`;
|
||||
|
||||
if (this.groupIds.includes(groupId)) {
|
||||
return;
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
const sql = createTableSQL(groupId);
|
||||
this.db!.all(sql, (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
this.groupIds.push(groupId);
|
||||
resolve(true);
|
||||
});
|
||||
});
|
||||
}
|
||||
protected createTable() {
|
||||
// 消息记录
|
||||
const createTableSQL = `
|
||||
CREATE TABLE IF NOT EXISTS msgs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
shortId INTEGER NOT NULL UNIQUE,
|
||||
longId TEXT NOT NULL UNIQUE,
|
||||
seq INTEGER NOT NULL,
|
||||
peerUid TEXT NOT NULL,
|
||||
chatType INTEGER NOT NULL
|
||||
)`;
|
||||
this.db!.run(createTableSQL, function (err) {
|
||||
if (err) {
|
||||
logError('Could not create table msgs', err.stack);
|
||||
}
|
||||
});
|
||||
|
||||
// 文件缓存
|
||||
const createFileTableSQL = `
|
||||
CREATE TABLE IF NOT EXISTS files (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL,
|
||||
path TEXT NOT NULL,
|
||||
url TEXT,
|
||||
size INTEGER NOT NULL,
|
||||
uuid TEXT,
|
||||
elementType INTEGER,
|
||||
element TEXT NOT NULL,
|
||||
elementId TEXT NOT NULL,
|
||||
msgId TEXT NOT NULL
|
||||
)`;
|
||||
this.db!.run(createFileTableSQL, function (err) {
|
||||
if (err) {
|
||||
logError('Could not create table files', err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private async getCurrentMaxShortId() {
|
||||
return new Promise<number>((resolve, reject) => {
|
||||
this.db!.get('SELECT MAX(shortId) as maxId FROM msgs', (err, row: { maxId: number }) => {
|
||||
if (err) {
|
||||
logDebug('Could not get max short id, Use default -2147483640', err);
|
||||
return resolve(-2147483640);
|
||||
}
|
||||
logDebug('数据库中消息最大短id', row?.maxId);
|
||||
resolve(row?.maxId ?? -2147483640);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private async getMsg(query: string, params: any[]) {
|
||||
const stmt = this.db!.prepare(query);
|
||||
return new Promise<RawMessage | null>((resolve, reject) => {
|
||||
stmt.get(...params, (err: any, row: DBMsg) => {
|
||||
// log("getMsg", row, err);
|
||||
if (err) {
|
||||
logError('Could not get msg', err, query, params);
|
||||
return resolve(null);
|
||||
}
|
||||
if (!row) {
|
||||
// logDebug('不存在数据库中的消息,不进行处理', query, params);
|
||||
resolve(null);
|
||||
return;
|
||||
}
|
||||
const msgId = row.longId;
|
||||
NTQQMsgApi.getMsgsByMsgId({ peerUid: row.peerUid, chatType: row.chatType }, [msgId]).then(res => {
|
||||
const msg = res.msgList[0];
|
||||
if (!msg) {
|
||||
resolve(null);
|
||||
return;
|
||||
}
|
||||
msg.id = row.shortId;
|
||||
resolve(msg);
|
||||
}).catch(e => {
|
||||
resolve(null);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async getMsgByShortId(shortId: number): Promise<RawMessage | null> {
|
||||
if (this.msgCache.has(shortId)) {
|
||||
return this.msgCache.get(shortId)!;
|
||||
}
|
||||
const getStmt = 'SELECT * FROM msgs WHERE shortId = ?';
|
||||
return this.getMsg(getStmt, [shortId]);
|
||||
}
|
||||
|
||||
async getMsgByLongId(longId: string): Promise<RawMessage | null> {
|
||||
if (this.msgCache.has(longId)) {
|
||||
return this.msgCache.get(longId)!;
|
||||
}
|
||||
return this.getMsg('SELECT * FROM msgs WHERE longId = ?', [longId]);
|
||||
}
|
||||
|
||||
async getMsgBySeq(peerUid: string, seq: string): Promise<RawMessage | null> {
|
||||
const stmt = 'SELECT * FROM msgs WHERE peerUid = ? AND seq = ?';
|
||||
return this.getMsg(stmt, [peerUid, seq]);
|
||||
}
|
||||
|
||||
async addMsg(msg: RawMessage, update = true): Promise<number> {
|
||||
const existMsg = await this.getMsgByLongId(msg.msgId);
|
||||
if (existMsg) {
|
||||
// logDebug('消息已存在,更新数据库', msg.msgId);
|
||||
if (update) this.updateMsg(msg).then();
|
||||
return existMsg.id!;
|
||||
}
|
||||
const stmt = this.db!.prepare('INSERT INTO msgs (shortId, longId, seq, peerUid, chatType) VALUES (?, ?, ?, ?, ?)');
|
||||
// const runAsync = promisify(stmt.run.bind(stmt));
|
||||
const shortId = ++this.globalMsgShortId;
|
||||
msg.id = shortId;
|
||||
//logDebug(`记录消息到数据库, 消息长id: ${msg.msgId}, 短id: ${msg.id}`);
|
||||
this.msgCache.set(shortId, msg);
|
||||
this.msgCache.set(msg.msgId, msg);
|
||||
stmt.run(this.globalMsgShortId, msg.msgId, msg.msgSeq.toString(), msg.peerUid, msg.chatType, (err: any) => {
|
||||
if (err) {
|
||||
if (err.errno === 19) {
|
||||
this.getMsgByLongId(msg.msgId).then((msg: RawMessage | null) => {
|
||||
if (msg) {
|
||||
this.msgCache.set(shortId, msg);
|
||||
this.msgCache.set(msg.msgId, msg);
|
||||
// logDebug('获取消息短id成功', msg.id);
|
||||
} else {
|
||||
logError('db could not get msg by long id', err);
|
||||
}
|
||||
}).catch(e => logError('db getMsgByLongId error', e));
|
||||
} else {
|
||||
logError('db could not add msg', err);
|
||||
}
|
||||
}
|
||||
});
|
||||
return shortId;
|
||||
}
|
||||
|
||||
async updateMsg(msg: RawMessage) {
|
||||
const existMsg = this.msgCache.get(msg.msgId);
|
||||
if (existMsg) {
|
||||
Object.assign(existMsg, msg);
|
||||
}
|
||||
//logDebug(`更新消息, shortId:${msg.id}, seq: ${msg.msgSeq}, msgId: ${msg.msgId}`);
|
||||
const stmt = this.db!.prepare('UPDATE msgs SET seq=? WHERE longId=?');
|
||||
stmt.run(msg.msgSeq, msg.msgId, (err: any) => {
|
||||
if (err) {
|
||||
logError('updateMsg db error', err);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
async addFileCache(file: DBFile) {
|
||||
const stmt = this.db!.prepare('INSERT INTO files (name, path, url, size, uuid, elementType ,element, elementId, msgId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)');
|
||||
return new Promise((resolve, reject) => {
|
||||
stmt.run(file.name, file.path, file.url, file.size, file.uuid,
|
||||
file.elementType,
|
||||
JSON.stringify(file.element),
|
||||
file.elementId,
|
||||
file.msgId,
|
||||
function (err: any) {
|
||||
if (err) {
|
||||
logError('db could not add file', err);
|
||||
reject(err);
|
||||
}
|
||||
resolve(null);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private async getFileCache(query: string, params: any[]) {
|
||||
const stmt = this.db!.prepare(query);
|
||||
return new Promise<DBFile | null>((resolve, reject) => {
|
||||
stmt.get(...params, (err: any, row: DBFile & { element: string }) => {
|
||||
if (err) {
|
||||
logError('db could not get file cache', err);
|
||||
reject(err);
|
||||
}
|
||||
if (row) {
|
||||
row.element = JSON.parse(row.element);
|
||||
}
|
||||
resolve(row);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async getFileCacheByName(name: string): Promise<DBFile | null> {
|
||||
return this.getFileCache('SELECT * FROM files WHERE name = ?', [name]);
|
||||
}
|
||||
|
||||
async getFileCacheByUuid(uuid: string): Promise<DBFile | null> {
|
||||
return this.getFileCache('SELECT * FROM files WHERE uuid = ?', [uuid]);
|
||||
}
|
||||
|
||||
// todo: 是否所有的文件都有uuid?语音消息有没有uuid?
|
||||
async updateFileCache(file: DBFile) {
|
||||
const stmt = this.db!.prepare('UPDATE files SET path = ?, url = ? WHERE uuid = ?');
|
||||
return new Promise((resolve, reject) => {
|
||||
stmt.run(file.path, file.url, file.uuid, function (err: any) {
|
||||
if (err) {
|
||||
logError('db could not update file cache', err);
|
||||
reject(err);
|
||||
}
|
||||
resolve(null);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async getLastSentTimeAndJoinTime(
|
||||
groupId: number
|
||||
): Promise<IRember[]> {
|
||||
logDebug('读取发言时间', groupId);
|
||||
return new Promise<IRember[]>((resolve, reject) => {
|
||||
this.db!.all(`SELECT * FROM "${groupId}" `, (err, rows: IRember[]) => {
|
||||
if (err) {
|
||||
logError('查询发言时间失败', groupId);
|
||||
return resolve([]);
|
||||
}
|
||||
logDebug('查询发言时间成功', groupId, rows);
|
||||
resolve(rows);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
insertLastSentTime(
|
||||
groupId: number,
|
||||
userId: number,
|
||||
time: number
|
||||
) {
|
||||
this.LURCache.set(groupId, userId, time);
|
||||
}
|
||||
async insertJoinTime(
|
||||
groupId: number,
|
||||
userId: number,
|
||||
time: number
|
||||
) {
|
||||
await this.createGroupInfoTimeTableIfNotExist(groupId);
|
||||
this.db!.all(
|
||||
`INSERT OR REPLACE INTO "${groupId}" (user_id, last_sent_time, join_time) VALUES (?,?,?)`,
|
||||
[userId, time, time],
|
||||
(err) => {
|
||||
if (err)
|
||||
logError(err),
|
||||
Promise.reject(),
|
||||
logError('插入入群时间失败', userId, groupId);
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const dbUtil = new DBUtil();
|
||||
|
@@ -3,7 +3,7 @@ import fsPromise from 'fs/promises';
|
||||
import crypto from 'crypto';
|
||||
import util from 'util';
|
||||
import path from 'node:path';
|
||||
import { log } from './log';
|
||||
import { log, logError } from './log';
|
||||
import { dbUtil } from '@/common/utils/db';
|
||||
import * as fileType from 'file-type';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
@@ -262,12 +262,12 @@ export async function copyFolder(sourcePath: string, destPath: string) {
|
||||
try {
|
||||
await fsPromise.copyFile(srcPath, dstPath);
|
||||
} catch (error) {
|
||||
console.error(`无法复制文件 '${srcPath}' 到 '${dstPath}': ${error}`);
|
||||
logError(`无法复制文件 '${srcPath}' 到 '${dstPath}': ${error}`);
|
||||
// 这里可以决定是否要继续复制其他文件
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('复制文件夹时出错:', error);
|
||||
logError('复制文件夹时出错:', error);
|
||||
}
|
||||
}
|
||||
|
@@ -4,7 +4,7 @@ import path from 'node:path';
|
||||
import { SelfInfo } from '@/core';
|
||||
import { dirname } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
import chalk from 'chalk';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
@@ -42,14 +42,14 @@ const logConfig: Configuration = {
|
||||
maxLoogSize: 10485760, // 日志文件的最大大小(单位:字节),这里设置为10MB
|
||||
layout: {
|
||||
type: 'pattern',
|
||||
pattern: '%d{yyyy-MM-dd hh:mm:ss} [%p] - %m'
|
||||
pattern: '%d{yyyy-MM-dd hh:mm:ss} [%p] %X{userInfo} | %m'
|
||||
}
|
||||
},
|
||||
ConsoleAppender: { // 输出到控制台的appender
|
||||
type: 'console',
|
||||
layout: {
|
||||
type: 'pattern',
|
||||
pattern: '%d{yyyy-MM-dd hh:mm:ss} [%p] - %m'
|
||||
pattern: `%d{yyyy-MM-dd hh:mm:ss} [%[%p%]] ${chalk.magenta('%X{userInfo}')} | %m`
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -61,7 +61,9 @@ const logConfig: Configuration = {
|
||||
};
|
||||
|
||||
log4js.configure(logConfig);
|
||||
|
||||
const loggerConsole = log4js.getLogger('console');
|
||||
const loggerFile = log4js.getLogger('file');
|
||||
const loggerDefault = log4js.getLogger('default');
|
||||
|
||||
export function setLogLevel(fileLogLevel: LogLevel, consoleLogLevel: LogLevel) {
|
||||
logConfig.categories.file.level = fileLogLevel;
|
||||
@@ -70,12 +72,12 @@ export function setLogLevel(fileLogLevel: LogLevel, consoleLogLevel: LogLevel) {
|
||||
}
|
||||
|
||||
export function setLogSelfInfo(selfInfo: SelfInfo) {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-expect-error
|
||||
logConfig.appenders.FileAppender.layout.pattern = logConfig.appenders.ConsoleAppender.layout.pattern =
|
||||
`%d{yyyy-MM-dd hh:mm:ss} [%p] ${selfInfo.nick}(${selfInfo.uin}) %m`;
|
||||
log4js.configure(logConfig);
|
||||
const userInfo = `${selfInfo.nick}(${selfInfo.uin})`;
|
||||
loggerConsole.addContext('userInfo', userInfo);
|
||||
loggerFile.addContext('userInfo', userInfo);
|
||||
loggerDefault.addContext('userInfo', userInfo);
|
||||
}
|
||||
setLogSelfInfo({ nick: '', uin: '', uid: '' });
|
||||
|
||||
let fileLogEnabled = true;
|
||||
let consoleLogEnabled = true;
|
||||
@@ -86,7 +88,7 @@ export function enableConsoleLog(enable: boolean) {
|
||||
consoleLogEnabled = enable;
|
||||
}
|
||||
|
||||
function formatMsg(msg: any[]){
|
||||
function formatMsg(msg: any[]) {
|
||||
let logMsg = '';
|
||||
for (const msgItem of msg) {
|
||||
// 判断是否是对象
|
||||
@@ -97,15 +99,18 @@ function formatMsg(msg: any[]){
|
||||
}
|
||||
logMsg += msgItem + ' ';
|
||||
}
|
||||
return '\n' + logMsg + '\n';
|
||||
return logMsg;
|
||||
}
|
||||
|
||||
function _log(level: LogLevel, ...args: any[]){
|
||||
if (consoleLogEnabled){
|
||||
log4js.getLogger('console')[level](formatMsg(args));
|
||||
// eslint-disable-next-line no-control-regex
|
||||
const colorEscape = /\x1B[@-_][0-?]*[ -/]*[@-~]/g;
|
||||
|
||||
function _log(level: LogLevel, ...args: any[]) {
|
||||
if (consoleLogEnabled) {
|
||||
loggerConsole[level](formatMsg(args));
|
||||
}
|
||||
if (fileLogEnabled){
|
||||
log4js.getLogger('file')[level](formatMsg(args));
|
||||
if (fileLogEnabled) {
|
||||
loggerFile[level](formatMsg(args).replace(colorEscape, ''));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,3 +126,11 @@ export function logDebug(...args: any[]) {
|
||||
export function logError(...args: any[]) {
|
||||
_log(LogLevel.ERROR, ...args);
|
||||
}
|
||||
|
||||
export function logWarn(...args: any[]) {
|
||||
_log(LogLevel.WARN, ...args);
|
||||
}
|
||||
|
||||
export function logFatal(...args: any[]) {
|
||||
_log(LogLevel.FATAL, ...args);
|
||||
}
|
@@ -1,17 +1,74 @@
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import { networkInterfaces } from 'os';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
|
||||
// 缓解Win7设备兼容性问题
|
||||
let osName: string;
|
||||
// 设备ID
|
||||
let machineId: Promise<string>;
|
||||
|
||||
try {
|
||||
osName = os.hostname();
|
||||
} catch (e) {
|
||||
osName = 'NapCat'; // + crypto.randomUUID().substring(0, 4);
|
||||
}
|
||||
|
||||
const invalidMacAddresses = new Set([
|
||||
'00:00:00:00:00:00',
|
||||
'ff:ff:ff:ff:ff:ff',
|
||||
'ac:de:48:00:11:22'
|
||||
]);
|
||||
|
||||
function validateMacAddress(candidate: string): boolean {
|
||||
// eslint-disable-next-line no-useless-escape
|
||||
const tempCandidate = candidate.replace(/\-/g, ':').toLowerCase();
|
||||
return !invalidMacAddresses.has(tempCandidate);
|
||||
}
|
||||
|
||||
export async function getMachineId(): Promise<string> {
|
||||
if (!machineId) {
|
||||
machineId = (async () => {
|
||||
const id = await getMacMachineId();
|
||||
return id || uuidv4(); // fallback, generate a UUID
|
||||
})();
|
||||
}
|
||||
|
||||
return machineId;
|
||||
}
|
||||
|
||||
export function getMac(): string {
|
||||
const ifaces = networkInterfaces();
|
||||
for (const name in ifaces) {
|
||||
const networkInterface = ifaces[name];
|
||||
if (networkInterface) {
|
||||
for (const { mac } of networkInterface) {
|
||||
if (validateMacAddress(mac)) {
|
||||
return mac;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error('Unable to retrieve mac address (unexpected format)');
|
||||
}
|
||||
|
||||
async function getMacMachineId(): Promise<string | undefined> {
|
||||
try {
|
||||
const crypto = await import('crypto');
|
||||
const macAddress = getMac();
|
||||
return crypto.createHash('sha256').update(macAddress, 'utf8').digest('hex');
|
||||
} catch (err) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
const homeDir = os.homedir();
|
||||
|
||||
|
||||
export const systemPlatform = os.platform();
|
||||
export const cpuArch = os.arch();
|
||||
export const systemVersion = os.release();
|
||||
export const hostname = osName;
|
||||
const homeDir = os.homedir();
|
||||
export const downloadsPath = path.join(homeDir, 'Downloads');
|
||||
export const systemName = os.type();
|
||||
export const systemName = os.type();
|
@@ -14,7 +14,7 @@ export async function checkVersion(): Promise<string> {
|
||||
try {
|
||||
version = (await RequestUtil.HttpGetJson<{ version: string }>(url)).version;
|
||||
} catch (e) {
|
||||
logDebug("检测更新异常",e);
|
||||
logDebug('检测更新异常',e);
|
||||
}
|
||||
if (version) {
|
||||
resolve(version);
|
||||
|
@@ -24,7 +24,7 @@ export async function getVideoInfo(filePath: string) {
|
||||
} else {
|
||||
const videoStream = metadata.streams.find((s: { codec_type: string; }) => s.codec_type === 'video');
|
||||
if (videoStream) {
|
||||
console.log(`视频尺寸: ${videoStream.width}x${videoStream.height}`);
|
||||
log(`视频尺寸: ${videoStream.width}x${videoStream.height}`);
|
||||
} else {
|
||||
return reject('未找到视频流信息。');
|
||||
}
|
||||
|
2
src/core
2
src/core
Submodule src/core updated: a0a4fd1c99...18bafe6a4d
@@ -1 +1 @@
|
||||
function _0x5222(){var _0x3091f8=['6273aTfWba','9981447HMXcwA','2890585oSjsvJ','8TdYIWz','3243588DGNCtB','getGroupCode','43803705QezSUk','1200309ykLrjF','1770620oiFLFj','6070xVmufr','18IROTnB','4AICfZO'];_0x5222=function(){return _0x3091f8;};return _0x5222();}var _0x5fba51=_0x5d34;(function(_0x4bf11c,_0x14198d){var _0x2fd03f=_0x5d34,_0x4d6419=_0x4bf11c();while(!![]){try{var _0x4850c9=parseInt(_0x2fd03f(0xf8))/0x1+-parseInt(_0x2fd03f(0xed))/0x2+-parseInt(_0x2fd03f(0xf5))/0x3*(-parseInt(_0x2fd03f(0xf0))/0x4)+-parseInt(_0x2fd03f(0xf3))/0x5*(-parseInt(_0x2fd03f(0xef))/0x6)+-parseInt(_0x2fd03f(0xf2))/0x7*(-parseInt(_0x2fd03f(0xf4))/0x8)+-parseInt(_0x2fd03f(0xf1))/0x9*(-parseInt(_0x2fd03f(0xee))/0xa)+-parseInt(_0x2fd03f(0xf7))/0xb;if(_0x4850c9===_0x14198d)break;else _0x4d6419['push'](_0x4d6419['shift']());}catch(_0xba978e){_0x4d6419['push'](_0x4d6419['shift']());}}}(_0x5222,0xf380f));function _0x5d34(_0x5ef46e,_0x5e79b3){var _0x522282=_0x5222();return _0x5d34=function(_0x5d3489,_0x588abc){_0x5d3489=_0x5d3489-0xed;var _0x48f8f8=_0x522282[_0x5d3489];return _0x48f8f8;},_0x5d34(_0x5ef46e,_0x5e79b3);}export class DependsAdapter{['onMSFStatusChange'](_0x358442,_0x58882d){}['onMSFSsoError'](_0xfb5a9){}[_0x5fba51(0xf6)](_0x260bf6){}}
|
||||
function _0x2e29(){var _0x3f9d7f=['157053weZnyn','2pMtgjx','771432FIXglJ','1736820uhFOHF','964264PkpyVz','248XNmvWS','61137tNliPv','67501Oripge','getGroupCode','165575WShzhi','630HUlSaF'];_0x2e29=function(){return _0x3f9d7f;};return _0x2e29();}var _0x147761=_0x55a7;(function(_0x1f294a,_0x1c841d){var _0x1bcce1=_0x55a7,_0xe2330b=_0x1f294a();while(!![]){try{var _0xa7c05b=-parseInt(_0x1bcce1(0x1ee))/0x1+-parseInt(_0x1bcce1(0x1ed))/0x2*(parseInt(_0x1bcce1(0x1ec))/0x3)+parseInt(_0x1bcce1(0x1f0))/0x4+parseInt(_0x1bcce1(0x1f5))/0x5+parseInt(_0x1bcce1(0x1ef))/0x6+parseInt(_0x1bcce1(0x1f3))/0x7*(parseInt(_0x1bcce1(0x1f1))/0x8)+-parseInt(_0x1bcce1(0x1f2))/0x9*(-parseInt(_0x1bcce1(0x1eb))/0xa);if(_0xa7c05b===_0x1c841d)break;else _0xe2330b['push'](_0xe2330b['shift']());}catch(_0x332356){_0xe2330b['push'](_0xe2330b['shift']());}}}(_0x2e29,0x71f48));function _0x55a7(_0x628295,_0x4d9860){var _0x2e29b2=_0x2e29();return _0x55a7=function(_0x55a725,_0x1342b0){_0x55a725=_0x55a725-0x1eb;var _0x7f31b9=_0x2e29b2[_0x55a725];return _0x7f31b9;},_0x55a7(_0x628295,_0x4d9860);}export class DependsAdapter{['onMSFStatusChange'](_0x7fcf75,_0x3fc92f){}['onMSFSsoError'](_0x2d84fb){}[_0x147761(0x1f4)](_0x4eae47){}}
|
@@ -1 +1 @@
|
||||
var _0x446bc4=_0x23d3;(function(_0x29f86c,_0x5c4b14){var _0x248c41=_0x23d3,_0x2d6705=_0x29f86c();while(!![]){try{var _0x492b46=-parseInt(_0x248c41(0x1e6))/0x1*(parseInt(_0x248c41(0x1f1))/0x2)+parseInt(_0x248c41(0x1ea))/0x3*(-parseInt(_0x248c41(0x1e5))/0x4)+parseInt(_0x248c41(0x1e7))/0x5*(-parseInt(_0x248c41(0x1e4))/0x6)+parseInt(_0x248c41(0x1ee))/0x7*(-parseInt(_0x248c41(0x1e8))/0x8)+-parseInt(_0x248c41(0x1ef))/0x9*(-parseInt(_0x248c41(0x1ec))/0xa)+parseInt(_0x248c41(0x1eb))/0xb+parseInt(_0x248c41(0x1ed))/0xc;if(_0x492b46===_0x5c4b14)break;else _0x2d6705['push'](_0x2d6705['shift']());}catch(_0x19c0ed){_0x2d6705['push'](_0x2d6705['shift']());}}}(_0x31c0,0x869c3));function _0x23d3(_0x4975dd,_0x15298b){var _0x31c0be=_0x31c0();return _0x23d3=function(_0x23d3fb,_0x3a72cc){_0x23d3fb=_0x23d3fb-0x1e3;var _0x3c86b0=_0x31c0be[_0x23d3fb];return _0x3c86b0;},_0x23d3(_0x4975dd,_0x15298b);}export class DispatcherAdapter{[_0x446bc4(0x1f0)](_0x29d72b){}[_0x446bc4(0x1e3)](_0x2e1f1a){}[_0x446bc4(0x1e9)](_0x65ccb0){}}function _0x31c0(){var _0x3b66c2=['11163240gZXndg','418210TdxHIv','24745548UBUMrc','6461469ZxcrWQ','9xVzuwt','dispatchRequest','9686KBUNcw','dispatchCall','1287066gmiUyH','4Yfdlzd','180wspPyu','5lktlSW','8uPKQfS','dispatchCallWithJson','1674327qyXtIY'];_0x31c0=function(){return _0x3b66c2;};return _0x31c0();}
|
||||
var _0x428404=_0x3ddd;function _0x3ddd(_0x20963f,_0x5bd082){var _0x67c18=_0x67c1();return _0x3ddd=function(_0x3ddd66,_0x21959e){_0x3ddd66=_0x3ddd66-0x10e;var _0x43f343=_0x67c18[_0x3ddd66];return _0x43f343;},_0x3ddd(_0x20963f,_0x5bd082);}(function(_0x15e797,_0x41e172){var _0x3136f9=_0x3ddd,_0x4e73ed=_0x15e797();while(!![]){try{var _0x462ff5=parseInt(_0x3136f9(0x10f))/0x1*(-parseInt(_0x3136f9(0x112))/0x2)+-parseInt(_0x3136f9(0x117))/0x3*(-parseInt(_0x3136f9(0x114))/0x4)+parseInt(_0x3136f9(0x116))/0x5*(parseInt(_0x3136f9(0x118))/0x6)+parseInt(_0x3136f9(0x11a))/0x7*(-parseInt(_0x3136f9(0x113))/0x8)+-parseInt(_0x3136f9(0x110))/0x9*(parseInt(_0x3136f9(0x119))/0xa)+parseInt(_0x3136f9(0x10e))/0xb+parseInt(_0x3136f9(0x115))/0xc;if(_0x462ff5===_0x41e172)break;else _0x4e73ed['push'](_0x4e73ed['shift']());}catch(_0x53b9bc){_0x4e73ed['push'](_0x4e73ed['shift']());}}}(_0x67c1,0x91b53));function _0x67c1(){var _0x580e22=['10769693YQsZbr','6xWJxOR','9OmMNTI','dispatchCallWithJson','118540cLEoZl','4146616rtGYyv','8LIOqhx','6321276swLwSx','20QMlloS','498063uEoMXF','363522ufOASE','911330LXASnV','14HXtWyK'];_0x67c1=function(){return _0x580e22;};return _0x67c1();}export class DispatcherAdapter{['dispatchRequest'](_0x10b32a){}['dispatchCall'](_0x2af1fa){}[_0x428404(0x111)](_0x5ae585){}}
|
@@ -1 +1 @@
|
||||
var _0x57f683=_0x159c;(function(_0xd6f12e,_0xd56e15){var _0x2105d2=_0x159c,_0x1a3224=_0xd6f12e();while(!![]){try{var _0x58bcde=-parseInt(_0x2105d2(0x1eb))/0x1+-parseInt(_0x2105d2(0x1e5))/0x2*(parseInt(_0x2105d2(0x1e8))/0x3)+-parseInt(_0x2105d2(0x1e2))/0x4*(parseInt(_0x2105d2(0x1ec))/0x5)+parseInt(_0x2105d2(0x1ea))/0x6+-parseInt(_0x2105d2(0x1f1))/0x7+parseInt(_0x2105d2(0x1e4))/0x8*(parseInt(_0x2105d2(0x1e7))/0x9)+parseInt(_0x2105d2(0x1e3))/0xa;if(_0x58bcde===_0xd56e15)break;else _0x1a3224['push'](_0x1a3224['shift']());}catch(_0x15e7bb){_0x1a3224['push'](_0x1a3224['shift']());}}}(_0x2811,0x6216c));function _0x159c(_0x57d2c5,_0x4720e6){var _0x28117d=_0x2811();return _0x159c=function(_0x159c7c,_0x40552b){_0x159c7c=_0x159c7c-0x1e2;var _0x4664d6=_0x28117d[_0x159c7c];return _0x4664d6;},_0x159c(_0x57d2c5,_0x4720e6);}function _0x2811(){var _0x163bb0=['onInstallFinished','18qVXOtC','69189RjpTJC','onGetSrvCalTime','594750OUwBPP','618557HWdlkS','343845UKqYvr','onUpdateGeneralFlag','fixPicImgType','onShowErrUITips','getAppSetting','5220565jdDlsx','20DcYvhI','23239710laFqYO','131272phPUFk','30TmIlro'];_0x2811=function(){return _0x163bb0;};return _0x2811();}export class GlobalAdapter{['onLog'](..._0x523c0b){}[_0x57f683(0x1e9)](..._0x2bf536){}[_0x57f683(0x1ef)](..._0x485cd2){}[_0x57f683(0x1ee)](..._0x12aa96){}[_0x57f683(0x1f0)](..._0x303573){}[_0x57f683(0x1e6)](..._0x52a026){}[_0x57f683(0x1ed)](..._0x59ab7f){}['onGetOfflineMsg'](..._0x5bc331){}}
|
||||
var _0x12331c=_0x1b89;(function(_0x13d288,_0xc82705){var _0x27590a=_0x1b89,_0x39e81b=_0x13d288();while(!![]){try{var _0x78b2ad=-parseInt(_0x27590a(0x87))/0x1*(parseInt(_0x27590a(0x8b))/0x2)+parseInt(_0x27590a(0x94))/0x3*(parseInt(_0x27590a(0x8d))/0x4)+-parseInt(_0x27590a(0x84))/0x5+parseInt(_0x27590a(0x91))/0x6*(parseInt(_0x27590a(0x93))/0x7)+parseInt(_0x27590a(0x8a))/0x8*(parseInt(_0x27590a(0x88))/0x9)+-parseInt(_0x27590a(0x86))/0xa+parseInt(_0x27590a(0x95))/0xb;if(_0x78b2ad===_0xc82705)break;else _0x39e81b['push'](_0x39e81b['shift']());}catch(_0x2c8a82){_0x39e81b['push'](_0x39e81b['shift']());}}}(_0x3f52,0xd8537));function _0x1b89(_0x47fe65,_0x16511d){var _0x3f524b=_0x3f52();return _0x1b89=function(_0x1b895e,_0x35ca06){_0x1b895e=_0x1b895e-0x84;var _0x5cf9a9=_0x3f524b[_0x1b895e];return _0x5cf9a9;},_0x1b89(_0x47fe65,_0x16511d);}function _0x3f52(){var _0x52071e=['5954365uXmOGc','getAppSetting','6172970gqCqji','285148GXjAZv','81QCmJYQ','onGetSrvCalTime','34280OyVxgG','2loyWem','onInstallFinished','1236588LIbVlp','onGetOfflineMsg','onUpdateGeneralFlag','onLog','12naixoE','onShowErrUITips','5904458QojAPh','3lytwYt','10391579SHGTUz'];_0x3f52=function(){return _0x52071e;};return _0x3f52();}export class GlobalAdapter{[_0x12331c(0x90)](..._0x539419){}[_0x12331c(0x89)](..._0xa6fee8){}[_0x12331c(0x92)](..._0x19ebf6){}['fixPicImgType'](..._0x26f154){}[_0x12331c(0x85)](..._0x100aa9){}[_0x12331c(0x8c)](..._0x3ac4a2){}[_0x12331c(0x8f)](..._0x421558){}[_0x12331c(0x8e)](..._0x441583){}}
|
@@ -1 +1 @@
|
||||
(function(_0x459b6c,_0xbe8aba){var _0x5f4bbd=_0x3502,_0x44fc04=_0x459b6c();while(!![]){try{var _0x54afcd=-parseInt(_0x5f4bbd(0x1ca))/0x1+-parseInt(_0x5f4bbd(0x1d0))/0x2+parseInt(_0x5f4bbd(0x1ce))/0x3+parseInt(_0x5f4bbd(0x1c9))/0x4*(-parseInt(_0x5f4bbd(0x1cf))/0x5)+-parseInt(_0x5f4bbd(0x1d1))/0x6+parseInt(_0x5f4bbd(0x1cc))/0x7*(parseInt(_0x5f4bbd(0x1cb))/0x8)+parseInt(_0x5f4bbd(0x1cd))/0x9;if(_0x54afcd===_0xbe8aba)break;else _0x44fc04['push'](_0x44fc04['shift']());}catch(_0x5739de){_0x44fc04['push'](_0x44fc04['shift']());}}}(_0x5d6f,0x1d0e2));export*from'./NodeIDependsAdapter';function _0x3502(_0x51e4e7,_0x739e67){var _0x5d6f78=_0x5d6f();return _0x3502=function(_0x350229,_0x130029){_0x350229=_0x350229-0x1c9;var _0x3c3026=_0x5d6f78[_0x350229];return _0x3c3026;},_0x3502(_0x51e4e7,_0x739e67);}export*from'./NodeIDispatcherAdapter';export*from'./NodeIGlobalAdapter';function _0x5d6f(){var _0x3610ea=['52vRScrw','25856oiAZCW','1368344RjJglV','7Jcuwfz','939915xTemSD','663786JOdCmy','51905luPwgg','109624OShybw','972654VhkBIU'];_0x5d6f=function(){return _0x3610ea;};return _0x5d6f();}
|
||||
(function(_0x2b5310,_0x59cdd4){var _0x3cddae=_0x2990,_0x478f72=_0x2b5310();while(!![]){try{var _0x22bdd2=parseInt(_0x3cddae(0x1d2))/0x1*(parseInt(_0x3cddae(0x1d3))/0x2)+-parseInt(_0x3cddae(0x1d5))/0x3*(-parseInt(_0x3cddae(0x1d8))/0x4)+-parseInt(_0x3cddae(0x1db))/0x5+-parseInt(_0x3cddae(0x1d4))/0x6*(parseInt(_0x3cddae(0x1d7))/0x7)+-parseInt(_0x3cddae(0x1d6))/0x8+-parseInt(_0x3cddae(0x1d9))/0x9+-parseInt(_0x3cddae(0x1da))/0xa*(-parseInt(_0x3cddae(0x1dc))/0xb);if(_0x22bdd2===_0x59cdd4)break;else _0x478f72['push'](_0x478f72['shift']());}catch(_0x5bfb27){_0x478f72['push'](_0x478f72['shift']());}}}(_0x29a1,0xaa850));function _0x2990(_0x468e49,_0x26c3b0){var _0x29a191=_0x29a1();return _0x2990=function(_0x29900d,_0x4ac60a){_0x29900d=_0x29900d-0x1d2;var _0x254939=_0x29a191[_0x29900d];return _0x254939;},_0x2990(_0x468e49,_0x26c3b0);}export*from'./NodeIDependsAdapter';export*from'./NodeIDispatcherAdapter';function _0x29a1(){var _0x44f37e=['9084131KlPxxQ','2777384hXKQkx','4632111wKYddt','1330NfPSJo','3737995TmsusY','192885juDJtu','77815wPWdYj','20nTlfsq','6YMvloe','3cCSDLO','4369536uFniCZ'];_0x29a1=function(){return _0x44f37e;};return _0x29a1();}export*from'./NodeIGlobalAdapter';
|
41
src/core.lib/src/apis/collection.d.ts
vendored
Normal file
41
src/core.lib/src/apis/collection.d.ts
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
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
src/core.lib/src/apis/collection.js
Normal file
1
src/core.lib/src/apis/collection.js
Normal file
@@ -0,0 +1 @@
|
||||
const _0x31a1aa=_0x2e9c;function _0x2e9c(_0x4a5a11,_0x8a8f57){const _0x185e0b=_0x185e();return _0x2e9c=function(_0x2e9cf2,_0x5360b7){_0x2e9cf2=_0x2e9cf2-0x16e;let _0x4cedc9=_0x185e0b[_0x2e9cf2];return _0x4cedc9;},_0x2e9c(_0x4a5a11,_0x8a8f57);}(function(_0x1223c1,_0x36630f){const _0x37843f=_0x2e9c,_0x1298ec=_0x1223c1();while(!![]){try{const _0x27c51c=parseInt(_0x37843f(0x17c))/0x1+-parseInt(_0x37843f(0x173))/0x2+-parseInt(_0x37843f(0x175))/0x3+parseInt(_0x37843f(0x179))/0x4*(parseInt(_0x37843f(0x174))/0x5)+-parseInt(_0x37843f(0x17b))/0x6*(parseInt(_0x37843f(0x178))/0x7)+parseInt(_0x37843f(0x172))/0x8+parseInt(_0x37843f(0x17a))/0x9;if(_0x27c51c===_0x36630f)break;else _0x1298ec['push'](_0x1298ec['shift']());}catch(_0x2b319d){_0x1298ec['push'](_0x1298ec['shift']());}}}(_0x185e,0x1f560));function _0x185e(){const _0xeed159=['getAllCollection','createCollection','164488DsahmG','464118zROPrg','5AxnOzS','224145ewJWAU','session','getCollectionService','389977dlYMoi','336092bREVAB','2684376UnQGIE','12pYLQXF','143700SAIsfI','toString','createNewCollectionItem','now'];_0x185e=function(){return _0xeed159;};return _0x185e();}import{napCatCore}from'..';export class NTQQCollectionApi{static async[_0x31a1aa(0x171)](_0x38838c,_0x3c7fd7,_0x315cb3,_0x47d4c6,_0x546355){const _0x5b80b6=_0x31a1aa;let _0x4167aa={'commInfo':{'bid':0x1,'category':0x2,'author':{'type':0x1,'numId':_0x38838c,'strId':_0x315cb3,'groupId':'0','groupName':'','uid':_0x3c7fd7},'customGroupId':'0','createTime':Date['now']()[_0x5b80b6(0x17d)](),'sequence':Date[_0x5b80b6(0x16f)]()['toString']()},'richMediaSummary':{'originalUri':'','publisher':'','richMediaVersion':0x0,'subTitle':'','title':'','brief':_0x47d4c6,'picList':[],'contentType':0x1},'richMediaContent':{'rawData':_0x546355,'bizDataList':[],'picList':[],'fileList':[]},'need_share_url':![]};return napCatCore['session'][_0x5b80b6(0x177)]()[_0x5b80b6(0x16e)](_0x4167aa);}static async[_0x31a1aa(0x170)](_0xf05388=0x0,_0x4268b2=0x32){const _0x440634=_0x31a1aa;let _0xe3b2cc={'category':_0xf05388,'groupId':-0x1,'forceSync':!![],'forceFromDb':![],'timeStamp':'0','count':_0x4268b2,'searchDown':!![]};return napCatCore[_0x440634(0x176)]['getCollectionService']()['getCollectionItemList'](_0xe3b2cc);}}
|
3
src/core.lib/src/apis/file.d.ts
vendored
3
src/core.lib/src/apis/file.d.ts
vendored
@@ -1,4 +1,4 @@
|
||||
import { CacheFileListItem, CacheFileType, ChatCacheListItemBasic, ChatType, ElementType } from '@/core/entities';
|
||||
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';
|
||||
@@ -6,6 +6,7 @@ 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;
|
||||
|
File diff suppressed because one or more lines are too long
4
src/core.lib/src/apis/friend.d.ts
vendored
4
src/core.lib/src/apis/friend.d.ts
vendored
@@ -1,5 +1,5 @@
|
||||
import { FriendRequest, User } from '@/core/entities';
|
||||
import { User } from '@/core/entities';
|
||||
export declare class NTQQFriendApi {
|
||||
static getFriends(forced?: boolean): Promise<User[]>;
|
||||
static handleFriendRequest(request: FriendRequest, accept: boolean): Promise<void>;
|
||||
static handleFriendRequest(flag: string, accept: boolean): Promise<void>;
|
||||
}
|
||||
|
@@ -1 +1 @@
|
||||
function _0x16e3(_0x2cac3f,_0x3950e4){const _0x5d91a3=_0x5d91();return _0x16e3=function(_0x16e37f,_0x41e584){_0x16e37f=_0x16e37f-0x108;let _0x3d98b3=_0x5d91a3[_0x16e37f];return _0x3d98b3;},_0x16e3(_0x2cac3f,_0x3950e4);}const _0x64ac8=_0x16e3;(function(_0x37e875,_0x53b9da){const _0x34f5e9=_0x16e3,_0x1125cc=_0x37e875();while(!![]){try{const _0xfe587f=parseInt(_0x34f5e9(0x109))/0x1+-parseInt(_0x34f5e9(0x10a))/0x2+-parseInt(_0x34f5e9(0x115))/0x3+-parseInt(_0x34f5e9(0x111))/0x4*(-parseInt(_0x34f5e9(0x11b))/0x5)+parseInt(_0x34f5e9(0x116))/0x6+parseInt(_0x34f5e9(0x114))/0x7+-parseInt(_0x34f5e9(0x113))/0x8;if(_0xfe587f===_0x53b9da)break;else _0x1125cc['push'](_0x1125cc['shift']());}catch(_0x4d1972){_0x1125cc['push'](_0x1125cc['shift']());}}}(_0x5d91,0x20979));import{napCatCore}from'@/core';function _0x5d91(){const _0x325d8b=['1356866JiZmvw','410358GYbZyu','1138656WGuhKJ','NodeIKernelBuddyListener/onBuddyListChange','friendUid','zlzYv','getFriends','3590uMjIMR','session','139807KQwyoc','33122ikfAGj','approvalFriendRequest','buddyList','uid','handleFriendRequest','uin','getBuddyService','320HrBzKd','NodeIKernelBuddyService/getBuddyList','2352136fLPXwu'];_0x5d91=function(){return _0x325d8b;};return _0x5d91();}import{uid2UinMap}from'@/core/data';import{NTEventDispatch}from'@/common/utils/EventTask';export class NTQQFriendApi{static async[_0x64ac8(0x11a)](_0x53e4b8=![]){const _0x4e4c14=_0x64ac8,_0x5e5549={'zlzYv':_0x4e4c14(0x112),'dANZY':_0x4e4c14(0x117)};let [_0x477ee8,_0x1ba15b]=await NTEventDispatch['CallNormalEvent'](_0x5e5549[_0x4e4c14(0x119)],_0x5e5549['dANZY'],0x1,0x1388,_0x53e4b8);const _0x5643f1=[];for(const _0x3bd7ad of _0x1ba15b){for(const _0x5e8771 of _0x3bd7ad[_0x4e4c14(0x10c)]){_0x5643f1['push'](_0x5e8771),uid2UinMap[_0x5e8771[_0x4e4c14(0x10d)]]=_0x5e8771[_0x4e4c14(0x10f)];}}return _0x5643f1;}static async[_0x64ac8(0x10e)](_0x243564,_0x13e0f7){const _0x682b79=_0x64ac8;napCatCore[_0x682b79(0x108)][_0x682b79(0x110)]()?.[_0x682b79(0x10b)]({'friendUid':_0x243564[_0x682b79(0x118)],'reqTime':_0x243564['reqTime'],'accept':_0x13e0f7});}}
|
||||
function _0x23a3(_0x4b2b49,_0x4ef523){const _0x220079=_0x2200();return _0x23a3=function(_0x23a3b3,_0x3e015f){_0x23a3b3=_0x23a3b3-0x13f;let _0x4fa70a=_0x220079[_0x23a3b3];return _0x4fa70a;},_0x23a3(_0x4b2b49,_0x4ef523);}const _0x4f16f9=_0x23a3;function _0x2200(){const _0x349cf2=['3519uiKckB','handleFriendRequest','1312yAoeka','approvalFriendRequest','481150aVcAeQ','337249EOOZGH','split','3416dUjWMC','buddyList','CallNormalEvent','length','521388ECQlIm','kDEPP','241959zNmSPu','3530OWVGgw','1555014kUdrkm','getBuddyService','getFriends','NodeIKernelBuddyService/getBuddyList','8FQdBDH','bifRx'];_0x2200=function(){return _0x349cf2;};return _0x2200();}(function(_0xe2852a,_0x46568a){const _0x41eb76=_0x23a3,_0x2531aa=_0xe2852a();while(!![]){try{const _0x5c9caa=parseInt(_0x41eb76(0x146))/0x1+parseInt(_0x41eb76(0x14c))/0x2+parseInt(_0x41eb76(0x14e))/0x3*(parseInt(_0x41eb76(0x13f))/0x4)+-parseInt(_0x41eb76(0x145))/0x5+-parseInt(_0x41eb76(0x150))/0x6+parseInt(_0x41eb76(0x148))/0x7*(-parseInt(_0x41eb76(0x143))/0x8)+-parseInt(_0x41eb76(0x141))/0x9*(parseInt(_0x41eb76(0x14f))/0xa);if(_0x5c9caa===_0x46568a)break;else _0x2531aa['push'](_0x2531aa['shift']());}catch(_0x2860fc){_0x2531aa['push'](_0x2531aa['shift']());}}}(_0x2200,0x2d5c3));import{napCatCore}from'@/core';import{NTEventDispatch}from'@/common/utils/EventTask';export class NTQQFriendApi{static async[_0x4f16f9(0x152)](_0x537318=![]){const _0x201fca=_0x4f16f9,_0x36eb54={'FsHNj':_0x201fca(0x153),'kDEPP':'NodeIKernelBuddyListener/onBuddyListChange'};let [_0x2386a6,_0x184898]=await NTEventDispatch[_0x201fca(0x14a)](_0x36eb54['FsHNj'],_0x36eb54[_0x201fca(0x14d)],0x1,0x1388,_0x537318);const _0x335c65=[];for(const _0x2401f1 of _0x184898){for(const _0x2ee6bc of _0x2401f1[_0x201fca(0x149)]){_0x335c65['push'](_0x2ee6bc);}}return _0x335c65;}static async[_0x4f16f9(0x142)](_0x35da73,_0x833223){const _0x393db3=_0x4f16f9,_0x1e3a25={'bifRx':function(_0x37132e,_0x3d6d59){return _0x37132e<_0x3d6d59;}};let _0x1fd439=_0x35da73[_0x393db3(0x147)]('|');if(_0x1e3a25[_0x393db3(0x140)](_0x1fd439[_0x393db3(0x14b)],0x2))return;let _0x1ef202=_0x1fd439[0x0],_0x2ae89b=_0x1fd439[0x1];napCatCore['session'][_0x393db3(0x151)]()?.[_0x393db3(0x144)]({'friendUid':_0x1ef202,'reqTime':_0x2ae89b,'accept':_0x833223});}}
|
17
src/core.lib/src/apis/group.d.ts
vendored
17
src/core.lib/src/apis/group.d.ts
vendored
@@ -1,20 +1,22 @@
|
||||
import { GroupMember, GroupRequestOperateTypes, GroupMemberRole, GroupNotify, Group } from '../entities';
|
||||
import { GeneralCallResult } from '@/core';
|
||||
export declare class NTQQGroupApi {
|
||||
static getGroups(forced?: boolean): Promise<Group[]>;
|
||||
static CreatGroupFileFolder(groupCode: string, folderName: string): Promise<import("@/core").GeneralCallResult & {
|
||||
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<import("@/core").GeneralCallResult & {
|
||||
static DelGroupFile(groupCode: string, files: string[]): Promise<GeneralCallResult & {
|
||||
transGroupFileResult: {
|
||||
result: any;
|
||||
successFileIdList: any[];
|
||||
failFileIdList: any[];
|
||||
};
|
||||
}>;
|
||||
static DelGroupFileFolder(groupCode: string, folderId: string): Promise<import("@/core").GeneralCallResult & {
|
||||
static DelGroupFileFolder(groupCode: string, folderId: string): Promise<GeneralCallResult & {
|
||||
groupFileCommonResult: {
|
||||
retCode: number;
|
||||
retMsg: string;
|
||||
@@ -24,12 +26,13 @@ export declare class NTQQGroupApi {
|
||||
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<import("@/core").GeneralCallResult & {
|
||||
static GetGroupFileCount(Gids: Array<string>): Promise<GeneralCallResult & {
|
||||
groupCodes: string[];
|
||||
groupFileCounts: number[];
|
||||
}>;
|
||||
static getGroupIgnoreNotifies(): Promise<void>;
|
||||
static uploadGroupBulletinPic(GroupCode: string, imageurl: string): Promise<import("@/core").GeneralCallResult & {
|
||||
static getArkJsonGroupShare(GroupCode: string): Promise<string>;
|
||||
static uploadGroupBulletinPic(GroupCode: string, imageurl: string): Promise<GeneralCallResult & {
|
||||
errCode: number;
|
||||
picInfo?: {
|
||||
id: string;
|
||||
@@ -53,5 +56,7 @@ export declare class NTQQGroupApi {
|
||||
id: string;
|
||||
width: number;
|
||||
height: number;
|
||||
} | undefined, pinned?: number, confirmRequired?: number): Promise<import("@/core").GeneralCallResult>;
|
||||
} | 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 +1 @@
|
||||
(function(_0x2b687f,_0x36155e){var _0x2a495c=_0x5e8b,_0x1af3d6=_0x2b687f();while(!![]){try{var _0x57bc47=parseInt(_0x2a495c(0x6d))/0x1+-parseInt(_0x2a495c(0x74))/0x2*(-parseInt(_0x2a495c(0x6e))/0x3)+-parseInt(_0x2a495c(0x75))/0x4+parseInt(_0x2a495c(0x72))/0x5+-parseInt(_0x2a495c(0x6c))/0x6*(-parseInt(_0x2a495c(0x71))/0x7)+-parseInt(_0x2a495c(0x6f))/0x8*(parseInt(_0x2a495c(0x70))/0x9)+-parseInt(_0x2a495c(0x76))/0xa*(parseInt(_0x2a495c(0x73))/0xb);if(_0x57bc47===_0x36155e)break;else _0x1af3d6['push'](_0x1af3d6['shift']());}catch(_0x4a0474){_0x1af3d6['push'](_0x1af3d6['shift']());}}}(_0x28b0,0x8098f));export*from'./file';export*from'./friend';function _0x5e8b(_0x4dbf5e,_0x40ff6a){var _0x28b071=_0x28b0();return _0x5e8b=function(_0x5e8bd0,_0x398021){_0x5e8bd0=_0x5e8bd0-0x6c;var _0x416fc4=_0x28b071[_0x5e8bd0];return _0x416fc4;},_0x5e8b(_0x4dbf5e,_0x40ff6a);}export*from'./group';export*from'./msg';export*from'./user';export*from'./webapi';export*from'./sign';function _0x28b0(){var _0x4863b3=['30StkYjn','1135768WXsnad','9CwEkei','133hhFQQI','3556650vFJLxQ','11gXuNxp','102074fiGDhE','1009820BNwrhv','19514420WHHuFL','200778uMPPKC','1015106FJwFaR'];_0x28b0=function(){return _0x4863b3;};return _0x28b0();}export*from'./system';
|
||||
(function(_0x56b802,_0x3068d4){var _0x433896=_0x34e7,_0x4b969f=_0x56b802();while(!![]){try{var _0x4597ba=-parseInt(_0x433896(0x1e9))/0x1*(-parseInt(_0x433896(0x1e3))/0x2)+parseInt(_0x433896(0x1e8))/0x3*(parseInt(_0x433896(0x1e1))/0x4)+-parseInt(_0x433896(0x1e4))/0x5*(-parseInt(_0x433896(0x1e0))/0x6)+parseInt(_0x433896(0x1e7))/0x7*(parseInt(_0x433896(0x1de))/0x8)+parseInt(_0x433896(0x1e2))/0x9*(-parseInt(_0x433896(0x1e6))/0xa)+parseInt(_0x433896(0x1e5))/0xb+-parseInt(_0x433896(0x1df))/0xc;if(_0x4597ba===_0x3068d4)break;else _0x4b969f['push'](_0x4b969f['shift']());}catch(_0x49bd24){_0x4b969f['push'](_0x4b969f['shift']());}}}(_0x5963,0xca7ca));export*from'./file';function _0x5963(){var _0x1fe349=['9782366mUkwaI','470IAMPKa','1322762htTQHt','3057HLvTxv','57wavOrP','40yZValc','27784044GLpyYN','492HCRHfV','1128BMaqfF','176535OkFDSk','26836dhRTsx','71970NvqLRN'];_0x5963=function(){return _0x1fe349;};return _0x5963();}export*from'./friend';export*from'./group';function _0x34e7(_0x56e151,_0x1ae8eb){var _0x596369=_0x5963();return _0x34e7=function(_0x34e773,_0x5bac2a){_0x34e773=_0x34e773-0x1de;var _0x5134f4=_0x596369[_0x34e773];return _0x5134f4;},_0x34e7(_0x56e151,_0x1ae8eb);}export*from'./msg';export*from'./user';export*from'./webapi';export*from'./sign';export*from'./system';
|
2
src/core.lib/src/apis/msg.d.ts
vendored
2
src/core.lib/src/apis/msg.d.ts
vendored
@@ -8,7 +8,7 @@ export declare class NTQQMsgApi {
|
||||
static getMsgsByMsgId(peer: Peer, msgIds: string[]): Promise<GeneralCallResult & {
|
||||
msgList: RawMessage[];
|
||||
}>;
|
||||
static getMsgsBySeqAndCount(peer: Peer, seq: string, count: number, desc: boolean, unknownArg: boolean): Promise<GeneralCallResult & {
|
||||
static getMsgsBySeqAndCount(peer: Peer, seq: string, count: number, desc: boolean, z: boolean): Promise<GeneralCallResult & {
|
||||
msgList: RawMessage[];
|
||||
}>;
|
||||
static activateChat(peer: Peer): Promise<void>;
|
||||
|
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
(function(_0x57745a,_0x1a3c84){const _0x2277fc=_0x1a0e,_0x2d9c64=_0x57745a();while(!![]){try{const _0x1effcc=-parseInt(_0x2277fc(0x164))/0x1*(parseInt(_0x2277fc(0x157))/0x2)+parseInt(_0x2277fc(0x180))/0x3*(-parseInt(_0x2277fc(0x160))/0x4)+parseInt(_0x2277fc(0x183))/0x5*(parseInt(_0x2277fc(0x182))/0x6)+parseInt(_0x2277fc(0x17a))/0x7+-parseInt(_0x2277fc(0x16c))/0x8+-parseInt(_0x2277fc(0x16e))/0x9+parseInt(_0x2277fc(0x168))/0xa*(parseInt(_0x2277fc(0x161))/0xb);if(_0x1effcc===_0x1a3c84)break;else _0x2d9c64['push'](_0x2d9c64['shift']());}catch(_0x5e1791){_0x2d9c64['push'](_0x2d9c64['shift']());}}}(_0x21f4,0xacd09));import{logDebug}from'@/common/utils/log';function _0x21f4(){const _0x42bb31=['p_skey','sourcelogo','skey','353454PwuBmL','&ark=','6fnKqAa','1557445ceixFn','bvqVR','getQzoneCookies','\x5c/\x5c/','6WsmDjc',';\x20p_uin=o','getSkey','UWGgQ',';\x20uin=o','dqQFX','vKtNy','prompt','GET','24tkOImJ','364749mNlpAs','jumpUrl','GIZPu','127661YWBBmO','mGSXm','stringify','signed_ark','710gCpWvv','tianxuan.imgJumpArk','title','preview','535984KtRFYr','source','9009027RNpBAr','MiniApp\x20JSON\x20消息生成失败','tag','replace','gMdSV','FpoJe','MOTyE','XRUAa','genBkn','HouMH','miniapp','XvEMd','1399741aFLNRy','https://h5.qzone.qq.com/v2/vip/tx/trpc/ark-share/GenNewSignedArk?g_tk=','uin'];_0x21f4=function(){return _0x42bb31;};return _0x21f4();}import{NTQQUserApi}from'./user';function _0x1a0e(_0x10c532,_0x2cda74){const _0x21f438=_0x21f4();return _0x1a0e=function(_0x1a0e4c,_0xeae817){_0x1a0e4c=_0x1a0e4c-0x157;let _0x39783d=_0x21f438[_0x1a0e4c];return _0x39783d;},_0x1a0e(_0x10c532,_0x2cda74);}import{selfInfo}from'../data';import{RequestUtil}from'@/common/utils/request';import{WebApi}from'./webapi';export async function SignMiniApp(_0x562e1a){const _0x11c92b=_0x1a0e,_0x36180b={'XRUAa':_0x11c92b(0x169),'mGSXm':_0x11c92b(0x178),'GIZPu':'normal','MOTyE':_0x11c92b(0x186),'XvEMd':function(_0x2c07ff,_0x95d6fc){return _0x2c07ff+_0x95d6fc;},'UWGgQ':function(_0x55f76f,_0x382560){return _0x55f76f+_0x382560;},'vKtNy':'p_skey=','FpoJe':';\x20skey=','gMdSV':_0x11c92b(0x158),'lnlLx':_0x11c92b(0x15b),'HouMH':function(_0x399641,_0x317dc2){return _0x399641+_0x317dc2;},'ilxji':function(_0x11d6fb,_0x35d8cf){return _0x11d6fb+_0x35d8cf;},'xaIfm':function(_0x464a77,_0x5cf494){return _0x464a77(_0x5cf494);},'bvqVR':_0x11c92b(0x15f),'dqQFX':_0x11c92b(0x16f)};let _0x50da80={'app':'com.tencent.miniapp.lua','bizsrc':_0x36180b[_0x11c92b(0x175)],'view':_0x36180b[_0x11c92b(0x165)],'prompt':_0x562e1a[_0x11c92b(0x15e)],'config':{'type':_0x36180b[_0x11c92b(0x163)],'forward':0x1,'autosize':0x0},'meta':{'miniapp':{'title':_0x562e1a[_0x11c92b(0x16a)],'preview':_0x562e1a[_0x11c92b(0x16b)][_0x11c92b(0x171)](/\\/g,_0x36180b[_0x11c92b(0x174)]),'jumpUrl':_0x562e1a[_0x11c92b(0x162)]['replace'](/\\/g,_0x11c92b(0x186)),'tag':_0x562e1a[_0x11c92b(0x170)],'tagIcon':_0x562e1a['tagIcon'][_0x11c92b(0x171)](/\\/g,_0x36180b[_0x11c92b(0x174)]),'source':_0x562e1a[_0x11c92b(0x16d)],'sourcelogo':_0x562e1a[_0x11c92b(0x17e)][_0x11c92b(0x171)](/\\/g,_0x11c92b(0x186))}}};const _0x19a52a=await NTQQUserApi[_0x11c92b(0x159)]();let _0x5c56b0=await NTQQUserApi[_0x11c92b(0x185)]();const _0x148dab=WebApi[_0x11c92b(0x176)](_0x5c56b0[_0x11c92b(0x17d)]),_0x577015=_0x36180b['XvEMd'](_0x36180b['XvEMd'](_0x36180b[_0x11c92b(0x15a)](_0x36180b[_0x11c92b(0x179)](_0x36180b[_0x11c92b(0x15a)](_0x36180b['XvEMd'](_0x36180b[_0x11c92b(0x179)](_0x36180b[_0x11c92b(0x15d)],_0x5c56b0['p_skey']),_0x36180b[_0x11c92b(0x173)]),_0x5c56b0[_0x11c92b(0x17f)]),_0x36180b[_0x11c92b(0x172)]),selfInfo[_0x11c92b(0x17c)]),_0x36180b['lnlLx']),selfInfo[_0x11c92b(0x17c)]);let _0x5765c6=_0x36180b[_0x11c92b(0x177)](_0x36180b['ilxji'](_0x11c92b(0x17b)+_0x148dab,_0x11c92b(0x181)),_0x36180b['xaIfm'](encodeURIComponent,JSON[_0x11c92b(0x166)](_0x50da80))),_0x47ae97='';try{let _0x3f0e2f=await RequestUtil['HttpGetJson'](_0x5765c6,_0x36180b[_0x11c92b(0x184)],undefined,{'Cookie':_0x577015});_0x47ae97=_0x3f0e2f['data'][_0x11c92b(0x167)];}catch(_0x5c0005){logDebug(_0x36180b[_0x11c92b(0x15c)],_0x5c0005);}return _0x47ae97;}
|
||||
(function(_0x20e53,_0x44a671){const _0x3c4950=_0x36eb,_0x34461c=_0x20e53();while(!![]){try{const _0x5c8240=parseInt(_0x3c4950(0x1a0))/0x1*(parseInt(_0x3c4950(0x188))/0x2)+parseInt(_0x3c4950(0x180))/0x3*(parseInt(_0x3c4950(0x195))/0x4)+parseInt(_0x3c4950(0x186))/0x5+parseInt(_0x3c4950(0x1a4))/0x6+-parseInt(_0x3c4950(0x1ae))/0x7*(-parseInt(_0x3c4950(0x182))/0x8)+-parseInt(_0x3c4950(0x1aa))/0x9*(-parseInt(_0x3c4950(0x1a6))/0xa)+-parseInt(_0x3c4950(0x19f))/0xb;if(_0x5c8240===_0x44a671)break;else _0x34461c['push'](_0x34461c['shift']());}catch(_0x189fca){_0x34461c['push'](_0x34461c['shift']());}}}(_0x4e6a,0xafa06));import{logDebug}from'@/common/utils/log';function _0x36eb(_0x4f2b63,_0x26b195){const _0x4e6abf=_0x4e6a();return _0x36eb=function(_0x36eb97,_0x448a37){_0x36eb97=_0x36eb97-0x17e;let _0x3d85e5=_0x4e6abf[_0x36eb97];return _0x3d85e5;},_0x36eb(_0x4f2b63,_0x26b195);}function _0x4e6a(){const _0x2407c8=['caVLb','replace','Doxbh','4994395yxEciI','HttpGetJson','897902VHIRjp','&ark=','cPgyb','data','sourcelogo','genBkn','prompt','source','LzxyR','preview','MiniApp\x20JSON\x20消息生成失败','ymhUG',';\x20uin=o','4ivyqQP','tagIcon','rZcqb','JIdUf','lWUDk','GET','TxxNO','uin','getSkey','normal','26352326maANsU','2pcjBml','getQzoneCookies','NJbwP','signed_ark','1030902keiGdM','IzSFN','100pDSLId','tianxuan.imgJumpArk','com.tencent.miniapp.lua','\x5c/\x5c/','899523cMjMjb','tag','p_skey=','p_skey','3633dEAzgY','title','https://h5.qzone.qq.com/v2/vip/tx/trpc/ark-share/GenNewSignedArk?g_tk=','49029afxtrc',';\x20p_uin=o','472ixjTBQ'];_0x4e6a=function(){return _0x2407c8;};return _0x4e6a();}import{NTQQUserApi}from'./user';import{selfInfo}from'../data';import{RequestUtil}from'@/common/utils/request';import{WebApi}from'./webapi';export async function SignMiniApp(_0xa48656){const _0x554623=_0x36eb,_0x43d22d={'NJbwP':_0x554623(0x1a8),'ymhUG':_0x554623(0x1a7),'jpHwD':_0x554623(0x19e),'rZcqb':_0x554623(0x1a9),'Doxbh':function(_0x44e41f,_0x22ebd6){return _0x44e41f+_0x22ebd6;},'mhWEc':_0x554623(0x1ac),'TxxNO':_0x554623(0x181),'lWUDk':_0x554623(0x194),'IzSFN':function(_0x50fd9f,_0x18c451){return _0x50fd9f+_0x18c451;},'JIdUf':_0x554623(0x17f),'PfhiY':_0x554623(0x189),'LzxyR':_0x554623(0x19a),'cPgyb':function(_0x3ac952,_0xc9d6a1,_0x3ff25b){return _0x3ac952(_0xc9d6a1,_0x3ff25b);},'caVLb':_0x554623(0x192)};let _0xf9d472={'app':_0x43d22d[_0x554623(0x1a2)],'bizsrc':_0x43d22d[_0x554623(0x193)],'view':'miniapp','prompt':_0xa48656[_0x554623(0x18e)],'config':{'type':_0x43d22d['jpHwD'],'forward':0x1,'autosize':0x0},'meta':{'miniapp':{'title':_0xa48656[_0x554623(0x17e)],'preview':_0xa48656[_0x554623(0x191)][_0x554623(0x184)](/\\/g,'\x5c/\x5c/'),'jumpUrl':_0xa48656['jumpUrl'][_0x554623(0x184)](/\\/g,_0x43d22d[_0x554623(0x197)]),'tag':_0xa48656[_0x554623(0x1ab)],'tagIcon':_0xa48656[_0x554623(0x196)]['replace'](/\\/g,_0x43d22d[_0x554623(0x197)]),'source':_0xa48656[_0x554623(0x18f)],'sourcelogo':_0xa48656[_0x554623(0x18c)][_0x554623(0x184)](/\\/g,_0x43d22d[_0x554623(0x197)])}}};const _0x38ea06=await NTQQUserApi[_0x554623(0x19d)]();let _0x5c8356=await NTQQUserApi[_0x554623(0x1a1)]();const _0x211a50=WebApi[_0x554623(0x18d)](_0x5c8356[_0x554623(0x1ad)]),_0x48828b=_0x43d22d['Doxbh'](_0x43d22d[_0x554623(0x185)](_0x43d22d[_0x554623(0x185)](_0x43d22d[_0x554623(0x185)](_0x43d22d['mhWEc'],_0x5c8356['p_skey'])+';\x20skey=',_0x5c8356['skey']),_0x43d22d[_0x554623(0x19b)]),selfInfo['uin'])+_0x43d22d[_0x554623(0x199)]+selfInfo[_0x554623(0x19c)];let _0x508e46=_0x43d22d[_0x554623(0x185)](_0x43d22d['IzSFN'](_0x43d22d[_0x554623(0x1a5)](_0x43d22d[_0x554623(0x198)],_0x211a50),_0x43d22d['PfhiY']),encodeURIComponent(JSON['stringify'](_0xf9d472))),_0x35bdbd='';try{let _0x480b61=await RequestUtil[_0x554623(0x187)](_0x508e46,_0x43d22d[_0x554623(0x190)],undefined,{'Cookie':_0x48828b});_0x35bdbd=_0x480b61[_0x554623(0x18b)][_0x554623(0x1a3)];}catch(_0x5a463b){_0x43d22d[_0x554623(0x18a)](logDebug,_0x43d22d[_0x554623(0x183)],_0x5a463b);}return _0x35bdbd;}
|
9
src/core.lib/src/apis/system.d.ts
vendored
9
src/core.lib/src/apis/system.d.ts
vendored
@@ -1,7 +1,12 @@
|
||||
import { GeneralCallResult } from '@/core';
|
||||
export declare class NTQQSystemApi {
|
||||
static hasOtherRunningQQProcess(): Promise<boolean>;
|
||||
static ORCImage(filePath: string): Promise<import("@/core").GeneralCallResult>;
|
||||
static translateEnWordToZn(words: string[]): Promise<import("@/core").GeneralCallResult & {
|
||||
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;
|
||||
}>;
|
||||
}
|
||||
|
@@ -1 +1 @@
|
||||
var _0x46f4c6=_0x5595;(function(_0x44dd50,_0x3b947d){var _0x490293=_0x5595,_0x36a92f=_0x44dd50();while(!![]){try{var _0xe91141=-parseInt(_0x490293(0x1b7))/0x1+parseInt(_0x490293(0x1b5))/0x2+-parseInt(_0x490293(0x1bc))/0x3*(-parseInt(_0x490293(0x1b4))/0x4)+-parseInt(_0x490293(0x1b3))/0x5+parseInt(_0x490293(0x1ba))/0x6*(parseInt(_0x490293(0x1be))/0x7)+-parseInt(_0x490293(0x1c0))/0x8+parseInt(_0x490293(0x1b6))/0x9*(parseInt(_0x490293(0x1b9))/0xa);if(_0xe91141===_0x3b947d)break;else _0x36a92f['push'](_0x36a92f['shift']());}catch(_0x301625){_0x36a92f['push'](_0x36a92f['shift']());}}}(_0x208f,0x77b48));import{napCatCore}from'@/core';function _0x208f(){var _0x173e6f=['203538HburDh','session','2072955IZgqrb','util','182ZHpPcJ','translateEnWordToZn','7188528oMkiTL','getRichMediaService','wantWinScreenOCR','getNodeMiscService','3149375lfaGAY','4wyaoob','1814032hTGpsF','9ZJfcNu','666193IiHbMy','ORCImage','2049470ufpuRa'];_0x208f=function(){return _0x173e6f;};return _0x208f();}function _0x5595(_0x4385e4,_0x290d58){var _0x208f62=_0x208f();return _0x5595=function(_0x55954f,_0x1e15da){_0x55954f=_0x55954f-0x1b2;var _0x3c1fc1=_0x208f62[_0x55954f];return _0x3c1fc1;},_0x5595(_0x4385e4,_0x290d58);}export class NTQQSystemApi{static async['hasOtherRunningQQProcess'](){var _0x1c1b60=_0x5595;return napCatCore[_0x1c1b60(0x1bd)]['hasOtherRunningQQProcess']();}static async[_0x46f4c6(0x1b8)](_0x847f46){var _0x3690a4=_0x46f4c6;return napCatCore[_0x3690a4(0x1bb)][_0x3690a4(0x1b2)]()[_0x3690a4(0x1c2)](_0x847f46);}static async[_0x46f4c6(0x1bf)](_0x5ec62f){var _0x4775af=_0x46f4c6;return napCatCore[_0x4775af(0x1bb)][_0x4775af(0x1c1)]()[_0x4775af(0x1bf)](_0x5ec62f);}}
|
||||
function _0x1aa2(_0x50b9f0,_0x206954){const _0x2b3adb=_0x2b3a();return _0x1aa2=function(_0x1aa265,_0xd1bee5){_0x1aa265=_0x1aa265-0x1ef;let _0x2a8504=_0x2b3adb[_0x1aa265];return _0x2a8504;},_0x1aa2(_0x50b9f0,_0x206954);}const _0x5a5a43=_0x1aa2;(function(_0x43b903,_0x3abc81){const _0x1a7a83=_0x1aa2,_0x472404=_0x43b903();while(!![]){try{const _0x178a18=-parseInt(_0x1a7a83(0x1f0))/0x1*(-parseInt(_0x1a7a83(0x200))/0x2)+parseInt(_0x1a7a83(0x1f5))/0x3*(parseInt(_0x1a7a83(0x203))/0x4)+parseInt(_0x1a7a83(0x1f1))/0x5*(parseInt(_0x1a7a83(0x1f8))/0x6)+parseInt(_0x1a7a83(0x1f6))/0x7+-parseInt(_0x1a7a83(0x1fc))/0x8+parseInt(_0x1a7a83(0x201))/0x9*(-parseInt(_0x1a7a83(0x1f4))/0xa)+-parseInt(_0x1a7a83(0x1f9))/0xb;if(_0x178a18===_0x3abc81)break;else _0x472404['push'](_0x472404['shift']());}catch(_0x33b0f3){_0x472404['push'](_0x472404['shift']());}}}(_0x2b3a,0xd1349));import{NTEventDispatch}from'@/common/utils/EventTask';import{napCatCore}from'@/core';function _0x2b3a(){const _0x4920a9=['7099220IKmlna','5685HCyRrC','6314497XoDxyG','NodeIKernelCollectionService/collectionArkShare','2106FdNUXd','18051473GpEGII','CallNoListenerEvent','session','3424472KUllEx','util','ORCImage','getRichMediaService','1136334uICroi','9nOjnyb','hasOtherRunningQQProcess','2280ZMDaUl','getArkJsonCollection','translateEnWordToZn','2OqYySn','7370VVUjOo','wantWinScreenOCR','1717662698058'];_0x2b3a=function(){return _0x4920a9;};return _0x2b3a();}export class NTQQSystemApi{static async[_0x5a5a43(0x202)](){const _0xef17d5=_0x5a5a43;return napCatCore[_0xef17d5(0x1fd)][_0xef17d5(0x202)]();}static async[_0x5a5a43(0x1fe)](_0x12308a){const _0x36f1de=_0x5a5a43;return napCatCore[_0x36f1de(0x1fb)]['getNodeMiscService']()[_0x36f1de(0x1f2)](_0x12308a);}static async[_0x5a5a43(0x1ef)](_0x463fd3){const _0x3cdf28=_0x5a5a43;return napCatCore[_0x3cdf28(0x1fb)][_0x3cdf28(0x1ff)]()[_0x3cdf28(0x1ef)](_0x463fd3);}static async['getOnlineDev'](){const _0x3a2be7=_0x5a5a43;return napCatCore[_0x3a2be7(0x1fb)]['getMsgService']()['getOnLineDev']();}static async[_0x5a5a43(0x204)](_0xa29db4){const _0x1037a4=_0x5a5a43,_0x2362a9={'fZuJZ':_0x1037a4(0x1f7),'Udofx':_0x1037a4(0x1f3)};let _0x4dae41=await NTEventDispatch[_0x1037a4(0x1fa)](_0x2362a9['fZuJZ'],0x1388,_0x2362a9['Udofx']);return _0x4dae41;}}
|
8
src/core.lib/src/apis/user.d.ts
vendored
8
src/core.lib/src/apis/user.d.ts
vendored
@@ -1,7 +1,9 @@
|
||||
import { User } from '@/core/entities';
|
||||
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;
|
||||
@@ -14,6 +16,7 @@ export declare class NTQQUserApi {
|
||||
static getSelfInfo(): Promise<void>;
|
||||
static getUserInfo(uid: string): Promise<void>;
|
||||
static getUserDetailInfo(uid: string): Promise<User>;
|
||||
static modifySelfProfile(param: ModifyProfileParams): Promise<GeneralCallResult>;
|
||||
static getPSkey(domainList: string[], cached?: boolean): Promise<{
|
||||
[key: string]: string;
|
||||
}>;
|
||||
@@ -22,4 +25,7 @@ export declare class NTQQUserApi {
|
||||
[key: string]: string;
|
||||
}>;
|
||||
static getSkey(cached?: boolean): Promise<string | undefined>;
|
||||
static getUidByUin(Uin: string): Promise<string | undefined>;
|
||||
static getUinByUid(Uid: string | undefined): Promise<string | undefined>;
|
||||
static getUserDetailInfoByUin(Uin: string): Promise<UserDetailInfoByUin>;
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
11
src/core.lib/src/apis/window.d.ts
vendored
11
src/core.lib/src/apis/window.d.ts
vendored
@@ -1,11 +0,0 @@
|
||||
export interface NTQQWindow {
|
||||
windowName: string;
|
||||
windowUrlHash: string;
|
||||
}
|
||||
export declare class NTQQWindows {
|
||||
static GroupHomeWorkWindow: NTQQWindow;
|
||||
static GroupNotifyFilterWindow: NTQQWindow;
|
||||
static GroupEssenceWindow: NTQQWindow;
|
||||
}
|
||||
export declare class NTQQWindowApi {
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
11
src/core.lib/src/data.d.ts
vendored
11
src/core.lib/src/data.d.ts
vendored
@@ -1,4 +1,4 @@
|
||||
import { type Friend, type FriendRequest, type Group, type GroupMember, GroupNotify, type SelfInfo, BuddyCategoryType } from './entities';
|
||||
import { type Friend, type Group, type GroupMember, GroupNotify, type SelfInfo, BuddyCategoryType } from './entities';
|
||||
import { WebApiGroupMember } from '@/core/apis';
|
||||
export declare const Credentials: {
|
||||
Skey: string;
|
||||
@@ -18,19 +18,10 @@ 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 friendRequests: Record<string, FriendRequest>;
|
||||
export declare const groupNotifies: Record<string, GroupNotify>;
|
||||
export declare const napCatError: {
|
||||
ffmpegError: string;
|
||||
httpServerError: string;
|
||||
wsServerError: string;
|
||||
otherError: string;
|
||||
};
|
||||
export declare function getFriend(uinOrUid: string): Promise<Friend | undefined>;
|
||||
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 uid2UinMap: Record<string, string>;
|
||||
export declare function getUidByUin(uin: string): string | undefined;
|
||||
export declare const tempGroupCodeMap: Record<string, string>;
|
||||
export declare const rawFriends: Array<BuddyCategoryType>;
|
||||
export declare const stat: {
|
||||
|
@@ -1 +1 @@
|
||||
const _0xf372a0=_0xbd24;(function(_0x3e7981,_0x228726){const _0x1a5d46=_0xbd24,_0x1c2d45=_0x3e7981();while(!![]){try{const _0x26231f=-parseInt(_0x1a5d46(0x18f))/0x1*(parseInt(_0x1a5d46(0x188))/0x2)+parseInt(_0x1a5d46(0x191))/0x3+-parseInt(_0x1a5d46(0x189))/0x4*(parseInt(_0x1a5d46(0x183))/0x5)+parseInt(_0x1a5d46(0x187))/0x6*(-parseInt(_0x1a5d46(0x185))/0x7)+-parseInt(_0x1a5d46(0x190))/0x8+-parseInt(_0x1a5d46(0x195))/0x9+parseInt(_0x1a5d46(0x182))/0xa;if(_0x26231f===_0x228726)break;else _0x1c2d45['push'](_0x1c2d45['shift']());}catch(_0x4c31bb){_0x1c2d45['push'](_0x1c2d45['shift']());}}}(_0x53c0,0x31056));import{isNumeric}from'@/common/utils/helper';import{NTQQGroupApi}from'@/core/apis';export const Credentials={'Skey':'','CreatTime':0x0,'Cookies':new Map(),'ClientKey':'','KeyIndex':'','PskeyData':new Map(),'PskeyTime':new Map()};export const WebGroupData={'GroupData':new Map(),'GroupTime':new Map()};export const selfInfo={'uid':'','uin':'','nick':'','online':!![]};export const groups=new Map();function _0xbd24(_0x386d08,_0x3a5679){const _0x53c0b9=_0x53c0();return _0xbd24=function(_0xbd2468,_0x30994c){_0xbd2468=_0xbd2468-0x180;let _0x5309a2=_0x53c0b9[_0xbd2468];return _0x5309a2;},_0xbd24(_0x386d08,_0x3a5679);}function _0x53c0(){const _0x4d7054=['30QOAcfs','2Fjxgjr','1520812BRiGik','bUUgz','bXFGX','from','find','groupCode','15607cNybRu','21984BYlzgr','532536VNnsba','getGroups','delete','set','1476495EtOflf','values','NapCat未能正常启动,请检查日志查看错误','get','jVafp','toString','8484360XCdQxu','5geFPmQ','getGroupMembers','367563TfUgrq','forEach'];_0x53c0=function(){return _0x4d7054;};return _0x53c0();}export function deleteGroup(_0x333bf8){const _0x1e6460=_0xbd24;groups[_0x1e6460(0x193)](_0x333bf8),groupMembers['delete'](_0x333bf8);}export const groupMembers=new Map();export const friends=new Map();export const friendRequests={};export const groupNotifies={};export const napCatError={'ffmpegError':'','httpServerError':'','wsServerError':'','otherError':_0xf372a0(0x197)};export async function getFriend(_0x12e8fc){const _0x5a0140=_0xf372a0;_0x12e8fc=_0x12e8fc[_0x5a0140(0x181)]();if(isNumeric(_0x12e8fc)){const _0x1e7c70=Array[_0x5a0140(0x18c)](friends[_0x5a0140(0x196)]());return _0x1e7c70[_0x5a0140(0x18d)](_0x12c5d9=>_0x12c5d9['uin']===_0x12e8fc);}else return friends['get'](_0x12e8fc);}export async function getGroup(_0x5f1736){const _0x559836=_0xf372a0;let _0x4421ac=groups[_0x559836(0x198)](_0x5f1736[_0x559836(0x181)]());if(!_0x4421ac)try{const _0x3268ea=await NTQQGroupApi[_0x559836(0x192)]();_0x3268ea['length']&&_0x3268ea[_0x559836(0x186)](_0x36820a=>{const _0x255e64=_0x559836;groups[_0x255e64(0x194)](_0x36820a[_0x255e64(0x18e)],_0x36820a);});}catch(_0x4a9f99){return undefined;}return _0x4421ac=groups[_0x559836(0x198)](_0x5f1736[_0x559836(0x181)]()),_0x4421ac;}export async function getGroupMember(_0x35af6d,_0x265e58){const _0x1ec259=_0xf372a0,_0x5b18a9={'bXFGX':function(_0x407b83,_0x4a3f90){return _0x407b83(_0x4a3f90);},'jVafp':function(_0x402926){return _0x402926();},'bUUgz':function(_0x4ef7ea){return _0x4ef7ea();}};_0x35af6d=_0x35af6d['toString'](),_0x265e58=_0x265e58[_0x1ec259(0x181)]();let _0x27e98f=groupMembers[_0x1ec259(0x198)](_0x35af6d);if(!_0x27e98f)try{_0x27e98f=await NTQQGroupApi['getGroupMembers'](_0x35af6d),groupMembers[_0x1ec259(0x194)](_0x35af6d,_0x27e98f);}catch(_0x49ba5f){return null;}const _0x2e7c74=()=>{const _0x3e98f2=_0x1ec259;let _0x39969a=undefined;return _0x5b18a9[_0x3e98f2(0x18b)](isNumeric,_0x265e58)?_0x39969a=Array[_0x3e98f2(0x18c)](_0x27e98f[_0x3e98f2(0x196)]())[_0x3e98f2(0x18d)](_0x12ef65=>_0x12ef65['uin']===_0x265e58):_0x39969a=_0x27e98f[_0x3e98f2(0x198)](_0x265e58),_0x39969a;};let _0x3521a5=_0x5b18a9[_0x1ec259(0x180)](_0x2e7c74);return!_0x3521a5&&(_0x27e98f=await NTQQGroupApi[_0x1ec259(0x184)](_0x35af6d),_0x3521a5=_0x5b18a9[_0x1ec259(0x18a)](_0x2e7c74)),_0x3521a5;}export const uid2UinMap={};export function getUidByUin(_0x991d74){for(const _0x29c401 in uid2UinMap){if(uid2UinMap[_0x29c401]===_0x991d74)return _0x29c401;}}export const tempGroupCodeMap={};export const rawFriends=[];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};
|
||||
(function(_0x27c2f6,_0x11d2ca){const _0x1836bf=_0x5db4,_0x10cbe0=_0x27c2f6();while(!![]){try{const _0x731586=-parseInt(_0x1836bf(0x19b))/0x1+parseInt(_0x1836bf(0x19e))/0x2*(parseInt(_0x1836bf(0x19f))/0x3)+-parseInt(_0x1836bf(0x1af))/0x4+parseInt(_0x1836bf(0x1a5))/0x5*(parseInt(_0x1836bf(0x1a0))/0x6)+parseInt(_0x1836bf(0x1aa))/0x7+parseInt(_0x1836bf(0x1a6))/0x8*(parseInt(_0x1836bf(0x1a9))/0x9)+-parseInt(_0x1836bf(0x1a3))/0xa*(parseInt(_0x1836bf(0x1ae))/0xb);if(_0x731586===_0x11d2ca)break;else _0x10cbe0['push'](_0x10cbe0['shift']());}catch(_0x258254){_0x10cbe0['push'](_0x10cbe0['shift']());}}}(_0x3cbb,0x7e5d6));import{isNumeric}from'@/common/utils/helper';import{NTQQGroupApi}from'@/core/apis';function _0x3cbb(){const _0xe5d8fc=['3791709jQAmBt','4842915aHTYqb','toString','forEach','VXcxB','11pIVxfi','960136YhEOsB','get','mfDiD','delete','from','179856pKxjNF','set','length','18oHuPLS','232590lpKZBs','6cZtPjX','getGroupMembers','getGroups','12063530CcnjtC','values','1664585SBfDsv','8ljlqHt','find','uin'];_0x3cbb=function(){return _0xe5d8fc;};return _0x3cbb();}export const Credentials={'Skey':'','CreatTime':0x0,'Cookies':new Map(),'ClientKey':'','KeyIndex':'','PskeyData':new Map(),'PskeyTime':new Map()};export const WebGroupData={'GroupData':new Map(),'GroupTime':new Map()};export const selfInfo={'uid':'','uin':'','nick':'','online':!![]};export const groups=new Map();export function deleteGroup(_0x322074){const _0x415f93=_0x5db4;groups[_0x415f93(0x199)](_0x322074),groupMembers[_0x415f93(0x199)](_0x322074);}export const groupMembers=new Map();export const friends=new Map();export const groupNotifies={};export async function getFriend(_0x473e79){const _0x53d80f=_0x5db4;_0x473e79=_0x473e79[_0x53d80f(0x1ab)]();if(isNumeric(_0x473e79)){const _0x1431c4=Array[_0x53d80f(0x19a)](friends[_0x53d80f(0x1a4)]());return _0x1431c4[_0x53d80f(0x1a7)](_0x4ebe66=>_0x4ebe66['uin']===_0x473e79);}else return friends[_0x53d80f(0x197)](_0x473e79);}export async function getGroup(_0x517675){const _0x35805a=_0x5db4;let _0x107e87=groups['get'](_0x517675[_0x35805a(0x1ab)]());if(!_0x107e87)try{const _0x55c042=await NTQQGroupApi[_0x35805a(0x1a2)]();_0x55c042[_0x35805a(0x19d)]&&_0x55c042[_0x35805a(0x1ac)](_0x6a1203=>{groups['set'](_0x6a1203['groupCode'],_0x6a1203);});}catch(_0x3c74a8){return undefined;}return _0x107e87=groups['get'](_0x517675[_0x35805a(0x1ab)]()),_0x107e87;}export async function getGroupMember(_0x1c4b88,_0x1ae479){const _0x148d29=_0x5db4,_0xcb04f6={'mfDiD':function(_0x34d378,_0x2bbc53){return _0x34d378(_0x2bbc53);},'VXcxB':function(_0x2452b3){return _0x2452b3();}};_0x1c4b88=_0x1c4b88[_0x148d29(0x1ab)](),_0x1ae479=_0x1ae479['toString']();let _0x42f835=groupMembers['get'](_0x1c4b88);if(!_0x42f835)try{_0x42f835=await NTQQGroupApi['getGroupMembers'](_0x1c4b88),groupMembers[_0x148d29(0x19c)](_0x1c4b88,_0x42f835);}catch(_0x774301){return null;}const _0x1f381e=()=>{const _0x24b812=_0x148d29;let _0x53e789=undefined;return _0xcb04f6[_0x24b812(0x198)](isNumeric,_0x1ae479)?_0x53e789=Array[_0x24b812(0x19a)](_0x42f835[_0x24b812(0x1a4)]())[_0x24b812(0x1a7)](_0x353f12=>_0x353f12[_0x24b812(0x1a8)]===_0x1ae479):_0x53e789=_0x42f835[_0x24b812(0x197)](_0x1ae479),_0x53e789;};let _0x10cc4a=_0xcb04f6['VXcxB'](_0x1f381e);return!_0x10cc4a&&(_0x42f835=await NTQQGroupApi[_0x148d29(0x1a1)](_0x1c4b88),_0x10cc4a=_0xcb04f6[_0x148d29(0x1ad)](_0x1f381e)),_0x10cc4a;}function _0x5db4(_0x66df28,_0x127c58){const _0x3cbb10=_0x3cbb();return _0x5db4=function(_0x5db406,_0x3ef3b8){_0x5db406=_0x5db406-0x197;let _0xf2eaf3=_0x3cbb10[_0x5db406];return _0xf2eaf3;},_0x5db4(_0x66df28,_0x127c58);}export const tempGroupCodeMap={};export const rawFriends=[];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 +1 @@
|
||||
function _0x3afc(_0x339f7b,_0x2d3197){var _0x3890e9=_0x3890();return _0x3afc=function(_0x3afc68,_0x568dd3){_0x3afc68=_0x3afc68-0x1ba;var _0x5d2a8f=_0x3890e9[_0x3afc68];return _0x5d2a8f;},_0x3afc(_0x339f7b,_0x2d3197);}(function(_0x813259,_0x59d305){var _0xf6b0d4=_0x3afc,_0x420b92=_0x813259();while(!![]){try{var _0x45f709=parseInt(_0xf6b0d4(0x1bf))/0x1+parseInt(_0xf6b0d4(0x1c7))/0x2+-parseInt(_0xf6b0d4(0x1ba))/0x3*(parseInt(_0xf6b0d4(0x1bb))/0x4)+parseInt(_0xf6b0d4(0x1bd))/0x5+parseInt(_0xf6b0d4(0x1ca))/0x6+parseInt(_0xf6b0d4(0x1c0))/0x7+-parseInt(_0xf6b0d4(0x1c5))/0x8;if(_0x45f709===_0x59d305)break;else _0x420b92['push'](_0x420b92['shift']());}catch(_0x1c0de7){_0x420b92['push'](_0x420b92['shift']());}}}(_0x3890,0x51640));;export var CacheFileType;function _0x3890(){var _0x5667bc=['AUDIO','VIDEO','VNAOd','3EFXDUt','819440dYOngK','RRJLQ','3304360WpQtDY','pJUfq','643732YtJvcM','1292914DfkATi','split','kVROy','aYbVD','4|3|1|2|0','11147064wIOeLU','IMAGE','558050ToVTct','PvwdK','DOCUMENT','979728KIcJDF'];_0x3890=function(){return _0x5667bc;};return _0x3890();}(function(_0xc8c05a){var _0x36b80d=_0x3afc,_0xbf6ae0={'kVROy':_0x36b80d(0x1c4),'VNAOd':'OTHER','RRJLQ':_0x36b80d(0x1cb),'aYbVD':_0x36b80d(0x1c9),'PvwdK':_0x36b80d(0x1cc),'pJUfq':_0x36b80d(0x1c6)},_0x2986fe=_0xbf6ae0[_0x36b80d(0x1c2)][_0x36b80d(0x1c1)]('|'),_0x493d32=0x0;while(!![]){switch(_0x2986fe[_0x493d32++]){case'0':_0xc8c05a[_0xc8c05a[_0xbf6ae0[_0x36b80d(0x1cd)]]=0x4]=_0xbf6ae0[_0x36b80d(0x1cd)];continue;case'1':_0xc8c05a[_0xc8c05a[_0xbf6ae0[_0x36b80d(0x1bc)]]=0x2]=_0xbf6ae0[_0x36b80d(0x1bc)];continue;case'2':_0xc8c05a[_0xc8c05a[_0xbf6ae0[_0x36b80d(0x1c3)]]=0x3]=_0xbf6ae0[_0x36b80d(0x1c3)];continue;case'3':_0xc8c05a[_0xc8c05a[_0xbf6ae0[_0x36b80d(0x1c8)]]=0x1]=_0xbf6ae0[_0x36b80d(0x1c8)];continue;case'4':_0xc8c05a[_0xc8c05a[_0xbf6ae0[_0x36b80d(0x1be)]]=0x0]=_0xbf6ae0[_0x36b80d(0x1be)];continue;}break;}}(CacheFileType||(CacheFileType={})));
|
||||
(function(_0x5d59d3,_0x2e8fae){var _0x1bf3ff=_0x5cdf,_0x5a7576=_0x5d59d3();while(!![]){try{var _0x4e9f46=parseInt(_0x1bf3ff(0x137))/0x1*(parseInt(_0x1bf3ff(0x136))/0x2)+parseInt(_0x1bf3ff(0x133))/0x3+-parseInt(_0x1bf3ff(0x131))/0x4+parseInt(_0x1bf3ff(0x13a))/0x5+-parseInt(_0x1bf3ff(0x12f))/0x6*(-parseInt(_0x1bf3ff(0x139))/0x7)+-parseInt(_0x1bf3ff(0x12e))/0x8*(parseInt(_0x1bf3ff(0x129))/0x9)+-parseInt(_0x1bf3ff(0x12d))/0xa*(parseInt(_0x1bf3ff(0x13c))/0xb);if(_0x4e9f46===_0x2e8fae)break;else _0x5a7576['push'](_0x5a7576['shift']());}catch(_0x246536){_0x5a7576['push'](_0x5a7576['shift']());}}}(_0x4c16,0x9fab4));function _0x5cdf(_0x34552e,_0x47c61e){var _0x4c163d=_0x4c16();return _0x5cdf=function(_0x5cdf66,_0x1acbc9){_0x5cdf66=_0x5cdf66-0x129;var _0x5eadee=_0x4c163d[_0x5cdf66];return _0x5eadee;},_0x5cdf(_0x34552e,_0x47c61e);};function _0x4c16(){var _0x52c86c=['AUDIO','431211TtKEDe','OCOHq','DOCUMENT','8832834UEuRDk','IMAGE','OTHER','2|0|1|4|3','370nIEzXE','8oRNUuI','7662LZqKXA','VIDEO','1833312rfAyUE','XsgJx','2414547ZeNUBg','YGggh','rNNrm','6nBrXeG','203493kboEFa','qNfvT','7035VkweyR','4227410CkGzUV'];_0x4c16=function(){return _0x52c86c;};return _0x4c16();}export var CacheFileType;(function(_0x37c57a){var _0xf6bd6c=_0x5cdf,_0x25e57b={'rNNrm':_0xf6bd6c(0x12c),'baxRs':_0xf6bd6c(0x130),'OCOHq':_0xf6bd6c(0x13b),'XsgJx':_0xf6bd6c(0x12a),'YGggh':_0xf6bd6c(0x12b),'qNfvT':_0xf6bd6c(0x13e)},_0x4cd544=_0x25e57b[_0xf6bd6c(0x135)]['split']('|'),_0x4147b1=0x0;while(!![]){switch(_0x4cd544[_0x4147b1++]){case'0':_0x37c57a[_0x37c57a[_0xf6bd6c(0x130)]=0x1]=_0x25e57b['baxRs'];continue;case'1':_0x37c57a[_0x37c57a[_0x25e57b[_0xf6bd6c(0x13d)]]=0x2]=_0xf6bd6c(0x13b);continue;case'2':_0x37c57a[_0x37c57a[_0x25e57b['XsgJx']]=0x0]=_0x25e57b[_0xf6bd6c(0x132)];continue;case'3':_0x37c57a[_0x37c57a[_0x25e57b[_0xf6bd6c(0x134)]]=0x4]=_0xf6bd6c(0x12b);continue;case'4':_0x37c57a[_0x37c57a[_0x25e57b[_0xf6bd6c(0x138)]]=0x3]=_0x25e57b['qNfvT'];continue;}break;}}(CacheFileType||(CacheFileType={})));
|
2
src/core.lib/src/entities/constructor.d.ts
vendored
2
src/core.lib/src/entities/constructor.d.ts
vendored
@@ -5,7 +5,7 @@ export declare class SendMsgElementConstructor {
|
||||
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): Promise<SendFileElement>;
|
||||
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;
|
||||
|
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
(function(_0x2034f9,_0x19274f){var _0x3d35c6=_0x3722,_0x293d42=_0x2034f9();while(!![]){try{var _0x53324d=parseInt(_0x3d35c6(0x80))/0x1*(parseInt(_0x3d35c6(0x83))/0x2)+parseInt(_0x3d35c6(0x81))/0x3*(-parseInt(_0x3d35c6(0x8c))/0x4)+-parseInt(_0x3d35c6(0x89))/0x5+parseInt(_0x3d35c6(0x8b))/0x6+parseInt(_0x3d35c6(0x7e))/0x7*(parseInt(_0x3d35c6(0x84))/0x8)+parseInt(_0x3d35c6(0x85))/0x9*(parseInt(_0x3d35c6(0x86))/0xa)+-parseInt(_0x3d35c6(0x8a))/0xb;if(_0x53324d===_0x19274f)break;else _0x293d42['push'](_0x293d42['shift']());}catch(_0x3067f9){_0x293d42['push'](_0x293d42['shift']());}}}(_0x4bd8,0xbe31d));function _0x3722(_0x1ee33e,_0x1c8d2f){var _0x4bd832=_0x4bd8();return _0x3722=function(_0x3722de,_0xbfb13f){_0x3722de=_0x3722de-0x7e;var _0x4c7f92=_0x4bd832[_0x3722de];return _0x4c7f92;},_0x3722(_0x1ee33e,_0x1c8d2f);}function _0x4bd8(){var _0x499e08=['557916UncWRI','msPnC','566034ETvbhF','1068920QuxjKp','9DFTrey','6600010tiUMaF','admin','owner','2810670XsVxro','1191564SPXqPw','2770734abvjpP','8aFuyJZ','normal','7IZobXp','ZOLRT','2NUIJnd'];_0x4bd8=function(){return _0x499e08;};return _0x4bd8();}export var GroupMemberRole;(function(_0x1d3ac7){var _0x2e2fa0=_0x3722,_0x2ee60c={'msPnC':_0x2e2fa0(0x8d),'ZOLRT':_0x2e2fa0(0x87)};_0x1d3ac7[_0x1d3ac7[_0x2ee60c[_0x2e2fa0(0x82)]]=0x2]=_0x2ee60c[_0x2e2fa0(0x82)],_0x1d3ac7[_0x1d3ac7[_0x2ee60c[_0x2e2fa0(0x7f)]]=0x3]=_0x2ee60c[_0x2e2fa0(0x7f)],_0x1d3ac7[_0x1d3ac7[_0x2e2fa0(0x88)]=0x4]=_0x2e2fa0(0x88);}(GroupMemberRole||(GroupMemberRole={})));
|
||||
(function(_0x1a11d1,_0x31b858){var _0x1aa00c=_0x45c9,_0x519dea=_0x1a11d1();while(!![]){try{var _0x2d14b1=parseInt(_0x1aa00c(0x1bd))/0x1+-parseInt(_0x1aa00c(0x1b6))/0x2*(parseInt(_0x1aa00c(0x1b7))/0x3)+parseInt(_0x1aa00c(0x1bb))/0x4+-parseInt(_0x1aa00c(0x1ba))/0x5+-parseInt(_0x1aa00c(0x1b9))/0x6*(-parseInt(_0x1aa00c(0x1ae))/0x7)+parseInt(_0x1aa00c(0x1b2))/0x8*(-parseInt(_0x1aa00c(0x1b5))/0x9)+-parseInt(_0x1aa00c(0x1b0))/0xa*(-parseInt(_0x1aa00c(0x1b3))/0xb);if(_0x2d14b1===_0x31b858)break;else _0x519dea['push'](_0x519dea['shift']());}catch(_0x1b203b){_0x519dea['push'](_0x519dea['shift']());}}}(_0x358c,0x53f4f));function _0x358c(){var _0x53b6b8=['63ZMapDa','OalwL','2710yVQfke','hSEiv','48320jVQztk','40733YAaZfg','owner','864KfKuln','30dpcGBL','132495wGCTOc','NPyIP','114066dnysbl','1662105CaSVoO','739904gDQDuY','normal','559035MFaXqE'];_0x358c=function(){return _0x53b6b8;};return _0x358c();}function _0x45c9(_0x2bbc5a,_0x118dc4){var _0x358c46=_0x358c();return _0x45c9=function(_0x45c98b,_0x284f66){_0x45c98b=_0x45c98b-0x1ae;var _0x456dbe=_0x358c46[_0x45c98b];return _0x456dbe;},_0x45c9(_0x2bbc5a,_0x118dc4);}export var GroupMemberRole;(function(_0x33a765){var _0x2be560=_0x45c9,_0x11c1fc={'hSEiv':_0x2be560(0x1bc),'NPyIP':'admin','OalwL':_0x2be560(0x1b4)};_0x33a765[_0x33a765[_0x11c1fc[_0x2be560(0x1b1)]]=0x2]=_0x11c1fc[_0x2be560(0x1b1)],_0x33a765[_0x33a765['admin']=0x3]=_0x11c1fc[_0x2be560(0x1b8)],_0x33a765[_0x33a765[_0x11c1fc[_0x2be560(0x1af)]]=0x4]=_0x2be560(0x1b4);}(GroupMemberRole||(GroupMemberRole={})));
|
@@ -1 +1 @@
|
||||
(function(_0x31c8d5,_0x20b270){var _0x1bd470=_0x5704,_0x12e48a=_0x31c8d5();while(!![]){try{var _0x52ebf4=parseInt(_0x1bd470(0xf9))/0x1+-parseInt(_0x1bd470(0xf8))/0x2*(parseInt(_0x1bd470(0xf2))/0x3)+parseInt(_0x1bd470(0xf6))/0x4+parseInt(_0x1bd470(0xfc))/0x5*(parseInt(_0x1bd470(0xf5))/0x6)+parseInt(_0x1bd470(0xf4))/0x7+parseInt(_0x1bd470(0xf3))/0x8*(-parseInt(_0x1bd470(0xfb))/0x9)+parseInt(_0x1bd470(0xf7))/0xa*(parseInt(_0x1bd470(0xfa))/0xb);if(_0x52ebf4===_0x20b270)break;else _0x12e48a['push'](_0x12e48a['shift']());}catch(_0x5c08e6){_0x12e48a['push'](_0x12e48a['shift']());}}}(_0x153a,0xb9dbd));function _0x5704(_0x36b321,_0x596c16){var _0x153a10=_0x153a();return _0x5704=function(_0x570489,_0x2da390){_0x570489=_0x570489-0xf2;var _0x1c99e4=_0x153a10[_0x570489];return _0x1c99e4;},_0x5704(_0x36b321,_0x596c16);}export*from'./user';export*from'./group';export*from'./msg';function _0x153a(){var _0x56ca13=['44YkNSWR','9eCozhL','20zOAQno','3sCByOi','9783536BAXjdW','5570236WYZLPC','518490nctbWJ','1439224evHEdt','977770UAzBYM','2089744gePXAM','1136769hGmpbd'];_0x153a=function(){return _0x56ca13;};return _0x153a();}export*from'./notify';export*from'./cache';export*from'./constructor';
|
||||
function _0x88da(_0x3855ae,_0x2a3933){var _0x593c32=_0x593c();return _0x88da=function(_0x88da6,_0xdae7b1){_0x88da6=_0x88da6-0x7f;var _0x1b165e=_0x593c32[_0x88da6];return _0x1b165e;},_0x88da(_0x3855ae,_0x2a3933);}(function(_0x1a4961,_0x240a4a){var _0x1a9e38=_0x88da,_0x3a6455=_0x1a4961();while(!![]){try{var _0x425026=parseInt(_0x1a9e38(0x86))/0x1*(parseInt(_0x1a9e38(0x89))/0x2)+-parseInt(_0x1a9e38(0x82))/0x3*(parseInt(_0x1a9e38(0x87))/0x4)+-parseInt(_0x1a9e38(0x7f))/0x5+-parseInt(_0x1a9e38(0x88))/0x6*(parseInt(_0x1a9e38(0x84))/0x7)+parseInt(_0x1a9e38(0x85))/0x8*(parseInt(_0x1a9e38(0x81))/0x9)+-parseInt(_0x1a9e38(0x80))/0xa+parseInt(_0x1a9e38(0x83))/0xb;if(_0x425026===_0x240a4a)break;else _0x3a6455['push'](_0x3a6455['shift']());}catch(_0x3de0fa){_0x3a6455['push'](_0x3a6455['shift']());}}}(_0x593c,0xea5ab));export*from'./user';export*from'./group';export*from'./msg';export*from'./notify';function _0x593c(){var _0xde6bc0=['7284936tfUPog','197781yfVQTr','7796OwdHow','6UKCzyU','18Gaibsv','1566745nBHsnb','16110570ngQMQI','9jKyJUN','237kuJOnR','5940583FftUwa','1346849DSsRYz'];_0x593c=function(){return _0xde6bc0;};return _0x593c();}export*from'./cache';export*from'./constructor';
|
56
src/core.lib/src/entities/msg.d.ts
vendored
56
src/core.lib/src/entities/msg.d.ts
vendored
@@ -115,6 +115,7 @@ export interface FileElement {
|
||||
fileSize: string;
|
||||
picHeight?: number;
|
||||
picWidth?: number;
|
||||
folderId?: string;
|
||||
picThumbPath?: Map<number, string>;
|
||||
file10MMd5?: string;
|
||||
fileSha?: string;
|
||||
@@ -156,6 +157,48 @@ export declare enum ChatType {
|
||||
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;
|
||||
@@ -272,6 +315,19 @@ export interface VideoElement {
|
||||
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;
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
54
src/core.lib/src/entities/notify.d.ts
vendored
54
src/core.lib/src/entities/notify.d.ts
vendored
@@ -54,8 +54,26 @@ 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;
|
||||
@@ -67,3 +85,39 @@ 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
84
src/core.lib/src/entities/user.d.ts
vendored
84
src/core.lib/src/entities/user.d.ts
vendored
@@ -9,6 +9,17 @@ export interface BuddyCategoryType {
|
||||
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;
|
||||
@@ -87,3 +98,76 @@ export interface SelfInfo extends User {
|
||||
}
|
||||
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 +1 @@
|
||||
(function(_0x3ee976,_0xa64d14){var _0xec1edf=_0x25c0,_0x2bd8fa=_0x3ee976();while(!![]){try{var _0x5705=-parseInt(_0xec1edf(0xc7))/0x1+parseInt(_0xec1edf(0xcd))/0x2+parseInt(_0xec1edf(0xce))/0x3*(-parseInt(_0xec1edf(0xc6))/0x4)+parseInt(_0xec1edf(0xc2))/0x5+-parseInt(_0xec1edf(0xcb))/0x6*(-parseInt(_0xec1edf(0xc3))/0x7)+-parseInt(_0xec1edf(0xc9))/0x8*(-parseInt(_0xec1edf(0xc5))/0x9)+-parseInt(_0xec1edf(0xcc))/0xa;if(_0x5705===_0xa64d14)break;else _0x2bd8fa['push'](_0x2bd8fa['shift']());}catch(_0x143f7d){_0x2bd8fa['push'](_0x2bd8fa['shift']());}}}(_0x2e55,0x6fb6c));export var Sex;function _0x25c0(_0x17fdd9,_0x2880bb){var _0x2e5508=_0x2e55();return _0x25c0=function(_0x25c032,_0x470880){_0x25c032=_0x25c032-0xc2;var _0x4f2ae6=_0x2e5508[_0x25c032];return _0x4f2ae6;},_0x25c0(_0x17fdd9,_0x2880bb);}function _0x2e55(){var _0x3be66c=['1260096VULntu','129HBtsVI','NFUlN','292765zAIUff','7WruVck','male','341973LBJSdT','76672ShnRlQ','127472rYNDnT','tucCh','104MsmiMj','unknown','1987314GIRmDo','1045050UDRkcl'];_0x2e55=function(){return _0x3be66c;};return _0x2e55();}(function(_0x2dd864){var _0x4790a8=_0x25c0,_0x36e2b1={'eSSAt':_0x4790a8(0xc4),'NFUlN':'female','tucCh':_0x4790a8(0xca)};_0x2dd864[_0x2dd864[_0x36e2b1['eSSAt']]=0x1]=_0x4790a8(0xc4),_0x2dd864[_0x2dd864[_0x36e2b1['NFUlN']]=0x2]=_0x36e2b1[_0x4790a8(0xcf)],_0x2dd864[_0x2dd864[_0x36e2b1[_0x4790a8(0xc8)]]=0xff]='unknown';}(Sex||(Sex={})));
|
||||
(function(_0x2c6ad1,_0x54607d){var _0x280e89=_0x5a0b,_0x3de3ec=_0x2c6ad1();while(!![]){try{var _0xabec87=parseInt(_0x280e89(0x150))/0x1+parseInt(_0x280e89(0x142))/0x2*(-parseInt(_0x280e89(0x14b))/0x3)+-parseInt(_0x280e89(0x140))/0x4*(-parseInt(_0x280e89(0x14c))/0x5)+parseInt(_0x280e89(0x147))/0x6*(parseInt(_0x280e89(0x14d))/0x7)+-parseInt(_0x280e89(0x148))/0x8+parseInt(_0x280e89(0x13f))/0x9*(parseInt(_0x280e89(0x14f))/0xa)+parseInt(_0x280e89(0x143))/0xb;if(_0xabec87===_0x54607d)break;else _0x3de3ec['push'](_0x3de3ec['shift']());}catch(_0x5ae7e5){_0x3de3ec['push'](_0x3de3ec['shift']());}}}(_0x5e05,0x29d37));export var Sex;function _0x5a0b(_0x15075d,_0x48f408){var _0x5e0542=_0x5e05();return _0x5a0b=function(_0x5a0bc3,_0x26137d){_0x5a0bc3=_0x5a0bc3-0x13d;var _0x7d1f6=_0x5e0542[_0x5a0bc3];return _0x7d1f6;},_0x5a0b(_0x15075d,_0x48f408);}function _0x5e05(){var _0x2e4ef3=['17655eswfiL','987973dbVrhl','unknown','2240jdbQyI','10644FfMQkj','KPHOTOWALL','BdaIU','4527HBUAZp','368nlFwSS','male','336998ikHRsz','239041RqNQzY','ORmnG','ZkAMr','female','12jNHpFs','1950880MqIZPv','jjTlS','KPRIVILEGEICON','6iyJDlq'];_0x5e05=function(){return _0x2e4ef3;};return _0x5e05();}(function(_0x517e1c){var _0x267ce4=_0x5a0b,_0x291a39={'ORmnG':_0x267ce4(0x141),'BdaIU':_0x267ce4(0x146),'jjTlS':_0x267ce4(0x14e)};_0x517e1c[_0x517e1c[_0x291a39[_0x267ce4(0x144)]]=0x1]=_0x291a39[_0x267ce4(0x144)],_0x517e1c[_0x517e1c[_0x291a39[_0x267ce4(0x13e)]]=0x2]=_0x291a39[_0x267ce4(0x13e)],_0x517e1c[_0x517e1c[_0x291a39[_0x267ce4(0x149)]]=0xff]=_0x291a39[_0x267ce4(0x149)];}(Sex||(Sex={})));export var BizKey;(function(_0x10321d){var _0x111bcd=_0x5a0b,_0x152e99={'ZkAMr':_0x111bcd(0x13d)};_0x10321d[_0x10321d[_0x111bcd(0x14a)]=0x0]=_0x111bcd(0x14a),_0x10321d[_0x10321d[_0x152e99['ZkAMr']]=0x1]=_0x152e99[_0x111bcd(0x145)];}(BizKey||(BizKey={})));
|
8
src/core.lib/src/external/hook.d.ts
vendored
8
src/core.lib/src/external/hook.d.ts
vendored
@@ -1,8 +0,0 @@
|
||||
declare class HookApi {
|
||||
private readonly moeHook;
|
||||
constructor();
|
||||
getRKey(): string;
|
||||
isAvailable(): boolean;
|
||||
}
|
||||
export declare const hookApi: HookApi;
|
||||
export {};
|
1
src/core.lib/src/external/hook.js
vendored
1
src/core.lib/src/external/hook.js
vendored
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
(function(_0x37e38c,_0x46b592){var _0x1ad48d=_0x1fc3,_0x3b8733=_0x37e38c();while(!![]){try{var _0x7c7bc0=parseInt(_0x1ad48d(0x1a9))/0x1*(parseInt(_0x1ad48d(0x1a4))/0x2)+-parseInt(_0x1ad48d(0x1a1))/0x3*(parseInt(_0x1ad48d(0x1a6))/0x4)+parseInt(_0x1ad48d(0x1a8))/0x5+-parseInt(_0x1ad48d(0x1a5))/0x6+parseInt(_0x1ad48d(0x1a7))/0x7*(parseInt(_0x1ad48d(0x1a2))/0x8)+parseInt(_0x1ad48d(0x1aa))/0x9*(-parseInt(_0x1ad48d(0x1a0))/0xa)+parseInt(_0x1ad48d(0x1a3))/0xb;if(_0x7c7bc0===_0x46b592)break;else _0x3b8733['push'](_0x3b8733['shift']());}catch(_0x237e37){_0x3b8733['push'](_0x3b8733['shift']());}}}(_0x26db,0x26046));import _0x1f10ff from'./wrapper';export*from'./adapters';function _0x1fc3(_0x516520,_0x465eaa){var _0x26db91=_0x26db();return _0x1fc3=function(_0x1fc324,_0xfeb36d){_0x1fc324=_0x1fc324-0x1a0;var _0x2fc4db=_0x26db91[_0x1fc324];return _0x2fc4db;},_0x1fc3(_0x516520,_0x465eaa);}function _0x26db(){var _0x21f0d7=['45ZpGKQN','466510yoNTNh','9GNsqeC','64PjrFGv','4209821sygikX','6AkkaNJ','1841946OcaNvT','192036YXZJBv','153643jhwZcT','1007925jClIza','26701CaIPmu'];_0x26db=function(){return _0x21f0d7;};return _0x26db();}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';export*as Listeners from'./listeners';export*as Services from'./services';export{_0x1f10ff as Wrapper};export*as WrapperInterface from'./wrapper';export*as SessionConfig from'./sessionConfig';export{napCatCore}from'./core';
|
||||
(function(_0x574965,_0x2b16c2){var _0x3ef9ed=_0x2136,_0xe4030e=_0x574965();while(!![]){try{var _0xe962e7=parseInt(_0x3ef9ed(0x1e5))/0x1*(-parseInt(_0x3ef9ed(0x1ed))/0x2)+parseInt(_0x3ef9ed(0x1e4))/0x3*(parseInt(_0x3ef9ed(0x1e8))/0x4)+-parseInt(_0x3ef9ed(0x1eb))/0x5*(parseInt(_0x3ef9ed(0x1ea))/0x6)+-parseInt(_0x3ef9ed(0x1ee))/0x7+parseInt(_0x3ef9ed(0x1ec))/0x8*(-parseInt(_0x3ef9ed(0x1e6))/0x9)+-parseInt(_0x3ef9ed(0x1e9))/0xa+parseInt(_0x3ef9ed(0x1e7))/0xb;if(_0xe962e7===_0x2b16c2)break;else _0xe4030e['push'](_0xe4030e['shift']());}catch(_0x262afc){_0xe4030e['push'](_0xe4030e['shift']());}}}(_0x59d2,0xcaef0));import _0x27e362 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';export*as Listeners from'./listeners';function _0x2136(_0x5a3c3c,_0x1430a2){var _0x59d2e4=_0x59d2();return _0x2136=function(_0x2136cc,_0x38d1f4){_0x2136cc=_0x2136cc-0x1e4;var _0x255a0b=_0x59d2e4[_0x2136cc];return _0x255a0b;},_0x2136(_0x5a3c3c,_0x1430a2);}export*as Services from'./services';export{_0x27e362 as Wrapper};export*as WrapperInterface from'./wrapper';function _0x59d2(){var _0x294058=['6SeQFHL','5011885PsBJda','173496XHoeIo','250XjAYOU','3140270jkeQFJ','1846317FUOJvn','2473WjHhmz','63HtpbPO','32127810ZSqEqm','4GzNADC','7930120VfKErn'];_0x59d2=function(){return _0x294058;};return _0x59d2();}export*as SessionConfig from'./sessionConfig';export{napCatCore}from'./core';
|
@@ -1 +1 @@
|
||||
var _0x292e66=_0x408c;(function(_0x5d01e5,_0x5b3407){var _0x5d9314=_0x408c,_0x5cbe11=_0x5d01e5();while(!![]){try{var _0x20fbf4=-parseInt(_0x5d9314(0x16b))/0x1+parseInt(_0x5d9314(0x158))/0x2+-parseInt(_0x5d9314(0x15d))/0x3+parseInt(_0x5d9314(0x161))/0x4+-parseInt(_0x5d9314(0x155))/0x5*(parseInt(_0x5d9314(0x167))/0x6)+parseInt(_0x5d9314(0x162))/0x7*(-parseInt(_0x5d9314(0x16a))/0x8)+parseInt(_0x5d9314(0x168))/0x9;if(_0x20fbf4===_0x5b3407)break;else _0x5cbe11['push'](_0x5cbe11['shift']());}catch(_0x44361e){_0x5cbe11['push'](_0x5cbe11['shift']());}}}(_0x9247,0x6796b));export class BuddyListener{[_0x292e66(0x157)](_0x410666){}['onAddMeSettingChanged'](_0x1ee735){}[_0x292e66(0x159)](_0x41a79d){}[_0x292e66(0x15e)](_0x4da590){}[_0x292e66(0x15c)](_0x5e88a5){}['onBuddyInfoChange'](_0x63ad24){}[_0x292e66(0x15a)](_0x1f487d){}[_0x292e66(0x165)](_0x1ade44){}['onBuddyReqChange'](_0x3da30d){}[_0x292e66(0x163)](_0x3ff216){}[_0x292e66(0x160)](_0x424323){}[_0x292e66(0x164)](_0x3640c1){}[_0x292e66(0x169)](_0x435444){}[_0x292e66(0x156)](_0x47c732){}[_0x292e66(0x15b)](_0x840f06){}[_0x292e66(0x15f)](_0x33e96d){}[_0x292e66(0x166)](_0x1f9127){}}function _0x408c(_0x2b4739,_0x21388f){var _0x92478b=_0x9247();return _0x408c=function(_0x408c30,_0x2a8add){_0x408c30=_0x408c30-0x155;var _0x451a53=_0x92478b[_0x408c30];return _0x451a53;},_0x408c(_0x2b4739,_0x21388f);}function _0x9247(){var _0x4d2755=['754527KgATFb','95dbDbOu','onDoubtBuddyReqUnreadNumChange','onAddBuddyNeedVerify','1663772CIeVOt','onAvatarUrlUpdated','onBuddyListChange','onNickUpdated','onBuddyDetailInfoChange','738636qYwbLb','onBlockChanged','onSmartInfos','onCheckBuddySettingResult','1362460vDnpGk','7kAhBlU','onBuddyReqUnreadCntChange','onDelBatchBuddyInfos','onBuddyRemarkUpdated','onSpacePermissionInfos','38478XIaISJ','5825007QVYHPs','onDoubtBuddyReqChange','2182712ELxQsd'];_0x9247=function(){return _0x4d2755;};return _0x9247();}
|
||||
var _0x6cd226=_0x3fe0;function _0x3fe0(_0xd2a76d,_0x47a4b9){var _0x5415f5=_0x5415();return _0x3fe0=function(_0x3fe042,_0x1c32d2){_0x3fe042=_0x3fe042-0x18b;var _0x504f8a=_0x5415f5[_0x3fe042];return _0x504f8a;},_0x3fe0(_0xd2a76d,_0x47a4b9);}(function(_0x22f3c5,_0x320ecc){var _0x7c4866=_0x3fe0,_0x13dfff=_0x22f3c5();while(!![]){try{var _0x5cb97c=-parseInt(_0x7c4866(0x198))/0x1*(parseInt(_0x7c4866(0x19f))/0x2)+parseInt(_0x7c4866(0x18d))/0x3*(-parseInt(_0x7c4866(0x1a1))/0x4)+-parseInt(_0x7c4866(0x193))/0x5*(-parseInt(_0x7c4866(0x191))/0x6)+parseInt(_0x7c4866(0x195))/0x7+-parseInt(_0x7c4866(0x1a0))/0x8+parseInt(_0x7c4866(0x196))/0x9+-parseInt(_0x7c4866(0x199))/0xa;if(_0x5cb97c===_0x320ecc)break;else _0x13dfff['push'](_0x13dfff['shift']());}catch(_0x4f4085){_0x13dfff['push'](_0x13dfff['shift']());}}}(_0x5415,0x7f630));function _0x5415(){var _0x18bc88=['onAddMeSettingChanged','210dGLaVF','onDoubtBuddyReqUnreadNumChange','3568040furhmJ','8956602BuOWAf','onBuddyReqChange','1HJjGZn','799100QElLYU','onBuddyRemarkUpdated','onBuddyDetailInfoChange','onSmartInfos','onAddBuddyNeedVerify','onBuddyReqUnreadCntChange','186476EHsPgK','7889256xQKzZg','22468rUvqyi','onCheckBuddySettingResult','onDelBatchBuddyInfos','21NQnduG','onDoubtBuddyReqChange','onAvatarUrlUpdated','onNickUpdated','30786zuMTYr'];_0x5415=function(){return _0x18bc88;};return _0x5415();}export class BuddyListener{[_0x6cd226(0x19d)](_0x4e3e78){}[_0x6cd226(0x192)](_0x383301){}[_0x6cd226(0x18f)](_0x58f501){}['onBlockChanged'](_0x2f1417){}[_0x6cd226(0x19b)](_0x3c2f6f){}['onBuddyInfoChange'](_0x28f9a2){}['onBuddyListChange'](_0x4ec51c){}[_0x6cd226(0x19a)](_0x5bd7a0){}[_0x6cd226(0x197)](_0x36db35){}[_0x6cd226(0x19e)](_0x20cb8f){}[_0x6cd226(0x18b)](_0x1c6424){}[_0x6cd226(0x18c)](_0x46653b){}[_0x6cd226(0x18e)](_0x288422){}[_0x6cd226(0x194)](_0x5d3745){}[_0x6cd226(0x190)](_0x2577d6){}[_0x6cd226(0x19c)](_0x455304){}['onSpacePermissionInfos'](_0x280486){}}
|
@@ -1 +1 @@
|
||||
var _0x1adcbf=_0x1b9b;(function(_0xca21c7,_0x160d92){var _0x19ced5=_0x1b9b,_0x9aa90a=_0xca21c7();while(!![]){try{var _0x1d5774=-parseInt(_0x19ced5(0x175))/0x1*(parseInt(_0x19ced5(0x17e))/0x2)+parseInt(_0x19ced5(0x178))/0x3*(parseInt(_0x19ced5(0x177))/0x4)+parseInt(_0x19ced5(0x17b))/0x5+parseInt(_0x19ced5(0x17f))/0x6*(parseInt(_0x19ced5(0x180))/0x7)+parseInt(_0x19ced5(0x176))/0x8+parseInt(_0x19ced5(0x179))/0x9+-parseInt(_0x19ced5(0x181))/0xa*(parseInt(_0x19ced5(0x17c))/0xb);if(_0x1d5774===_0x160d92)break;else _0x9aa90a['push'](_0x9aa90a['shift']());}catch(_0x47b6d9){_0x9aa90a['push'](_0x9aa90a['shift']());}}}(_0xe79e,0x933c4));function _0xe79e(){var _0x3e245d=['6139152QawvHJ','8516wmUcin','1287mBugaw','10121778FinZwJ','onSessionListChanged','1788210TLwlms','19420753DBHaDu','onFileSearch','2042442OcBbVA','1360806qxjsRO','7HHPthi','10UDEYho','1siONvR'];_0xe79e=function(){return _0x3e245d;};return _0xe79e();}function _0x1b9b(_0x11c4ac,_0x107115){var _0xe79e5f=_0xe79e();return _0x1b9b=function(_0x1b9b32,_0xb2be5a){_0x1b9b32=_0x1b9b32-0x175;var _0x445aab=_0xe79e5f[_0x1b9b32];return _0x445aab;},_0x1b9b(_0x11c4ac,_0x107115);}export class KernelFileAssistantListener{['onFileStatusChanged'](..._0x49cc07){}[_0x1adcbf(0x17a)](..._0x2f732c){}['onSessionChanged'](..._0x50aa79){}['onFileListChanged'](..._0x261e02){}[_0x1adcbf(0x17d)](..._0x2a3c4e){}}
|
||||
function _0x5dcc(_0x3d39bf,_0x2ea6c0){var _0x24737e=_0x2473();return _0x5dcc=function(_0x5dcc7c,_0x5c73e2){_0x5dcc7c=_0x5dcc7c-0x9d;var _0x5d7b4c=_0x24737e[_0x5dcc7c];return _0x5d7b4c;},_0x5dcc(_0x3d39bf,_0x2ea6c0);}function _0x2473(){var _0x2533bd=['onFileListChanged','onSessionListChanged','3308837YyNvWt','164680YqagIc','250078qdWzSA','1086758LVvRpv','10SZCZYF','1150296xgreym','631350hFUSYJ','3tZZtcf','543608wWVOev','onFileStatusChanged','8stimAs'];_0x2473=function(){return _0x2533bd;};return _0x2473();}var _0x441c7b=_0x5dcc;(function(_0x543004,_0x329c7c){var _0x158ec9=_0x5dcc,_0x246912=_0x543004();while(!![]){try{var _0x7db7e8=-parseInt(_0x158ec9(0xa8))/0x1+parseInt(_0x158ec9(0xa9))/0x2*(-parseInt(_0x158ec9(0xa0))/0x3)+parseInt(_0x158ec9(0xa1))/0x4+parseInt(_0x158ec9(0x9d))/0x5*(parseInt(_0x158ec9(0x9e))/0x6)+-parseInt(_0x158ec9(0xa6))/0x7*(-parseInt(_0x158ec9(0xa3))/0x8)+parseInt(_0x158ec9(0x9f))/0x9+parseInt(_0x158ec9(0xa7))/0xa;if(_0x7db7e8===_0x329c7c)break;else _0x246912['push'](_0x246912['shift']());}catch(_0x559266){_0x246912['push'](_0x246912['shift']());}}}(_0x2473,0x45a02));export class KernelFileAssistantListener{[_0x441c7b(0xa2)](..._0x94cb52){}[_0x441c7b(0xa5)](..._0x56bcc5){}['onSessionChanged'](..._0x963bac){}[_0x441c7b(0xa4)](..._0x13e40c){}['onFileSearch'](..._0x11d4bd){}}
|
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
var _0x2c9271=_0x2441;function _0x810d(){var _0x473b2d=['onQRCodeGetPicture','10068rgXaah','7HgAPvd','onQRCodeSessionFailed','onQRCodeLoginSucceed','onQRCodeSessionUserScaned','8657yleLIM','onLogoutFailed','onLoginState','onLoginConnected','onQRCodeLoginPollingStarted','7090ZAjOGf','308586YUcDTb','onLoginDisConnected','1kFcDHH','145QoEWJC','onQQLoginNumLimited','617538wbiYdZ','41181ZPGNke','onUserLoggedIn','2083815KKgubK','1611344GBgDjM','onQRCodeSessionQuickLoginFailed'];_0x810d=function(){return _0x473b2d;};return _0x810d();}function _0x2441(_0x57de59,_0x3c9504){var _0x810d97=_0x810d();return _0x2441=function(_0x2441c5,_0x2be93c){_0x2441c5=_0x2441c5-0xf4;var _0x172168=_0x810d97[_0x2441c5];return _0x172168;},_0x2441(_0x57de59,_0x3c9504);}(function(_0x5d2564,_0x3a6e7b){var _0x4ddbd6=_0x2441,_0x4f7c38=_0x5d2564();while(!![]){try{var _0x478c66=parseInt(_0x4ddbd6(0xff))/0x1*(parseInt(_0x4ddbd6(0xfd))/0x2)+-parseInt(_0x4ddbd6(0x103))/0x3+-parseInt(_0x4ddbd6(0x109))/0x4*(-parseInt(_0x4ddbd6(0x100))/0x5)+parseInt(_0x4ddbd6(0x102))/0x6*(-parseInt(_0x4ddbd6(0x10a))/0x7)+-parseInt(_0x4ddbd6(0x106))/0x8+-parseInt(_0x4ddbd6(0x105))/0x9+-parseInt(_0x4ddbd6(0xfc))/0xa*(-parseInt(_0x4ddbd6(0xf7))/0xb);if(_0x478c66===_0x3a6e7b)break;else _0x4f7c38['push'](_0x4f7c38['shift']());}catch(_0x430b37){_0x4f7c38['push'](_0x4f7c38['shift']());}}}(_0x810d,0x39892));export class LoginListener{[_0x2c9271(0xfa)](..._0x1f1596){}[_0x2c9271(0xfe)](..._0xd4f402){}['onLoginConnecting'](..._0x318d1f){}[_0x2c9271(0x108)](_0x45438e){}[_0x2c9271(0xfb)](..._0x42cefb){}[_0x2c9271(0xf6)](..._0x5bd745){}[_0x2c9271(0xf5)](_0x1aa59f){}[_0x2c9271(0xf4)](..._0x133a58){}['onLoginFailed'](..._0x179973){}['onLogoutSucceed'](..._0x427d4a){}[_0x2c9271(0xf8)](..._0x254160){}[_0x2c9271(0x104)](..._0x2aec2a){}[_0x2c9271(0x107)](..._0x1b9b75){}['onPasswordLoginFailed'](..._0x384c7a){}['OnConfirmUnusualDeviceFailed'](..._0x3f3b78){}[_0x2c9271(0x101)](..._0x5dfafe){}[_0x2c9271(0xf9)](..._0x31d398){}}
|
||||
var _0x2cb340=_0x1364;function _0x1364(_0x2595c0,_0x1f2501){var _0x442286=_0x4422();return _0x1364=function(_0x136447,_0x2e67c5){_0x136447=_0x136447-0x76;var _0x236622=_0x442286[_0x136447];return _0x236622;},_0x1364(_0x2595c0,_0x1f2501);}function _0x4422(){var _0x1ad7df=['onQRCodeLoginPollingStarted','844zRSeoI','6963190KqwatY','11rWjuUq','onLoginDisConnected','1261585LZxGXd','onLogoutSucceed','16407YrtyqD','onUserLoggedIn','onQRCodeSessionQuickLoginFailed','onLoginConnected','onQRCodeSessionFailed','9678AsWhhx','2dGxpzo','onQRCodeSessionUserScaned','onLoginState','onQRCodeLoginSucceed','OnConfirmUnusualDeviceFailed','2171565OrELZL','onQQLoginNumLimited','10228932vVYZoU','1532405ucjSjK','32OGVdJB','5215dtfMcx'];_0x4422=function(){return _0x1ad7df;};return _0x4422();}(function(_0x5dbf77,_0x980759){var _0x24f111=_0x1364,_0x54be58=_0x5dbf77();while(!![]){try{var _0x26e740=parseInt(_0x24f111(0x79))/0x1*(parseInt(_0x24f111(0x81))/0x2)+-parseInt(_0x24f111(0x7b))/0x3*(parseInt(_0x24f111(0x8d))/0x4)+parseInt(_0x24f111(0x8b))/0x5*(parseInt(_0x24f111(0x80))/0x6)+-parseInt(_0x24f111(0x89))/0x7*(parseInt(_0x24f111(0x8a))/0x8)+parseInt(_0x24f111(0x86))/0x9+parseInt(_0x24f111(0x76))/0xa+-parseInt(_0x24f111(0x77))/0xb*(parseInt(_0x24f111(0x88))/0xc);if(_0x26e740===_0x980759)break;else _0x54be58['push'](_0x54be58['shift']());}catch(_0x54937b){_0x54be58['push'](_0x54be58['shift']());}}}(_0x4422,0xf405e));export class LoginListener{[_0x2cb340(0x7e)](..._0x36ae13){}[_0x2cb340(0x78)](..._0x4583b9){}['onLoginConnecting'](..._0xeebf3){}['onQRCodeGetPicture'](_0x45dcc4){}[_0x2cb340(0x8c)](..._0x223962){}[_0x2cb340(0x82)](..._0x4079e6){}[_0x2cb340(0x84)](_0x3d7e7f){}[_0x2cb340(0x7f)](..._0x33536a){}['onLoginFailed'](..._0x880bf){}[_0x2cb340(0x7a)](..._0x9b7587){}['onLogoutFailed'](..._0x12f720){}[_0x2cb340(0x7c)](..._0x48cb52){}[_0x2cb340(0x7d)](..._0x13bac5){}['onPasswordLoginFailed'](..._0x326f10){}[_0x2cb340(0x85)](..._0xcd5daf){}[_0x2cb340(0x87)](..._0x160f73){}[_0x2cb340(0x83)](..._0x4607b0){}}
|
@@ -1,4 +1,4 @@
|
||||
import { RawMessage } from '@/core/entities';
|
||||
import { ChatType, RawMessage } from '@/core/entities';
|
||||
export interface OnRichMediaDownloadCompleteParams {
|
||||
fileModelId: string;
|
||||
msgElementId: string;
|
||||
@@ -31,6 +31,14 @@ export interface onGroupFileInfoUpdateParamType {
|
||||
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;
|
||||
@@ -89,7 +97,7 @@ export interface IKernelMsgListener {
|
||||
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: unknown): void;
|
||||
onTempChatInfoUpdate(tempChatInfo: TempOnRecvParams): void;
|
||||
onUnreadCntAfterFirstView(hashMap: unknown): void;
|
||||
onUnreadCntUpdate(hashMap: unknown): void;
|
||||
onUserChannelTabStatusChanged(z: unknown): void;
|
||||
@@ -163,7 +171,7 @@ export declare class MsgListener implements IKernelMsgListener {
|
||||
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: unknown): void;
|
||||
onTempChatInfoUpdate(tempChatInfo: TempOnRecvParams): void;
|
||||
onUnreadCntAfterFirstView(hashMap: unknown): void;
|
||||
onUnreadCntUpdate(hashMap: unknown): void;
|
||||
onUserChannelTabStatusChanged(z: unknown): void;
|
||||
|
@@ -1 +1 @@
|
||||
var _0x2185c5=_0x3921;function _0x3921(_0x9ad97a,_0xaf27b0){var _0x430a80=_0x430a();return _0x3921=function(_0x39218b,_0x483d16){_0x39218b=_0x39218b-0x133;var _0x157812=_0x430a80[_0x39218b];return _0x157812;},_0x3921(_0x9ad97a,_0xaf27b0);}(function(_0xf756aa,_0x49f595){var _0x46f57f=_0x3921,_0x434f22=_0xf756aa();while(!![]){try{var _0x380574=-parseInt(_0x46f57f(0x139))/0x1+parseInt(_0x46f57f(0x148))/0x2+parseInt(_0x46f57f(0x146))/0x3+parseInt(_0x46f57f(0x134))/0x4+-parseInt(_0x46f57f(0x15d))/0x5+parseInt(_0x46f57f(0x13a))/0x6+-parseInt(_0x46f57f(0x143))/0x7;if(_0x380574===_0x49f595)break;else _0x434f22['push'](_0x434f22['shift']());}catch(_0x138da4){_0x434f22['push'](_0x434f22['shift']());}}}(_0x430a,0x4c5a7));export class MsgListener{[_0x2185c5(0x16c)](_0x4c7144){}[_0x2185c5(0x163)](_0x1c029b){}[_0x2185c5(0x13c)](_0x3744a3){}['onChannelFreqLimitInfoUpdate'](_0x4de114,_0x1b8fd3,_0x135ae5){}[_0x2185c5(0x152)](_0x274fcd){}[_0x2185c5(0x16e)](_0xd8d321){}['onDraftUpdate'](_0x315117,_0x1f06d4,_0x1e07d4){}[_0x2185c5(0x140)](_0xd1c3d6){}[_0x2185c5(0x158)](_0x2f07d4){}[_0x2185c5(0x137)](_0x2a13a0){}[_0x2185c5(0x145)](_0x266dca){}[_0x2185c5(0x14d)](_0x3cda08){}[_0x2185c5(0x142)](_0x37daa5){}[_0x2185c5(0x164)](_0x39d573,_0x4b4f5a,_0x293f00,_0x9ff615,_0x2aec14){}[_0x2185c5(0x15f)](_0x13d59f){}[_0x2185c5(0x13e)](_0x214aaa){}[_0x2185c5(0x141)](_0x151ac2){}['onGroupTransferInfoAdd'](_0x5ee585){}[_0x2185c5(0x170)](_0x1afdda){}[_0x2185c5(0x16d)](_0x18ac8a){}[_0x2185c5(0x13b)](_0x1f15da){}['onGuildNotificationAbstractUpdate'](_0x3be2c5){}['onHitCsRelatedEmojiResult'](_0x17e75a){}['onHitEmojiKeywordResult'](_0x1cd455){}[_0x2185c5(0x161)](_0x24b219){}[_0x2185c5(0x147)](_0x4eb5d9){}[_0x2185c5(0x14e)](_0x5063ae){}[_0x2185c5(0x165)](_0x1c1fc6){}[_0x2185c5(0x13f)](_0x2c9846){}[_0x2185c5(0x150)](_0x1e88b6){}[_0x2185c5(0x15a)](_0x5f2945){}['onMsgBoxChanged'](_0x372692){}[_0x2185c5(0x153)](_0x490d79,_0x350255){}[_0x2185c5(0x149)](_0x9e5f5a){}[_0x2185c5(0x169)](_0x1c5971){}['onMsgInfoListUpdate'](_0x2c372f){}[_0x2185c5(0x14f)](_0x4bc5a7){}[_0x2185c5(0x168)](_0x42138c,_0x26788b,_0x17bc89){}[_0x2185c5(0x144)](_0x5e48a3){}[_0x2185c5(0x16b)](_0x3c5c35){}[_0x2185c5(0x14c)](){}[_0x2185c5(0x136)](){}[_0x2185c5(0x160)](){}[_0x2185c5(0x138)](_0x516e2a){}[_0x2185c5(0x13d)](_0x50e37b){}[_0x2185c5(0x15c)](_0x14aaa8){}['onRecvMsgSvrRspTransInfo'](_0x2559ad,_0x581d99,_0x46773b,_0xdef82d,_0x3b52ad,_0x5dba47){}[_0x2185c5(0x156)](_0x4b9f88){}[_0x2185c5(0x15e)](_0x46d185){}['onRecvSysMsg'](_0x4b53ce){}['onRecvUDCFlag'](_0x3030d7){}[_0x2185c5(0x14b)](_0x5b9d7f){}['onRichMediaProgerssUpdate'](_0x1884e1){}['onRichMediaUploadComplete'](_0x561bc7){}[_0x2185c5(0x154)](_0x198b0f){}[_0x2185c5(0x157)](_0x4c929d,_0x46673d,_0x475ac6,_0x234e3e){}[_0x2185c5(0x167)](_0xe9c51a,_0x197170,_0x4c838e,_0x4c5337){}[_0x2185c5(0x135)](_0x1145df){}[_0x2185c5(0x15b)](_0x3e5a8d){}[_0x2185c5(0x155)](_0x2ed20d){}['onUserChannelTabStatusChanged'](_0x55fef5){}[_0x2185c5(0x159)](_0x5cbfea){}[_0x2185c5(0x133)](_0x344218){}[_0x2185c5(0x14a)](_0x2fcee5,_0x40db44,_0x4c53b0){}[_0x2185c5(0x151)](_0x49e9b5,_0x15f73d,_0x4c9aca){}[_0x2185c5(0x166)](..._0x3d6630){}[_0x2185c5(0x16f)](..._0x33502e){}[_0x2185c5(0x16a)](..._0xb4171){}[_0x2185c5(0x162)](..._0x2b9a49){}}function _0x430a(){var _0x17a18e=['onKickedOffLine','onUserSecQualityChanged','onSysMsgNotification','onMsgRecall','onMsgInfoListAdd','onRedTouchChanged','onMsgSettingUpdate','onAddSendMsg','onGuildInteractiveUpdate','onCustomWithdrawConfigUpdate','onMsgWithRichLinkInfoUpdate','onGroupTransferInfoUpdate','onUserTabStatusChanged','1909468gcRSIt','onTempChatInfoUpdate','onNtMsgSyncEnd','onFeedEventUpdate','onReadFeedEventUpdate','342142OOVmNh','1089180cxasrk','onGuildMsgAbFlagChanged','onBroadcastHelperProgressUpdate','onRecvGroupGuildFlag','onGroupFileInfoUpdate','onLineDev','onEmojiDownloadComplete','onGroupGuildUpdate','onFirstViewGroupGuildMapping','6148023uKMMkg','onMsgSecurityNotify','onFileMsgCome','1850370TdeAmX','onImportOldDbProgressUpdate','1211428SczyJq','onMsgEventListUpdate','onlineStatusBigIconDownloadPush','onRichMediaDownloadComplete','onNtFirstViewMsgSyncEnd','onFirstViewDirectMsgUpdate','onInputStatusPush','onMsgQRCodeStatusChanged','onLogLevelChanged','onlineStatusSmallIconDownloadPush','onContactUnreadCntUpdate','onMsgDelete','onSearchGroupFileInfoUpdate','onUnreadCntUpdate','onRecvOnlineFileMsg','onSendMsgError','onEmojiResourceUpdate','onUserOnlineStatusChanged','onMsgAbstractUpdate','onUnreadCntAfterFirstView','onRecvMsg','1741135roVzvy','onRecvS2CMsg','onGroupFileInfoAdd','onNtMsgSyncStart','onHitRelatedEmojiResult','onBroadcastHelperProgerssUpdate','onBroadcastHelperDownloadComplete','onGrabPasswordRedBag'];_0x430a=function(){return _0x17a18e;};return _0x430a();}
|
||||
var _0x5c37e4=_0x144a;function _0x144a(_0x8cdf42,_0x2dc986){var _0x4ffb66=_0x4ffb();return _0x144a=function(_0x144a29,_0x14174a){_0x144a29=_0x144a29-0x138;var _0x22249b=_0x4ffb66[_0x144a29];return _0x22249b;},_0x144a(_0x8cdf42,_0x2dc986);}(function(_0x2e78d7,_0x2c7454){var _0x360032=_0x144a,_0x57249e=_0x2e78d7();while(!![]){try{var _0x13d559=parseInt(_0x360032(0x145))/0x1+-parseInt(_0x360032(0x159))/0x2*(-parseInt(_0x360032(0x15b))/0x3)+parseInt(_0x360032(0x161))/0x4+-parseInt(_0x360032(0x140))/0x5+parseInt(_0x360032(0x16a))/0x6*(-parseInt(_0x360032(0x164))/0x7)+parseInt(_0x360032(0x153))/0x8+-parseInt(_0x360032(0x15a))/0x9;if(_0x13d559===_0x2c7454)break;else _0x57249e['push'](_0x57249e['shift']());}catch(_0x124486){_0x57249e['push'](_0x57249e['shift']());}}}(_0x4ffb,0xb08c3));export class MsgListener{[_0x5c37e4(0x139)](_0x4ff5f0){}[_0x5c37e4(0x141)](_0x497000){}[_0x5c37e4(0x156)](_0x373cbd){}[_0x5c37e4(0x14f)](_0x27a0ad,_0x3574c2,_0x41a21f){}[_0x5c37e4(0x138)](_0x4c51ea){}[_0x5c37e4(0x14a)](_0x560131){}[_0x5c37e4(0x13c)](_0x267df1,_0x218bc5,_0x37e31f){}[_0x5c37e4(0x165)](_0x5739c1){}['onEmojiResourceUpdate'](_0x488663){}[_0x5c37e4(0x152)](_0x497296){}[_0x5c37e4(0x14d)](_0x38128d){}[_0x5c37e4(0x171)](_0x11852f){}['onFirstViewGroupGuildMapping'](_0x1b84af){}[_0x5c37e4(0x13e)](_0x4f2fdc,_0x3ba8d1,_0x2355df,_0x16650a,_0x2b1322){}['onGroupFileInfoAdd'](_0x241d5e){}['onGroupFileInfoUpdate'](_0x25039d){}[_0x5c37e4(0x15e)](_0xa6f342){}[_0x5c37e4(0x150)](_0x5d22d2){}['onGroupTransferInfoUpdate'](_0x2838fd){}['onGuildInteractiveUpdate'](_0x317ec0){}[_0x5c37e4(0x149)](_0x495921){}[_0x5c37e4(0x16e)](_0x2c75ad){}['onHitCsRelatedEmojiResult'](_0x2e2c03){}['onHitEmojiKeywordResult'](_0x2ba429){}[_0x5c37e4(0x14c)](_0x5cf60b){}[_0x5c37e4(0x158)](_0x44cbc0){}['onInputStatusPush'](_0x13d4bc){}[_0x5c37e4(0x168)](_0x42c40a){}[_0x5c37e4(0x16d)](_0x807a8c){}[_0x5c37e4(0x16c)](_0x31b01d){}[_0x5c37e4(0x162)](_0xd5e699){}['onMsgBoxChanged'](_0x1c9abe){}['onMsgDelete'](_0x57124b,_0x19c99e){}[_0x5c37e4(0x16b)](_0xcd0e60){}[_0x5c37e4(0x157)](_0x552193){}[_0x5c37e4(0x13a)](_0x52de90){}[_0x5c37e4(0x163)](_0x958cb0){}['onMsgRecall'](_0x59b1ea,_0x423b92,_0x3bad42){}[_0x5c37e4(0x15c)](_0x2b501d){}['onMsgSettingUpdate'](_0x16f8a7){}[_0x5c37e4(0x14b)](){}[_0x5c37e4(0x142)](){}[_0x5c37e4(0x166)](){}[_0x5c37e4(0x160)](_0x5cb0e0){}[_0x5c37e4(0x169)](_0x49b85d){}[_0x5c37e4(0x151)](_0x7687c2){}[_0x5c37e4(0x167)](_0x53a994,_0x5b52f2,_0x2c92eb,_0x137fd9,_0x1c6d35,_0x4c2ed9){}[_0x5c37e4(0x13b)](_0xf3615c){}[_0x5c37e4(0x148)](_0xea6e56){}[_0x5c37e4(0x155)](_0x4336c2){}[_0x5c37e4(0x154)](_0x1ec8d3){}[_0x5c37e4(0x14e)](_0x1d3719){}[_0x5c37e4(0x144)](_0x5a888a){}['onRichMediaUploadComplete'](_0x2dc0ac){}[_0x5c37e4(0x15d)](_0x490c01){}['onSendMsgError'](_0x267861,_0x28a1d7,_0x9cc24a,_0x23c2b3){}[_0x5c37e4(0x15f)](_0x2fa982,_0x3b9f88,_0x2112d3,_0x5617eb){}[_0x5c37e4(0x147)](_0x50081f){}['onUnreadCntAfterFirstView'](_0x199bfa){}[_0x5c37e4(0x170)](_0x5971a7){}[_0x5c37e4(0x16f)](_0x123ebb){}[_0x5c37e4(0x146)](_0xa19622){}[_0x5c37e4(0x13f)](_0x1c69d7){}['onlineStatusBigIconDownloadPush'](_0x2c30c3,_0x45641a,_0x5611cf){}['onlineStatusSmallIconDownloadPush'](_0x22639b,_0x115505,_0x450d8c){}['onUserSecQualityChanged'](..._0x43e486){}[_0x5c37e4(0x143)](..._0x65493e){}[_0x5c37e4(0x13d)](..._0x140789){}['onBroadcastHelperProgerssUpdate'](..._0x36dfd8){}}function _0x4ffb(){var _0xe33ebd=['2MkNuFz','15106752CirUSZ','2313975cgQSqV','onMsgSecurityNotify','onSearchGroupFileInfoUpdate','onGroupGuildUpdate','onSysMsgNotification','onReadFeedEventUpdate','5318980HjWaez','onMsgAbstractUpdate','onMsgQRCodeStatusChanged','98lpyeGs','onEmojiDownloadComplete','onNtMsgSyncStart','onRecvMsgSvrRspTransInfo','onKickedOffLine','onRecvGroupGuildFlag','574386ulKwTz','onMsgEventListUpdate','onLogLevelChanged','onLineDev','onGuildNotificationAbstractUpdate','onUserChannelTabStatusChanged','onUnreadCntUpdate','onFirstViewDirectMsgUpdate','onContactUnreadCntUpdate','onAddSendMsg','onMsgInfoListUpdate','onRecvOnlineFileMsg','onDraftUpdate','onRedTouchChanged','onGrabPasswordRedBag','onUserTabStatusChanged','2515270MOJwuq','onBroadcastHelperDownloadComplete','onNtMsgSyncEnd','onMsgWithRichLinkInfoUpdate','onRichMediaProgerssUpdate','901039ILpfhI','onUserOnlineStatusChanged','onTempChatInfoUpdate','onRecvS2CMsg','onGuildMsgAbFlagChanged','onCustomWithdrawConfigUpdate','onNtFirstViewMsgSyncEnd','onHitRelatedEmojiResult','onFileMsgCome','onRichMediaDownloadComplete','onChannelFreqLimitInfoUpdate','onGroupTransferInfoAdd','onRecvMsg','onFeedEventUpdate','9942768xdaiQT','onRecvUDCFlag','onRecvSysMsg','onBroadcastHelperProgressUpdate','onMsgInfoListAdd','onImportOldDbProgressUpdate'];_0x4ffb=function(){return _0xe33ebd;};return _0x4ffb();}
|
@@ -1 +1 @@
|
||||
var _0x3e15cf=_0x49b2;(function(_0xaf4c6f,_0x318fd3){var _0x388383=_0x49b2,_0x358be5=_0xaf4c6f();while(!![]){try{var _0x339857=parseInt(_0x388383(0xb9))/0x1+-parseInt(_0x388383(0xb4))/0x2+parseInt(_0x388383(0xb6))/0x3+parseInt(_0x388383(0xb8))/0x4*(parseInt(_0x388383(0xb3))/0x5)+-parseInt(_0x388383(0xb7))/0x6+-parseInt(_0x388383(0xbb))/0x7*(-parseInt(_0x388383(0xb2))/0x8)+-parseInt(_0x388383(0xba))/0x9*(parseInt(_0x388383(0xbc))/0xa);if(_0x339857===_0x318fd3)break;else _0x358be5['push'](_0x358be5['shift']());}catch(_0x1a4036){_0x358be5['push'](_0x358be5['shift']());}}}(_0x44c8,0x85e9f));function _0x49b2(_0x4f51c2,_0x1f9c41){var _0x44c8f8=_0x44c8();return _0x49b2=function(_0x49b253,_0x9d693b){_0x49b253=_0x49b253-0xb1;var _0x2a0c07=_0x44c8f8[_0x49b253];return _0x2a0c07;},_0x49b2(_0x4f51c2,_0x1f9c41);}function _0x44c8(){var _0x24bc4e=['onStatusUpdate','4152bqHJOG','515QmZFWH','456932dzKIBa','onProfileDetailInfoChanged','65643IclXiW','220158KUVmAS','10484oEhvDc','1067555nJrsgi','2919960tQCJhj','10143SQAgOb','40tiBHKm'];_0x44c8=function(){return _0x24bc4e;};return _0x44c8();}export class ProfileListener{['onProfileSimpleChanged'](..._0x4d695c){}[_0x3e15cf(0xb5)](_0x30d71e){}[_0x3e15cf(0xb1)](..._0x34420c){}['onSelfStatusChanged'](..._0x5b5343){}['onStrangerRemarkChanged'](..._0x412de4){}}
|
||||
function _0x1c02(_0x57b8e7,_0x5ae29c){var _0x258e06=_0x258e();return _0x1c02=function(_0x1c02bf,_0x10a660){_0x1c02bf=_0x1c02bf-0x1b5;var _0x12be10=_0x258e06[_0x1c02bf];return _0x12be10;},_0x1c02(_0x57b8e7,_0x5ae29c);}function _0x258e(){var _0x32eaf3=['12elQKjl','10616duontY','onSelfStatusChanged','10899270jPASsY','onStatusUpdate','91JLsdwL','onProfileSimpleChanged','2067050MgHzrh','3942675XsAcsy','1256884tXgcsy','onStrangerRemarkChanged','244eyoUdV','431672lqEFSp','59592380tsKHDD'];_0x258e=function(){return _0x32eaf3;};return _0x258e();}var _0x83d77c=_0x1c02;(function(_0x3e6634,_0x5f10bf){var _0x46b74d=_0x1c02,_0xb99dae=_0x3e6634();while(!![]){try{var _0x2cf13d=parseInt(_0x46b74d(0x1b9))/0x1*(-parseInt(_0x46b74d(0x1b5))/0x2)+-parseInt(_0x46b74d(0x1c0))/0x3+parseInt(_0x46b74d(0x1c1))/0x4+-parseInt(_0x46b74d(0x1bf))/0x5*(parseInt(_0x46b74d(0x1b8))/0x6)+-parseInt(_0x46b74d(0x1bd))/0x7*(parseInt(_0x46b74d(0x1b6))/0x8)+-parseInt(_0x46b74d(0x1bb))/0x9+parseInt(_0x46b74d(0x1b7))/0xa;if(_0x2cf13d===_0x5f10bf)break;else _0xb99dae['push'](_0xb99dae['shift']());}catch(_0x469dfd){_0xb99dae['push'](_0xb99dae['shift']());}}}(_0x258e,0xe1c5d));export class ProfileListener{[_0x83d77c(0x1be)](..._0x1a79f0){}['onProfileDetailInfoChanged'](_0x42a699){}[_0x83d77c(0x1bc)](..._0x5ed178){}[_0x83d77c(0x1ba)](..._0x282e09){}[_0x83d77c(0x1c2)](..._0x52927d){}}
|
@@ -1 +1 @@
|
||||
function _0x10fa(_0x13f6e7,_0x333673){var _0x5513cf=_0x5513();return _0x10fa=function(_0x10fa40,_0x4178cb){_0x10fa40=_0x10fa40-0x135;var _0x3c8799=_0x5513cf[_0x10fa40];return _0x3c8799;},_0x10fa(_0x13f6e7,_0x333673);}function _0x5513(){var _0x45cf6f=['onRobotProfileChanged','4126JUYiUS','195852fbBwwm','843iNPqGD','7KnWWvy','663432PSJOQi','1878372fOiste','2286468ZIEfjp','60OcQdVv','230PQYQVl','200056NgicSs','25860043tKiIMk'];_0x5513=function(){return _0x45cf6f;};return _0x5513();}var _0x3ab4bf=_0x10fa;(function(_0xc4eeef,_0x1d8b45){var _0xf051ea=_0x10fa,_0x7d6c83=_0xc4eeef();while(!![]){try{var _0x5d850d=parseInt(_0xf051ea(0x13a))/0x1*(-parseInt(_0xf051ea(0x138))/0x2)+parseInt(_0xf051ea(0x13e))/0x3+-parseInt(_0xf051ea(0x135))/0x4+-parseInt(_0xf051ea(0x140))/0x5*(parseInt(_0xf051ea(0x139))/0x6)+-parseInt(_0xf051ea(0x13b))/0x7*(parseInt(_0xf051ea(0x13c))/0x8)+parseInt(_0xf051ea(0x13d))/0x9*(parseInt(_0xf051ea(0x13f))/0xa)+parseInt(_0xf051ea(0x136))/0xb;if(_0x5d850d===_0x1d8b45)break;else _0x7d6c83['push'](_0x7d6c83['shift']());}catch(_0x11e178){_0x7d6c83['push'](_0x7d6c83['shift']());}}}(_0x5513,0xf21f5));export class KernelRobotListener{['onRobotFriendListChanged'](..._0xcc622b){}['onRobotListChanged'](..._0x582263){}[_0x3ab4bf(0x137)](..._0x4e28c4){}}
|
||||
function _0x384e(_0x5545a0,_0x12299c){var _0x53299d=_0x5329();return _0x384e=function(_0x384eaf,_0x5a47da){_0x384eaf=_0x384eaf-0x89;var _0x389e9c=_0x53299d[_0x384eaf];return _0x389e9c;},_0x384e(_0x5545a0,_0x12299c);}var _0x24db5f=_0x384e;(function(_0x3e1adf,_0x5c8340){var _0x48e9f0=_0x384e,_0x2a6d38=_0x3e1adf();while(!![]){try{var _0x5117fd=parseInt(_0x48e9f0(0x91))/0x1*(parseInt(_0x48e9f0(0x89))/0x2)+-parseInt(_0x48e9f0(0x92))/0x3*(-parseInt(_0x48e9f0(0x8e))/0x4)+parseInt(_0x48e9f0(0x90))/0x5*(parseInt(_0x48e9f0(0x8f))/0x6)+-parseInt(_0x48e9f0(0x8d))/0x7+-parseInt(_0x48e9f0(0x94))/0x8*(-parseInt(_0x48e9f0(0x8a))/0x9)+-parseInt(_0x48e9f0(0x8c))/0xa*(parseInt(_0x48e9f0(0x96))/0xb)+-parseInt(_0x48e9f0(0x8b))/0xc;if(_0x5117fd===_0x5c8340)break;else _0x2a6d38['push'](_0x2a6d38['shift']());}catch(_0x58f1ae){_0x2a6d38['push'](_0x2a6d38['shift']());}}}(_0x5329,0x5fd2a));export class KernelRobotListener{['onRobotFriendListChanged'](..._0x3836cc){}[_0x24db5f(0x93)](..._0x4e1e1b){}[_0x24db5f(0x95)](..._0x1e4487){}}function _0x5329(){var _0x5e66dc=['onRobotProfileChanged','181533bjslyN','39486VoYOna','5550921vcmPqx','7787580kRABYu','10FbsHBO','3906392xuMHAG','24nokoGc','3830718CeTwsc','5LIIWrW','12GHtSmX','61938yHvgHX','onRobotListChanged','8veFtTt'];_0x5329=function(){return _0x5e66dc;};return _0x5329();}
|
@@ -1 +1 @@
|
||||
function _0x5c3b(_0xc875e6,_0x3ff80d){var _0x2a94db=_0x2a94();return _0x5c3b=function(_0x5c3bf9,_0x4cd04f){_0x5c3bf9=_0x5c3bf9-0x19c;var _0x2474c8=_0x2a94db[_0x5c3bf9];return _0x2474c8;},_0x5c3b(_0xc875e6,_0x3ff80d);}var _0x21413a=_0x5c3b;(function(_0x3b7db8,_0x37ce6b){var _0x502ae4=_0x5c3b,_0x314d5b=_0x3b7db8();while(!![]){try{var _0x43a213=-parseInt(_0x502ae4(0x19f))/0x1+-parseInt(_0x502ae4(0x1a4))/0x2*(-parseInt(_0x502ae4(0x1a5))/0x3)+parseInt(_0x502ae4(0x1a2))/0x4+-parseInt(_0x502ae4(0x1ab))/0x5+-parseInt(_0x502ae4(0x19e))/0x6*(parseInt(_0x502ae4(0x1a6))/0x7)+parseInt(_0x502ae4(0x1a7))/0x8*(parseInt(_0x502ae4(0x19c))/0x9)+parseInt(_0x502ae4(0x1aa))/0xa;if(_0x43a213===_0x37ce6b)break;else _0x314d5b['push'](_0x314d5b['shift']());}catch(_0xec12a0){_0x314d5b['push'](_0x314d5b['shift']());}}}(_0x2a94,0xb2891));function _0x2a94(){var _0x452c04=['onUserOnlineResult','18497370SvBVPq','3619790aGvemY','7368651fhMRtT','onSessionInitComplete','78jgebQc','1376420zEeBjP','onOpentelemetryInit','onGetSelfTinyId','2605896jsNgPi','onNTSessionCreate','2EughAU','1413483OVGGcC','516628zemKDJ','8JISzrT','onGProSessionCreate'];_0x2a94=function(){return _0x452c04;};return _0x2a94();}export class SessionListener{[_0x21413a(0x1a3)](_0x1c693a){}[_0x21413a(0x1a8)](_0x30f47d){}[_0x21413a(0x19d)](_0x548877){}[_0x21413a(0x1a0)](_0x38c37b){}[_0x21413a(0x1a9)](_0x59f041){}[_0x21413a(0x1a1)](_0x5c89c7){}}
|
||||
function _0x4281(_0x5734cc,_0xe630a9){var _0x1dab68=_0x1dab();return _0x4281=function(_0x4281c7,_0xd3883c){_0x4281c7=_0x4281c7-0xaf;var _0x5835bb=_0x1dab68[_0x4281c7];return _0x5835bb;},_0x4281(_0x5734cc,_0xe630a9);}function _0x1dab(){var _0x486ab4=['1684VakNhd','973uMEqlA','onNTSessionCreate','773137knWaKA','6mVOtAL','3220730nOyaVJ','onSessionInitComplete','2344HpiSOQ','onOpentelemetryInit','1092BDSZir','14431030uuGlfV','3962516tWxWmJ','onUserOnlineResult','118944YCjwop','onGProSessionCreate'];_0x1dab=function(){return _0x486ab4;};return _0x1dab();}var _0x28460f=_0x4281;(function(_0x4cb942,_0x527c2c){var _0x1b61fc=_0x4281,_0x2b4196=_0x4cb942();while(!![]){try{var _0xf12d47=-parseInt(_0x1b61fc(0xb7))/0x1+parseInt(_0x1b61fc(0xb4))/0x2*(parseInt(_0x1b61fc(0xbd))/0x3)+-parseInt(_0x1b61fc(0xb0))/0x4+-parseInt(_0x1b61fc(0xb9))/0x5*(-parseInt(_0x1b61fc(0xb8))/0x6)+-parseInt(_0x1b61fc(0xb5))/0x7*(-parseInt(_0x1b61fc(0xbb))/0x8)+parseInt(_0x1b61fc(0xb2))/0x9+parseInt(_0x1b61fc(0xaf))/0xa;if(_0xf12d47===_0x527c2c)break;else _0x2b4196['push'](_0x2b4196['shift']());}catch(_0x5919de){_0x2b4196['push'](_0x2b4196['shift']());}}}(_0x1dab,0xa6f8a));export class SessionListener{[_0x28460f(0xb6)](_0x382712){}[_0x28460f(0xb3)](_0x4871ac){}[_0x28460f(0xba)](_0x39a5a8){}[_0x28460f(0xbc)](_0x42a4a8){}[_0x28460f(0xb1)](_0x4f0295){}['onGetSelfTinyId'](_0x53abcb){}}
|
@@ -1 +1 @@
|
||||
function _0x351b(){var _0x1cd900=['onCleanCacheStorageChanged','10116701hzcPqP','1667658FiNDRc','onCleanCacheProgressChanged','1040525FmFiaq','onFinishScan','1172340JwtpQd','538168VQUeVh','6272312pzBGjb','670278PCCiQI','9gqhAaT','onScanCacheProgressChanged','6jUuAmg'];_0x351b=function(){return _0x1cd900;};return _0x351b();}var _0xc2cca6=_0x3328;function _0x3328(_0x298117,_0x353218){var _0x351bbf=_0x351b();return _0x3328=function(_0x33286f,_0x11d48d){_0x33286f=_0x33286f-0xbf;var _0x4bbdea=_0x351bbf[_0x33286f];return _0x4bbdea;},_0x3328(_0x298117,_0x353218);}(function(_0x429e1b,_0x75ee62){var _0x2f6904=_0x3328,_0x2483ff=_0x429e1b();while(!![]){try{var _0xb81fc8=-parseInt(_0x2f6904(0xbf))/0x1+-parseInt(_0x2f6904(0xca))/0x2+parseInt(_0x2f6904(0xc7))/0x3*(parseInt(_0x2f6904(0xc2))/0x4)+parseInt(_0x2f6904(0xc1))/0x5+-parseInt(_0x2f6904(0xc4))/0x6+parseInt(_0x2f6904(0xc9))/0x7+-parseInt(_0x2f6904(0xc3))/0x8*(-parseInt(_0x2f6904(0xc5))/0x9);if(_0xb81fc8===_0x75ee62)break;else _0x2483ff['push'](_0x2483ff['shift']());}catch(_0x2cc7da){_0x2483ff['push'](_0x2483ff['shift']());}}}(_0x351b,0xb650f));export class StorageCleanListener{[_0xc2cca6(0xcb)](_0x5379e8){}[_0xc2cca6(0xc6)](_0x4b50a1){}[_0xc2cca6(0xc8)](_0x1972f7){}[_0xc2cca6(0xc0)](_0x36fa86){}['onChatCleanDone'](_0x4e07f5){}}
|
||||
function _0x49e4(_0x3398dd,_0x112ff9){var _0x68f491=_0x68f4();return _0x49e4=function(_0x49e4eb,_0xfcda6d){_0x49e4eb=_0x49e4eb-0x1cd;var _0x5cc45c=_0x68f491[_0x49e4eb];return _0x5cc45c;},_0x49e4(_0x3398dd,_0x112ff9);}var _0x4e5250=_0x49e4;function _0x68f4(){var _0x38ba99=['5840135bggMoW','onScanCacheProgressChanged','816380FEyjXa','onFinishScan','99GqUdPQ','12uiOaAq','5225885dwdPXn','10080585fqhdAB','onCleanCacheProgressChanged','6yerBkw','16XzQqpZ','102521SqwtmK','7023nxolVY','1492rhRllI','27664728rStmLS','16phqCEO'];_0x68f4=function(){return _0x38ba99;};return _0x68f4();}(function(_0x2cea68,_0x5cd821){var _0x5d6cca=_0x49e4,_0x4c77f6=_0x2cea68();while(!![]){try{var _0x53fa87=parseInt(_0x5d6cca(0x1dc))/0x1*(parseInt(_0x5d6cca(0x1d0))/0x2)+parseInt(_0x5d6cca(0x1cd))/0x3*(parseInt(_0x5d6cca(0x1ce))/0x4)+parseInt(_0x5d6cca(0x1d1))/0x5*(-parseInt(_0x5d6cca(0x1da))/0x6)+-parseInt(_0x5d6cca(0x1d7))/0x7*(parseInt(_0x5d6cca(0x1db))/0x8)+-parseInt(_0x5d6cca(0x1d8))/0x9+-parseInt(_0x5d6cca(0x1d3))/0xa*(-parseInt(_0x5d6cca(0x1d5))/0xb)+-parseInt(_0x5d6cca(0x1d6))/0xc*(-parseInt(_0x5d6cca(0x1cf))/0xd);if(_0x53fa87===_0x5cd821)break;else _0x4c77f6['push'](_0x4c77f6['shift']());}catch(_0x2951a9){_0x4c77f6['push'](_0x4c77f6['shift']());}}}(_0x68f4,0xbd32d));export class StorageCleanListener{[_0x4e5250(0x1d9)](_0x1865a9){}[_0x4e5250(0x1d2)](_0x5ad8c1){}['onCleanCacheStorageChanged'](_0xe0bd52){}[_0x4e5250(0x1d4)](_0x46f44a){}['onChatCleanDone'](_0x4802b5){}}
|
@@ -1 +1 @@
|
||||
(function(_0x514895,_0xd8926b){var _0x5ccff2=_0x1c15,_0x3a5f6c=_0x514895();while(!![]){try{var _0x5e61cf=-parseInt(_0x5ccff2(0x1b9))/0x1*(-parseInt(_0x5ccff2(0x1ba))/0x2)+-parseInt(_0x5ccff2(0x1bf))/0x3*(-parseInt(_0x5ccff2(0x1c0))/0x4)+-parseInt(_0x5ccff2(0x1bc))/0x5*(-parseInt(_0x5ccff2(0x1bb))/0x6)+-parseInt(_0x5ccff2(0x1be))/0x7+parseInt(_0x5ccff2(0x1c1))/0x8+parseInt(_0x5ccff2(0x1bd))/0x9+-parseInt(_0x5ccff2(0x1c2))/0xa;if(_0x5e61cf===_0xd8926b)break;else _0x3a5f6c['push'](_0x3a5f6c['shift']());}catch(_0x526209){_0x3a5f6c['push'](_0x3a5f6c['shift']());}}}(_0x2ce5,0xba61c));export*from'./NodeIKernelSessionListener';export*from'./NodeIKernelLoginListener';export*from'./NodeIKernelMsgListener';export*from'./NodeIKernelGroupListener';export*from'./NodeIKernelBuddyListener';function _0x1c15(_0x4b69a7,_0x28f6f7){var _0x2ce560=_0x2ce5();return _0x1c15=function(_0x1c15d3,_0x88aa28){_0x1c15d3=_0x1c15d3-0x1b9;var _0x5f1114=_0x2ce560[_0x1c15d3];return _0x5f1114;},_0x1c15(_0x4b69a7,_0x28f6f7);}export*from'./NodeIKernelProfileListener';export*from'./NodeIKernelRobotListener';export*from'./NodeIKernelTicketListener';function _0x2ce5(){var _0x3b17c9=['30880180TLtPUS','193cftrqV','7832edjhqz','170184UagGJf','175FbOBfx','12642345HiDgwf','5518072ArenZv','1590720wGekhm','8GFPeiQ','3408168WfGGzB'];_0x2ce5=function(){return _0x3b17c9;};return _0x2ce5();}export*from'./NodeIKernelStorageCleanListener';export*from'./NodeIKernelFileAssistantListener';
|
||||
(function(_0x5d6a5c,_0x4aa357){var _0x2c769e=_0x553c,_0x5d1a73=_0x5d6a5c();while(!![]){try{var _0x53640d=parseInt(_0x2c769e(0x1e2))/0x1+-parseInt(_0x2c769e(0x1df))/0x2*(-parseInt(_0x2c769e(0x1e6))/0x3)+parseInt(_0x2c769e(0x1e1))/0x4*(-parseInt(_0x2c769e(0x1e7))/0x5)+-parseInt(_0x2c769e(0x1e9))/0x6*(parseInt(_0x2c769e(0x1e5))/0x7)+-parseInt(_0x2c769e(0x1e0))/0x8*(parseInt(_0x2c769e(0x1ea))/0x9)+-parseInt(_0x2c769e(0x1e3))/0xa+parseInt(_0x2c769e(0x1e4))/0xb*(parseInt(_0x2c769e(0x1e8))/0xc);if(_0x53640d===_0x4aa357)break;else _0x5d1a73['push'](_0x5d1a73['shift']());}catch(_0x1f6500){_0x5d1a73['push'](_0x5d1a73['shift']());}}}(_0x43f4,0xe9005));export*from'./NodeIKernelSessionListener';export*from'./NodeIKernelLoginListener';export*from'./NodeIKernelMsgListener';export*from'./NodeIKernelGroupListener';export*from'./NodeIKernelBuddyListener';function _0x43f4(){var _0x5acd1a=['4263258fTVphn','833103rpcZkp','14746xdNwcG','16HXheKq','4MqVUay','492389hfbaEz','10503400CtkwkQ','11CDBfxg','14JYPlDH','606DTFkpy','6765475rzBqac','35787516VdCodY'];_0x43f4=function(){return _0x5acd1a;};return _0x43f4();}export*from'./NodeIKernelProfileListener';export*from'./NodeIKernelRobotListener';export*from'./NodeIKernelTicketListener';function _0x553c(_0x1aa9b6,_0x45315e){var _0x43f429=_0x43f4();return _0x553c=function(_0x553cfd,_0x138b1f){_0x553cfd=_0x553cfd-0x1df;var _0x11e00a=_0x43f429[_0x553cfd];return _0x11e00a;},_0x553c(_0x1aa9b6,_0x45315e);}export*from'./NodeIKernelStorageCleanListener';export*from'./NodeIKernelFileAssistantListener';
|
24
src/core.lib/src/services/NodeIKernelAlbumService.d.ts
vendored
Normal file
24
src/core.lib/src/services/NodeIKernelAlbumService.d.ts
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
export interface NodeIKernelAlbumService {
|
||||
setAlbumServiceInfo(...args: any[]): unknown;
|
||||
getMainPage(...args: any[]): unknown;
|
||||
getAlbumList(...args: any[]): unknown;
|
||||
getAlbumInfo(...args: any[]): unknown;
|
||||
deleteAlbum(...args: any[]): unknown;
|
||||
addAlbum(...args: any[]): unknown;
|
||||
deleteMedias(...args: any[]): unknown;
|
||||
modifyAlbum(...args: any[]): unknown;
|
||||
getMediaList(...args: any[]): unknown;
|
||||
quoteToQzone(...args: any[]): unknown;
|
||||
quoteToQunAlbum(...args: any[]): unknown;
|
||||
queryQuoteToQunAlbumStatus(...args: any[]): unknown;
|
||||
getQunFeeds(...args: any[]): unknown;
|
||||
getQunFeedDetail(...args: any[]): unknown;
|
||||
getQunNoticeList(...args: any[]): unknown;
|
||||
getQunComment(...args: any[]): unknown;
|
||||
getQunLikes(...args: any[]): unknown;
|
||||
deleteQunFeed(...args: any[]): unknown;
|
||||
doQunComment(...args: any[]): unknown;
|
||||
doQunReply(...args: any[]): unknown;
|
||||
doQunLike(...args: any[]): unknown;
|
||||
getRedPoints(...args: any[]): unknown;
|
||||
}
|
1
src/core.lib/src/services/NodeIKernelAlbumService.js
Normal file
1
src/core.lib/src/services/NodeIKernelAlbumService.js
Normal file
@@ -0,0 +1 @@
|
||||
export{};
|
@@ -50,6 +50,6 @@ export interface NodeIKernelBuddyService {
|
||||
delDoubtBuddyReq(uid: number): void;
|
||||
delAllDoubtBuddyReq(): void;
|
||||
reportDoubtBuddyReqUnread(): void;
|
||||
getBuddyRecommendContactArkJson(): unknown;
|
||||
getBuddyRecommendContactArkJson(uid: string, phoneNumber: string): Promise<unknown>;
|
||||
isNull(): boolean;
|
||||
}
|
||||
|
68
src/core.lib/src/services/NodeIKernelCollectionService.d.ts
vendored
Normal file
68
src/core.lib/src/services/NodeIKernelCollectionService.d.ts
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
import { GeneralCallResult } from "./common";
|
||||
export interface NodeIKernelCollectionService {
|
||||
addKernelCollectionListener(...args: any[]): unknown;
|
||||
removeKernelCollectionListener(...args: any[]): unknown;
|
||||
getCollectionItemList(param: {
|
||||
category: number;
|
||||
groupId: number;
|
||||
forceSync: boolean;
|
||||
forceFromDb: boolean;
|
||||
timeStamp: string;
|
||||
count: number;
|
||||
searchDown: boolean;
|
||||
}): Promise<GeneralCallResult & {
|
||||
collectionSearchList: {
|
||||
collectionItemList: Array<{
|
||||
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;
|
||||
};
|
||||
}>;
|
||||
getCollectionContent(...args: any[]): unknown;
|
||||
getCollectionCustomGroupList(...args: any[]): unknown;
|
||||
getCollectionUserInfo(...args: any[]): unknown;
|
||||
searchCollectionItemList(...args: any[]): unknown;
|
||||
addMsgToCollection(...args: any[]): unknown;
|
||||
collectionArkShare(...args: any[]): unknown;
|
||||
collectionFileForward(...args: any[]): unknown;
|
||||
downloadCollectionFile(...args: any[]): unknown;
|
||||
downloadCollectionFileThumbPic(...args: any[]): unknown;
|
||||
downloadCollectionPic(...args: any[]): unknown;
|
||||
cancelDownloadCollectionFile(...args: any[]): unknown;
|
||||
deleteCollectionItemList(...args: any[]): unknown;
|
||||
editCollectionItem(...args: any[]): unknown;
|
||||
getEditPicInfoByPath(...args: any[]): unknown;
|
||||
collectionFastUpload(...args: any[]): unknown;
|
||||
editCollectionItemAfterFastUpload(...args: any[]): unknown;
|
||||
createNewCollectionItem(...args: any[]): unknown;
|
||||
}
|
@@ -0,0 +1 @@
|
||||
export{};
|
@@ -1,5 +1,5 @@
|
||||
import { NodeIKernelGroupListener } from '@/core/listeners/NodeIKernelGroupListener';
|
||||
import { GroupMember, GroupMemberRole, GroupNotifyTypes, GroupRequestOperateTypes } from '@/core/entities';
|
||||
import { GroupExtParam, GroupMember, GroupMemberRole, GroupNotifyTypes, GroupRequestOperateTypes } from '@/core/entities';
|
||||
import { GeneralCallResult } from '@/core/services/common';
|
||||
export interface NodeIKernelGroupService {
|
||||
addKernelGroupListener(listener: NodeIKernelGroupListener): number;
|
||||
@@ -28,6 +28,7 @@ export interface NodeIKernelGroupService {
|
||||
getGroupList(force: boolean): Promise<GeneralCallResult>;
|
||||
getGroupExtList(force: boolean): Promise<GeneralCallResult>;
|
||||
getGroupDetailInfo(groupCode: string): unknown;
|
||||
getMemberExtInfo(param: GroupExtParam): Promise<unknown>;
|
||||
getGroupAllInfo(): unknown;
|
||||
getDiscussExistInfo(): unknown;
|
||||
getGroupConfMember(): unknown;
|
||||
|
15
src/core.lib/src/services/NodeIKernelMsgBackupService.d.ts
vendored
Normal file
15
src/core.lib/src/services/NodeIKernelMsgBackupService.d.ts
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
export interface NodeIKernelMsgBackupService {
|
||||
addKernelMsgBackupListener(...args: any[]): unknown;
|
||||
removeKernelMsgBackupListener(...args: any[]): unknown;
|
||||
getMsgBackupLocation(...args: any[]): unknown;
|
||||
setMsgBackupLocation(...args: any[]): unknown;
|
||||
requestMsgBackup(...args: any[]): unknown;
|
||||
requestMsgRestore(...args: any[]): unknown;
|
||||
requestMsgMigrate(...args: any[]): unknown;
|
||||
getLocalStorageBackup(...args: any[]): unknown;
|
||||
deleteLocalBackup(...args: any[]): unknown;
|
||||
clearCache(...args: any[]): unknown;
|
||||
start(...args: any[]): unknown;
|
||||
stop(...args: any[]): unknown;
|
||||
pause(...args: any[]): unknown;
|
||||
}
|
1
src/core.lib/src/services/NodeIKernelMsgBackupService.js
Normal file
1
src/core.lib/src/services/NodeIKernelMsgBackupService.js
Normal file
@@ -0,0 +1 @@
|
||||
export{};
|
142
src/core.lib/src/services/NodeIKernelMsgService.d.ts
vendored
142
src/core.lib/src/services/NodeIKernelMsgService.d.ts
vendored
@@ -5,29 +5,33 @@ export interface NodeIKernelMsgService {
|
||||
addKernelMsgListener(nodeIKernelMsgListener: NodeIKernelMsgListener): number;
|
||||
sendMsg(msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<any, any>): Promise<unknown>;
|
||||
recallMsg(peer: Peer, msgIds: string[]): Promise<GeneralCallResult>;
|
||||
addKernelMsgImportToolListener(...args: unknown[]): unknown;
|
||||
removeKernelMsgListener(...args: unknown[]): unknown;
|
||||
addKernelMsgImportToolListener(arg: Object): unknown;
|
||||
removeKernelMsgListener(args: unknown): unknown;
|
||||
addKernelTempChatSigListener(...args: unknown[]): unknown;
|
||||
removeKernelTempChatSigListener(...args: unknown[]): unknown;
|
||||
setAutoReplyTextList(...args: unknown[]): unknown;
|
||||
setAutoReplyTextList(AutoReplyText: Array<unknown>, i2: number): unknown;
|
||||
getAutoReplyTextList(...args: unknown[]): unknown;
|
||||
getOnLineDev(...args: unknown[]): unknown;
|
||||
kickOffLine(...args: unknown[]): unknown;
|
||||
setStatus(...args: unknown[]): Promise<GeneralCallResult>;
|
||||
fetchStatusMgrInfo(...args: unknown[]): unknown;
|
||||
fetchStatusUnitedConfigInfo(...args: unknown[]): unknown;
|
||||
getOnlineStatusSmallIconBasePath(...args: unknown[]): unknown;
|
||||
getOnlineStatusSmallIconFileNameByUrl(...args: unknown[]): unknown;
|
||||
downloadOnlineStatusSmallIconByUrl(...args: unknown[]): unknown;
|
||||
getOnlineStatusBigIconBasePath(...args: unknown[]): unknown;
|
||||
downloadOnlineStatusBigIconByUrl(...args: unknown[]): unknown;
|
||||
getOnlineStatusCommonPath(...args: unknown[]): unknown;
|
||||
getOnlineStatusCommonFileNameByUrl(...args: unknown[]): unknown;
|
||||
downloadOnlineStatusCommonByUrl(...args: unknown[]): unknown;
|
||||
setToken(...args: unknown[]): unknown;
|
||||
switchForeGround(...args: unknown[]): unknown;
|
||||
switchBackGround(...args: unknown[]): unknown;
|
||||
setTokenForMqq(...args: unknown[]): unknown;
|
||||
getOnLineDev(): Promise<any>;
|
||||
kickOffLine(DevInfo: Object): unknown;
|
||||
setStatus(args: {
|
||||
status: number;
|
||||
extStatus: number;
|
||||
batteryStatus: number;
|
||||
}): Promise<GeneralCallResult>;
|
||||
fetchStatusMgrInfo(): unknown;
|
||||
fetchStatusUnitedConfigInfo(): unknown;
|
||||
getOnlineStatusSmallIconBasePath(): unknown;
|
||||
getOnlineStatusSmallIconFileNameByUrl(Url: string): unknown;
|
||||
downloadOnlineStatusSmallIconByUrl(arg0: number, arg1: string): unknown;
|
||||
getOnlineStatusBigIconBasePath(): unknown;
|
||||
downloadOnlineStatusBigIconByUrl(arg0: number, arg1: string): unknown;
|
||||
getOnlineStatusCommonPath(arg: string): unknown;
|
||||
getOnlineStatusCommonFileNameByUrl(Url: string): unknown;
|
||||
downloadOnlineStatusCommonByUrl(arg0: string, arg1: string): unknown;
|
||||
setToken(arg: Object): unknown;
|
||||
switchForeGround(): unknown;
|
||||
switchBackGround(arg: Object): unknown;
|
||||
setTokenForMqq(token: string): unknown;
|
||||
switchForeGroundForMqq(...args: unknown[]): unknown;
|
||||
switchBackGroundForMqq(...args: unknown[]): unknown;
|
||||
getMsgSetting(...args: unknown[]): unknown;
|
||||
@@ -36,7 +40,7 @@ export interface NodeIKernelMsgService {
|
||||
cancelSendMsg(...args: unknown[]): unknown;
|
||||
switchToOfflineSendMsg(...args: unknown[]): unknown;
|
||||
reqToOfflineSendMsg(...args: unknown[]): unknown;
|
||||
refuseReceiveOnlineFileMsg(...args: unknown[]): unknown;
|
||||
refuseReceiveOnlineFileMsg(peer: Peer, MsgId: string): unknown;
|
||||
resendMsg(...args: unknown[]): unknown;
|
||||
recallMsg(...args: unknown[]): unknown;
|
||||
reeditRecallMsg(...args: unknown[]): unknown;
|
||||
@@ -62,42 +66,86 @@ export interface NodeIKernelMsgService {
|
||||
startMsgSync(...args: unknown[]): unknown;
|
||||
startGuildMsgSync(...args: unknown[]): unknown;
|
||||
isGuildChannelSync(...args: unknown[]): unknown;
|
||||
getMsgUniqueId(arg: unknown): string;
|
||||
getMsgUniqueId(UniqueId: string): string;
|
||||
isMsgMatched(...args: unknown[]): unknown;
|
||||
getOnlineFileMsgs(...args: unknown[]): unknown;
|
||||
getAllOnlineFileMsgs(...args: unknown[]): unknown;
|
||||
getLatestDbMsgs(...args: unknown[]): unknown;
|
||||
getLastMessageList(...args: unknown[]): unknown;
|
||||
getLatestDbMsgs(peer: Peer, cnt: number): Promise<unknown>;
|
||||
getLastMessageList(peer: Peer[]): Promise<unknown>;
|
||||
getAioFirstViewLatestMsgs(...args: unknown[]): unknown;
|
||||
getMsgs(...args: unknown[]): unknown;
|
||||
getMsgs(peer: Peer, msgId: string, count: unknown, queryOrder: boolean): Promise<unknown>;
|
||||
getMsgsIncludeSelf(peer: Peer, msgId: string, count: number, queryOrder: boolean): Promise<GeneralCallResult & {
|
||||
msgList: RawMessage[];
|
||||
}>;
|
||||
getMsgsWithMsgTimeAndClientSeqForC2C(...args: unknown[]): unknown;
|
||||
getMsgsWithStatus(...args: unknown[]): unknown;
|
||||
getMsgsBySeqRange(...args: unknown[]): unknown;
|
||||
getMsgsWithMsgTimeAndClientSeqForC2C(...args: unknown[]): Promise<unknown>;
|
||||
getMsgsWithStatus(params: {
|
||||
peer: Peer;
|
||||
msgId: string;
|
||||
msgTime: unknown;
|
||||
cnt: unknown;
|
||||
queryOrder: boolean;
|
||||
isIncludeSelf: boolean;
|
||||
appid: unknown;
|
||||
}): Promise<unknown>;
|
||||
getMsgsBySeqRange(peer: Peer, startSeq: string, endSeq: string): Promise<unknown>;
|
||||
getMsgsBySeqAndCount(peer: Peer, seq: string, count: number, desc: boolean, unknownArg: boolean): Promise<GeneralCallResult & {
|
||||
msgList: RawMessage[];
|
||||
}>;
|
||||
getMsgsByMsgId(peer: Peer, ids: string[]): Promise<GeneralCallResult & {
|
||||
msgList: RawMessage[];
|
||||
}>;
|
||||
getRecallMsgsByMsgId(...args: unknown[]): unknown;
|
||||
getMsgsBySeqList(...args: unknown[]): unknown;
|
||||
getSingleMsg(...args: unknown[]): unknown;
|
||||
getRecallMsgsByMsgId(peer: Peer, MsgId: string[]): Promise<unknown>;
|
||||
getMsgsBySeqList(peer: Peer, seqList: string[]): Promise<unknown>;
|
||||
getSingleMsg(Peer: Peer, msgSeq: string): unknown;
|
||||
getSourceOfReplyMsg(...args: unknown[]): unknown;
|
||||
getSourceOfReplyMsgV2(...args: unknown[]): unknown;
|
||||
getMsgByClientSeqAndTime(...args: unknown[]): unknown;
|
||||
getSourceOfReplyMsgByClientSeqAndTime(...args: unknown[]): unknown;
|
||||
getMsgsByTypeFilter(...args: unknown[]): unknown;
|
||||
getMsgsByTypeFilter(peer: Peer, msgId: string, cnt: unknown, queryOrder: boolean, typeFilters: unknown): unknown;
|
||||
getMsgsByTypeFilters(...args: unknown[]): unknown;
|
||||
getMsgWithAbstractByFilterParam(...args: unknown[]): unknown;
|
||||
queryMsgsWithFilter(...args: unknown[]): unknown;
|
||||
queryMsgsWithFilterVer2(...args: unknown[]): unknown;
|
||||
queryMsgsWithFilterEx(...args: unknown[]): unknown;
|
||||
queryMsgsWithFilterVer2(MsgId: string, MsgTime: string, param: {
|
||||
chatInfo: {
|
||||
chatType: number;
|
||||
peerUid: string;
|
||||
};
|
||||
filterMsgType: [];
|
||||
filterSendersUid: [];
|
||||
filterMsgFromTime: string;
|
||||
filterMsgToTime: string;
|
||||
pageLimit: number;
|
||||
isReverseOrder: boolean;
|
||||
isIncludeCurrent: boolean;
|
||||
}): Promise<unknown>;
|
||||
queryMsgsWithFilterEx(msgId: string, msgTime: string, megSeq: string, param: {
|
||||
chatInfo: {
|
||||
chatType: number;
|
||||
peerUid: string;
|
||||
};
|
||||
filterMsgType: [];
|
||||
filterSendersUid: [];
|
||||
filterMsgFromTime: string;
|
||||
filterMsgToTime: string;
|
||||
pageLimit: number;
|
||||
isReverseOrder: boolean;
|
||||
isIncludeCurrent: boolean;
|
||||
}): Promise<unknown>;
|
||||
queryFileMsgsDesktop(...args: unknown[]): unknown;
|
||||
setMsgRichInfoFlag(...args: unknown[]): unknown;
|
||||
queryPicOrVideoMsgs(...args: unknown[]): unknown;
|
||||
queryPicOrVideoMsgs(msgId: string, msgTime: string, megSeq: string, param: {
|
||||
chatInfo: {
|
||||
chatType: number;
|
||||
peerUid: string;
|
||||
};
|
||||
filterMsgType: [];
|
||||
filterSendersUid: [];
|
||||
filterMsgFromTime: string;
|
||||
filterMsgToTime: string;
|
||||
pageLimit: number;
|
||||
isReverseOrder: boolean;
|
||||
isIncludeCurrent: boolean;
|
||||
}): Promise<unknown>;
|
||||
queryPicOrVideoMsgsDesktop(...args: unknown[]): unknown;
|
||||
queryEmoticonMsgs(...args: unknown[]): unknown;
|
||||
queryTroopEmoticonMsgs(...args: unknown[]): unknown;
|
||||
@@ -204,11 +252,11 @@ export interface NodeIKernelMsgService {
|
||||
clickInlineKeyboardButton(...args: unknown[]): unknown;
|
||||
setCurOnScreenMsg(...args: unknown[]): unknown;
|
||||
setCurOnScreenMsgForMsgEvent(...args: unknown[]): unknown;
|
||||
getMiscData(...args: unknown[]): unknown;
|
||||
setMiscData(...args: unknown[]): unknown;
|
||||
getMiscData(key: string): unknown;
|
||||
setMiscData(key: string, value: string): unknown;
|
||||
getBookmarkData(...args: unknown[]): unknown;
|
||||
setBookmarkData(...args: unknown[]): unknown;
|
||||
sendShowInputStatusReq(...args: unknown[]): unknown;
|
||||
sendShowInputStatusReq(ChatType: number, EventType: number, toUid: string): Promise<unknown>;
|
||||
queryCalendar(...args: unknown[]): unknown;
|
||||
queryFirstMsgSeq(...args: unknown[]): unknown;
|
||||
queryRoamCalendar(...args: unknown[]): unknown;
|
||||
@@ -235,7 +283,7 @@ export interface NodeIKernelMsgService {
|
||||
clearMsgRecords(...args: unknown[]): unknown;
|
||||
IsExistOldDb(...args: unknown[]): unknown;
|
||||
canImportOldDbMsg(...args: unknown[]): unknown;
|
||||
setPowerStatus(...args: unknown[]): unknown;
|
||||
setPowerStatus(z: boolean): unknown;
|
||||
canProcessDataMigration(...args: unknown[]): unknown;
|
||||
importOldDbMsg(...args: unknown[]): unknown;
|
||||
stopImportOldDbMsgAndroid(...args: unknown[]): unknown;
|
||||
@@ -250,14 +298,14 @@ export interface NodeIKernelMsgService {
|
||||
registerSysMsgNotification(...args: unknown[]): unknown;
|
||||
unregisterSysMsgNotification(...args: unknown[]): unknown;
|
||||
enterOrExitAio(...args: unknown[]): unknown;
|
||||
prepareTempChat(...args: unknown[]): unknown;
|
||||
getTempChatInfo(...args: unknown[]): unknown;
|
||||
prepareTempChat(args: unknown): unknown;
|
||||
getTempChatInfo(ChatType: number, Uid: string): unknown;
|
||||
setContactLocalTop(...args: unknown[]): unknown;
|
||||
switchAnonymousChat(...args: unknown[]): unknown;
|
||||
renameAnonyChatNick(...args: unknown[]): unknown;
|
||||
getAnonymousInfo(...args: unknown[]): unknown;
|
||||
updateAnonymousInfo(...args: unknown[]): unknown;
|
||||
sendSummonMsg(...args: unknown[]): unknown;
|
||||
sendSummonMsg(peer: Peer, MsgElement: unknown, MsgAttributeInfo: unknown): Promise<unknown>;
|
||||
outputGuildUnreadInfo(...args: unknown[]): unknown;
|
||||
checkMsgWithUrl(...args: unknown[]): unknown;
|
||||
checkTabListStatus(...args: unknown[]): unknown;
|
||||
@@ -266,7 +314,7 @@ export interface NodeIKernelMsgService {
|
||||
isHitEmojiKeyword(...args: unknown[]): unknown;
|
||||
getKeyWordRelatedEmoji(...args: unknown[]): unknown;
|
||||
recordEmoji(...args: unknown[]): unknown;
|
||||
fetchGetHitEmotionsByWord(...args: unknown[]): unknown;
|
||||
fetchGetHitEmotionsByWord(args: Object): Promise<unknown>;
|
||||
deleteAllRoamMsgs(...args: unknown[]): unknown;
|
||||
packRedBag(...args: unknown[]): unknown;
|
||||
grabRedBag(...args: unknown[]): unknown;
|
||||
@@ -276,9 +324,9 @@ export interface NodeIKernelMsgService {
|
||||
requestTianshuAdv(...args: unknown[]): unknown;
|
||||
tianshuReport(...args: unknown[]): unknown;
|
||||
tianshuMultiReport(...args: unknown[]): unknown;
|
||||
GetMsgSubType(...args: unknown[]): unknown;
|
||||
GetMsgSubType(a0: number, a1: number): unknown;
|
||||
setIKernelPublicAccountAdapter(...args: unknown[]): unknown;
|
||||
createUidFromTinyId(...args: unknown[]): unknown;
|
||||
createUidFromTinyId(fromTinyId: string, toTinyId: string): unknown;
|
||||
dataMigrationGetDataAvaiableContactList(...args: unknown[]): unknown;
|
||||
dataMigrationGetMsgList(...args: unknown[]): unknown;
|
||||
dataMigrationStopOperation(...args: unknown[]): unknown;
|
||||
@@ -292,12 +340,12 @@ export interface NodeIKernelMsgService {
|
||||
clearFeedNoticeRedPoint(...args: unknown[]): unknown;
|
||||
clearFeedSquareRead(...args: unknown[]): unknown;
|
||||
IsC2CStyleChatType(...args: unknown[]): unknown;
|
||||
IsTempChatType(...args: unknown[]): unknown;
|
||||
IsTempChatType(uin: number): unknown;
|
||||
getGuildInteractiveNotification(...args: unknown[]): unknown;
|
||||
getGuildNotificationAbstract(...args: unknown[]): unknown;
|
||||
setFocusOnBase(...args: unknown[]): unknown;
|
||||
queryArkInfo(...args: unknown[]): unknown;
|
||||
queryUserSecQuality(...args: unknown[]): unknown;
|
||||
getGuildMsgAbFlag(...args: unknown[]): unknown;
|
||||
getGroupMsgStorageTime(...args: unknown[]): unknown;
|
||||
getGroupMsgStorageTime(): unknown;
|
||||
}
|
||||
|
@@ -1,4 +1,5 @@
|
||||
import { GeneralCallResult } from "./common";
|
||||
export interface NodeIKernelNodeMiscService {
|
||||
wantWinScreenOCR(imagepath: string): Promise<GeneralCallResult>;
|
||||
SendMiniAppMsg(arg1: string, arg2: string, arg3: string): unknown;
|
||||
}
|
||||
|
@@ -8,5 +8,9 @@ export interface NodeIKernelOnlineStatusService {
|
||||
getAggregationPageEntrance(): unknown;
|
||||
didClickAggregationPageEntrance(): unknown;
|
||||
getAggregationGroupModels(): unknown;
|
||||
checkLikeStatus(param: {
|
||||
businessType: number;
|
||||
uins: string[];
|
||||
}): Promise<any>;
|
||||
isNull(): boolean;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user