Compare commits

...

189 Commits

Author SHA1 Message Date
手瓜一十雪
f43c1eadd7 release: 1.5.9 2024-06-21 17:26:16 +08:00
手瓜一十雪
ae4b4e7ff9 release: v1.5.9 2024-06-21 17:25:05 +08:00
手瓜一十雪
68b9771fa9 Merge pull request #78 from NapNeko/dependabot/npm_and_yarn/types/uuid-10.0.0
build(deps-dev): bump @types/uuid from 9.0.8 to 10.0.0
2024-06-21 16:50:15 +08:00
手瓜一十雪
114c98f4cf style: lint 2024-06-21 16:49:31 +08:00
手瓜一十雪
685dc74742 build: 1.5.9 - test3 2024-06-21 16:45:36 +08:00
dependabot[bot]
56966961dc build(deps-dev): bump @types/uuid from 9.0.8 to 10.0.0
Bumps [@types/uuid](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/uuid) from 9.0.8 to 10.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/uuid)

---
updated-dependencies:
- dependency-name: "@types/uuid"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-21 08:35:16 +00:00
手瓜一十雪
75b8002616 build: 1.5.9 - refactor 2024-06-21 16:24:49 +08:00
手瓜一十雪
6cd2d14e85 build: 1.5.9 - test2 2024-06-21 16:23:53 +08:00
手瓜一十雪
d11ad0585b build: 1.5.9 - test 2024-06-21 15:57:56 +08:00
手瓜一十雪
ccbb641a8e refactor: sign尝试 2024-06-21 13:29:14 +08:00
手瓜一十雪
5695d10a86 refactor: cache 2024-06-21 12:07:40 +08:00
手瓜一十雪
185f167c5f build: 1.5.9 - refactor cache 2024-06-21 11:21:09 +08:00
手瓜一十雪
9cf38a439b refactor: cache 2024-06-21 11:19:36 +08:00
手瓜一十雪
de65cd810c docs: v1.5.9 todo 2024-06-20 21:25:51 +08:00
手瓜一十雪
ae0277f33c release: 1.5.8 2024-06-19 23:34:09 +08:00
手瓜一十雪
b863896249 refactor: log file limit 2024-06-19 23:26:05 +08:00
手瓜一十雪
5b42f8b743 refactor: qqmusic card & requests 2024-06-19 23:06:57 +08:00
手瓜一十雪
3883fab614 remove: debug 2024-06-19 21:37:13 +08:00
手瓜一十雪
61d6bcec4b refactor: qqmusic card & requests 2024-06-19 21:33:31 +08:00
手瓜一十雪
3b5902b033 refactor: requests 2024-06-19 16:45:20 +08:00
手瓜一十雪
3a88c21a3b refactor: 整理action & data 2024-06-19 13:35:42 +08:00
手瓜一十雪
91a5055dee refactor: qqmusic sign & http post 2024-06-19 13:20:52 +08:00
手瓜一十雪
7befd1469f Merge branch 'main' of https://github.com/NapNeko/NapCatQQ 2024-06-19 10:01:37 +08:00
手瓜一十雪
c72ebe495c refactor: remove debug 2024-06-19 10:01:24 +08:00
手瓜一十雪
19e06b97e6 docs: update 2024-06-18 23:57:47 +08:00
手瓜一十雪
7519825303 refactor: test 2024-06-18 23:23:19 +08:00
手瓜一十雪
d9315bf309 refactor: project 2024-06-18 22:49:06 +08:00
手瓜一十雪
8c36c809a0 docs: extend 2024-06-18 11:22:35 +08:00
手瓜一十雪
8138aa3cb2 docs: v1.5.8 2024-06-18 11:21:52 +08:00
手瓜一十雪
87aef3ca78 feat: Util HttpUploadFile 2024-06-18 11:17:09 +08:00
手瓜一十雪
a3f1d26d6b feat: refactor miniapp 2024-06-18 11:08:51 +08:00
手瓜一十雪
06cebc5670 build: try support ia32 2024-06-17 10:03:59 +08:00
手瓜一十雪
867fd62d77 fix: typo 2024-06-16 20:54:52 +08:00
手瓜一十雪
650cdf2916 feat: test 2024-06-16 19:24:42 +08:00
手瓜一十雪
ebf461f2fd feat: 加了一些暂时不能使用的代码 2024-06-16 16:35:09 +08:00
手瓜一十雪
27fa319b2a release: LinuxAppid 24568 2024-06-14 18:43:56 +08:00
手瓜一十雪
d95ac894f4 release: 1.5.6-复活下win 2024-06-14 17:00:35 +08:00
手瓜一十雪
ae84a8dd11 docs: v1.5.6 change 2024-06-14 16:53:26 +08:00
手瓜一十雪
2fc963f986 build: v1.5.6-紧急测试 2024-06-14 16:43:32 +08:00
手瓜一十雪
be1f938ebd fix 2024-06-14 16:42:39 +08:00
手瓜一十雪
cccf4d503d docs: v1.5.6 2024-06-14 15:50:22 +08:00
手瓜一十雪
9dad2a8ac6 remove: debug 2024-06-11 18:11:32 +08:00
手瓜一十雪
75af104f07 release: v1.5.5 2024-06-11 18:10:22 +08:00
手瓜一十雪
76ecba245b fix: error 2024-06-11 18:09:46 +08:00
手瓜一十雪
3697c2ced8 refactor: 移除无缝升级函数 2024-06-11 15:46:27 +08:00
手瓜一十雪
b9d1d84716 release: v1.5.4 2024-06-11 15:20:11 +08:00
手瓜一十雪
64b2d547ce refactor: friend 2024-06-11 12:34:04 +08:00
手瓜一十雪
d8d2ff7e4e chore:appid 2024-06-10 19:00:05 +08:00
手瓜一十雪
8aa5dc6482 Merge pull request #62 from NapNeko/dependabot/npm_and_yarn/uuid-10.0.0
build(deps): bump uuid from 9.0.1 to 10.0.0
2024-06-10 16:46:05 +08:00
dependabot[bot]
474ba20e61 build(deps): bump uuid from 9.0.1 to 10.0.0
Bumps [uuid](https://github.com/uuidjs/uuid) from 9.0.1 to 10.0.0.
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v9.0.1...v10.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-10 08:12:09 +00:00
手瓜一十雪
bdea2d02a9 release: v1.5.3 2024-06-09 20:09:14 +08:00
手瓜一十雪
c4307481f1 build: 1.5.3-beta4 2024-06-09 19:47:16 +08:00
手瓜一十雪
b8ac1b28bd build: v1.5.3-beta3 2024-06-09 19:41:27 +08:00
手瓜一十雪
24038cda95 refactor: video url 2024-06-09 19:40:34 +08:00
手瓜一十雪
86c82e9608 build: 1.5.3-beta2 2024-06-09 19:14:27 +08:00
手瓜一十雪
daab5d150b refactor: friend add 2024-06-09 19:13:49 +08:00
手瓜一十雪
9ff82bdb90 feat: support SetLongNick 2024-06-09 18:28:09 +08:00
手瓜一十雪
c6d70ef1cf build: 1.5.3-beta1 2024-06-09 17:46:32 +08:00
手瓜一十雪
15d4bb3c76 feat: new api 2024-06-09 17:30:30 +08:00
手瓜一十雪
3e698981fd chore: sync core 2024-06-09 14:26:02 +08:00
手瓜一十雪
9d45c934a5 chore: sync core 2024-06-08 22:13:05 +08:00
手瓜一十雪
c2bf9cf93e chore: sync core 2024-06-08 12:11:04 +08:00
手瓜一十雪
b3c6fd7f26 chore: sync core 2024-06-07 17:59:33 +08:00
手瓜一十雪
ccd155de71 feat: 推荐联系人ArkJson 2024-06-07 17:57:33 +08:00
手瓜一十雪
1f90d2e46b feat: 支持专属头衔获取 2024-06-07 17:26:00 +08:00
手瓜一十雪
4c5d974c22 feat: 支持专属头衔获取 2024-06-07 17:25:34 +08:00
手瓜一十雪
392eda1cbc fix: typo 2024-06-07 13:19:22 +08:00
手瓜一十雪
a9da3279e8 docs: change 2024-06-07 13:01:15 +08:00
手瓜一十雪
1ce8351180 docs: develop 2024-06-07 09:49:31 +08:00
手瓜一十雪
96c334478a docs: todo 2024-06-07 00:39:09 +08:00
手瓜一十雪
f1b0875b05 feat: ArkJsonGroupShare 2024-06-06 17:20:34 +08:00
手瓜一十雪
cea9e11c83 docs: add 2024-06-06 14:31:45 +08:00
手瓜一十雪
f098b39200 refactor: uins 2024-06-06 13:34:05 +08:00
手瓜一十雪
012d948b59 chore: sync 2024-06-06 13:23:15 +08:00
手瓜一十雪
3334cd0a71 docs: change 2024-06-06 12:18:17 +08:00
手瓜一十雪
d63d53fd88 docs: move 2024-06-06 11:05:30 +08:00
手瓜一十雪
a7fa39b2fd fix: message_id error 2024-06-06 11:03:29 +08:00
Version
40bb42e193 chore:version change 2024-06-05 10:30:26 +00:00
手瓜一十雪
9c382c639b build: v1.5.2-api兼容 2024-06-05 15:04:04 +08:00
手瓜一十雪
a43cde38f1 refactor: SetMsgEmojiLike 2024-06-05 15:03:14 +08:00
手瓜一十雪
c35d2e08cd refactor: reboot req params 2024-06-05 14:25:21 +08:00
手瓜一十雪
3377c383c1 build: v1.5.2 - GetMsg兼容 2024-06-05 12:14:41 +08:00
手瓜一十雪
c00e6d95cd build: v1.5.2-beta3 2024-06-05 11:23:42 +08:00
手瓜一十雪
725fccf4ed refactor: GoCQHTTP_GetStrangerInfo 2024-06-05 11:19:34 +08:00
手瓜一十雪
13129bd219 build: v1.5.2-beta2 2024-06-05 10:41:40 +08:00
手瓜一十雪
4561977bcf chore: sync core 2024-06-05 10:36:39 +08:00
手瓜一十雪
40be8a91f5 fix 2024-06-05 10:33:36 +08:00
手瓜一十雪
2a04d5830b fix: kick member 2024-06-04 23:52:46 +08:00
手瓜一十雪
82a38574f3 build: v1.5.2-beta 2024-06-04 23:16:33 +08:00
手瓜一十雪
fea3a33c2b refactor: Uid <-> Uin & Remove Cached 2024-06-04 23:13:18 +08:00
手瓜一十雪
9a502cdf6f refactor: uin - > uid 2024-06-04 23:06:53 +08:00
手瓜一十雪
4b616299cf refactor: uin -> uid 2024-06-04 22:50:16 +08:00
手瓜一十雪
102243e064 sync: core 2024-06-04 21:15:29 +08:00
手瓜一十雪
4b21ac5ebe fix: nt event 2024-06-04 21:09:19 +08:00
手瓜一十雪
4dd7363dd3 Merge branch 'main' of https://github.com/NapNeko/NapCatQQ 2024-06-04 12:39:08 +08:00
手瓜一十雪
3d5e5ab78f release: v1.5.1 2024-06-04 12:38:54 +08:00
手瓜一十雪
73045a1b21 Merge pull request #57 from Icexbb/main
fix: 整理日志、添加颜色、使用统一的日志函数以提高日志可读性
2024-06-04 12:37:54 +08:00
手瓜一十雪
871173a7cf fix: 二维码显示 2024-06-04 12:37:35 +08:00
手瓜一十雪
0002313093 Merge branch 'main' into pr/57 2024-06-04 12:31:43 +08:00
手瓜一十雪
948cf5cca6 refactror: cpmoudle
此处非NC运行时的代码 用于打包时运行
2024-06-04 12:26:19 +08:00
手瓜一十雪
d40230879c fix: 玄学的问题 2024-06-04 12:20:42 +08:00
XBB
ab22b775f1 fix: 整理日志、添加颜色、使用统一的日志函数以提高日志可读性 2024-06-04 02:59:35 +08:00
手瓜一十雪
42c85224ba build: v1.5.1-beta1 2024-06-03 21:18:24 +08:00
手瓜一十雪
e57444a353 sync: core 2024-06-03 21:11:21 +08:00
手瓜一十雪
3c6503d495 feat: support SetSelfProfile 2024-06-03 21:02:43 +08:00
手瓜一十雪
149b518f48 release: v1.5.0 2024-06-03 17:15:43 +08:00
手瓜一十雪
74621447ff fix: 提高兼容性 2024-06-03 17:12:53 +08:00
手瓜一十雪
3280952931 fix: 提高Api兼容性 2024-06-03 17:09:23 +08:00
手瓜一十雪
9e670e2736 Merge branch 'main' of https://github.com/NapNeko/NapCatQQ 2024-06-03 16:56:28 +08:00
手瓜一十雪
9fc6347a2f fix: 进一步标准化 2024-06-03 16:56:08 +08:00
Version
ec7a15a192 chore:version change 2024-06-03 08:50:25 +00:00
手瓜一十雪
7f99982810 release: v1.4.9 2024-06-03 16:49:08 +08:00
Version
935d83aaf8 chore:version change 2024-06-02 13:01:32 +00:00
手瓜一十雪
0ff6edd546 style: lint 2024-06-02 20:49:09 +08:00
手瓜一十雪
94f629585a build: v1.4.8-beta2 2024-06-02 20:40:41 +08:00
手瓜一十雪
89c04be02f fix 2024-06-02 13:58:51 +08:00
手瓜一十雪
3151965ea8 build: 1.3.8-beta1 2024-06-02 13:45:48 +08:00
手瓜一十雪
bdf5159be1 refactor: guid 2024-06-02 13:38:33 +08:00
手瓜一十雪
0499ebbea3 release: v1.4.7 2024-06-01 15:52:06 +08:00
手瓜一十雪
d5843b7236 refactor: v1.4.6 2024-06-01 14:09:16 +08:00
手瓜一十雪
1c9c574a90 refactor: v1.4.6 2024-06-01 14:08:10 +08:00
手瓜一十雪
39acf20e48 release: v1.4.6 2024-06-01 14:05:44 +08:00
手瓜一十雪
52eb6ed5ab refactor: group call 2024-06-01 14:02:43 +08:00
手瓜一十雪
ee78d2d59d fix: type hint 2024-06-01 12:14:37 +08:00
手瓜一十雪
60dc5c4a38 refactor: re groupList 2024-06-01 12:10:50 +08:00
手瓜一十雪
50a0dc0355 refactor: GroupListGet 2024-06-01 11:38:50 +08:00
手瓜一十雪
3f681ec914 refactor:NT Event Finish 2024-05-31 23:33:23 +08:00
手瓜一十雪
0bf499f191 release: v1.4.5 2024-05-31 21:25:47 +08:00
手瓜一十雪
389695a0d6 fix: 1.4.5 2024-05-31 21:22:17 +08:00
手瓜一十雪
07f1afb312 fix 2024-05-31 21:03:00 +08:00
手瓜一十雪
ae91e61304 refactor:NTEvent 2024-05-31 21:02:39 +08:00
手瓜一十雪
6248991b01 refactor: NTEvent 2024-05-31 20:38:31 +08:00
手瓜一十雪
7f2d57ef62 refactor: event 2024-05-31 20:29:01 +08:00
手瓜一十雪
31f8f884f1 refactor: NTEvent 2024-05-31 19:09:03 +08:00
手瓜一十雪
4f4af5985a fix: type check & type output 2024-05-31 18:55:18 +08:00
手瓜一十雪
a716fdf6d4 refactor:NTEventDispatch 2024-05-31 14:07:35 +08:00
手瓜一十雪
9717f64abd refactor:NTEvent 2024-05-31 13:55:28 +08:00
手瓜一十雪
adf239183a docs: change 2024-05-31 10:12:59 +08:00
手瓜一十雪
6cf209c79c release: v1.4.4 2024-05-30 22:45:57 +08:00
手瓜一十雪
decc5fb3c0 refactor: checkDate 2024-05-30 22:41:51 +08:00
手瓜一十雪
1e0820d613 refactor: send rate 2024-05-30 22:38:02 +08:00
手瓜一十雪
70124d5177 refactor: GoCQHTTPUploadGroupFile 2024-05-30 22:32:09 +08:00
手瓜一十雪
269de65201 fix: undel 2024-05-30 20:53:58 +08:00
手瓜一十雪
1d11abbfb6 refactor: NTEvent 2024-05-30 19:40:40 +08:00
手瓜一十雪
700f308d6e feat: wrap NT-Event 2024-05-30 17:28:08 +08:00
手瓜一十雪
21b6928ca6 chore: sync core 2024-05-30 16:24:09 +08:00
手瓜一十雪
998c67a649 release: v1.4.3 2024-05-30 16:21:39 +08:00
Version
fb99e878b0 chore:version change 2024-05-30 04:36:42 +00:00
手瓜一十雪
1619adfc27 release: v1.4.2 2024-05-30 12:36:15 +08:00
手瓜一十雪
5510fb473f fix: typo 2024-05-30 12:02:47 +08:00
手瓜一十雪
be1878cb2b build: 1.4.2-fix:file list 2024-05-30 11:01:34 +08:00
手瓜一十雪
15ab121cbd fix: config 2024-05-29 14:26:45 +08:00
手瓜一十雪
aa79b0e861 fix: ocr 2024-05-29 14:18:43 +08:00
手瓜一十雪
b80e550bcd docs: 1.4.2 2024-05-29 12:14:17 +08:00
手瓜一十雪
dbc40b5814 release:1.4.1 2024-05-29 11:38:57 +08:00
Version
0d5696a644 chore:version change 2024-05-29 03:36:54 +00:00
手瓜一十雪
ceffa05802 fix 2024-05-29 11:36:04 +08:00
手瓜一十雪
d5668920b6 release: 1.4.1 2024-05-29 11:34:55 +08:00
手瓜一十雪
516f2da144 feat: en2zh 2024-05-29 10:25:13 +08:00
手瓜一十雪
33c94e1888 docs: 1.4.1 todo 2024-05-29 00:34:44 +08:00
手瓜一十雪
51ab58cd91 fix: webui 2024-05-29 00:07:05 +08:00
手瓜一十雪
aa7798d1d1 feat: wait fix 2024-05-29 00:00:48 +08:00
手瓜一十雪
9067a1fc92 refactor: info record local 2024-05-28 23:24:54 +08:00
手瓜一十雪
4024b6c564 Merge pull request #46 from po-lan/main
Update GetGroupMemberList.ts
2024-05-28 23:20:11 +08:00
po-lan
d39730928b Update GetGroupMemberList.ts
fix
2024-05-28 23:17:39 +08:00
手瓜一十雪
e1f049229c Merge pull request #45 from po-lan/main
对 get_group_member_list 增强
2024-05-28 22:49:21 +08:00
po-lan
8f2676ec19 Update main.ts 2024-05-28 22:43:41 +08:00
po-lan
32d26248dc Update main.ts 2024-05-28 22:41:40 +08:00
po-lan
16f926401b Update db.ts 2024-05-28 22:30:26 +08:00
po-lan
66d60d3599 Update main.ts 2024-05-28 22:27:12 +08:00
po-lan
5a35ab6c34 Update OB11GroupIncreaseEvent.ts 2024-05-28 22:26:02 +08:00
手瓜一十雪
ba1542bd31 Merge pull request #44 from po-lan/main
对 get_group_member_list 增强
2024-05-28 21:49:26 +08:00
po-lan
453060945a Update OB11GroupIncreaseEvent.ts 2024-05-28 21:47:05 +08:00
po-lan
c8351be461 Update config.ts 2024-05-28 21:45:36 +08:00
po-lan
9954da22a6 Update db.ts 2024-05-28 21:44:30 +08:00
手瓜一十雪
907b5611eb chore: sync core 2024-05-28 21:02:57 +08:00
手瓜一十雪
5f075de212 refactor: Info 2024-05-28 20:50:29 +08:00
手瓜一十雪
8fcf3c5079 refactor: GroupInfo 2024-05-28 20:43:16 +08:00
手瓜一十雪
07cee90c7a refactor: MemberInfo-1 2024-05-28 20:08:40 +08:00
手瓜一十雪
75ad495b98 refactor: remove some log 2024-05-28 19:32:08 +08:00
手瓜一十雪
0bb7288ad2 Merge pull request #40 from po-lan/main
对 get_group_member_list 增强
2024-05-28 19:21:25 +08:00
po-lan
ad72415532 对 get_group_member_list 增强开关 2024-05-27 17:11:26 +08:00
po-lan
0ad0353fc0 对 get_group_member_list 增强
监听每一条群聊消息准备写入数据库
2024-05-27 17:09:27 +08:00
po-lan
9fa0dcd7aa 对 get_group_member_list 增强
非管理员的Bot可以通过本地数据库获取到最近的发言时间
2024-05-27 17:07:23 +08:00
po-lan
1f2e80cd39 对 get_group_member_list 增强
一个基于LRU思想写出来的缓存结构
来降低写入数据库的次数
2024-05-27 17:05:28 +08:00
po-lan
6cb6034d43 对 get_group_member_list 增强 2024-05-27 17:01:24 +08:00
手瓜一十雪
25134c6ac6 fix: vite-env 2024-05-26 20:38:18 +08:00
手瓜一十雪
92bf42878a chore: sync core 2024-05-26 11:42:12 +08:00
手瓜一十雪
9f4582d158 docs: update 2024-05-25 19:30:48 +08:00
219 changed files with 3951 additions and 953 deletions

View File

@@ -47,7 +47,7 @@ jobs:
fail-fast: false
matrix:
target_platform: [win32]
target_arch: [x64]
target_arch: [x64,ia32]
steps:
- name: Clone Main Repository
uses: actions/checkout@v4

View File

@@ -72,7 +72,7 @@ jobs:
fail-fast: false
matrix:
target_platform: [win32]
target_arch: [x64]
target_arch: [x64,ia32]
steps:
- name: Clone Main Repository
uses: actions/checkout@v4

View File

@@ -0,0 +1,12 @@
# v1.5.9
QQ Version: Windows 9.9.11-24815 / Linux 3.2.9-24815
## 修复与优化
* 优化缓存问题
* 修复poke异常上报
## 新增与调整
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

View File

@@ -0,0 +1,14 @@
# v1.4.1
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
## 修复与优化
* 提高部分Api兼容性
* 优化日志膨胀问题
* 在线状态刷新问题修复
## 新增与调整
* 支持非管理群 本地记录时间数据 (建议 **备份配置 清空配置 重新配置**)
* 新增英译中接口 Api: /translate_en2zh
* 新增群文件管理相关扩展接口 Api: /get_group_file_count /get_group_file_list /set_group_file_folder /del_group_file /del_group_file_folder
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

View File

@@ -0,0 +1,12 @@
# v1.4.2
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
## 修复与优化
* 修复获取群文件列表Api
* 修复退群通知问题
## 新增与调整
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

View File

@@ -0,0 +1,11 @@
# v1.4.3
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
## 修复与优化
* 修复名片通知
## 新增与调整
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

View File

@@ -0,0 +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)

View File

@@ -0,0 +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)

View File

@@ -0,0 +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)

View 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)

View 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)

View File

@@ -0,0 +1,11 @@
# v1.4.9
QQ Version: Windows 9.9.10-24108 / Linux 3.2.7-23361
## 修复与优化
* 修复接口调用问题 接口标准化 APIset_group_add_request
## 新增与调整
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

View 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)

View 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)

View 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)

View 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)

View File

@@ -0,0 +1,11 @@
# v1.5.4
QQ Version: Windows 9.9.11-24568 / Linux 3.2.9-23568
## 修复与优化
* 紧急修复视频与文件问题
## 新增与调整
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

View File

@@ -0,0 +1,11 @@
# v1.5.5
QQ Version: Windows 9.9.11-24568 / Linux 3.2.9-23568
## 修复与优化
* 紧急修复一些问题
## 新增与调整
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

View File

@@ -0,0 +1,11 @@
# v1.5.6
QQ Version: Windows 9.9.11-24568 / Linux 3.2.9-24568
## 修复与优化
* 修复一些问题
## 新增与调整
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

View File

@@ -0,0 +1,11 @@
# v1.5.7
QQ Version: Windows 9.9.11-24568 / Linux 3.2.9-24568
## 修复与优化
* 修复一些问题
## 新增与调整
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

View File

@@ -0,0 +1,14 @@
# v1.5.8
QQ Version: Windows 9.9.11-24568 / Linux 3.2.9-24568
## 修复与优化
* 修复视频文件残留问题
* 重构 getcookies接口 支持大部分常见域
## 新增与调整
* 日志大小限制
* 支持 QQ音乐 卡片 无签名支持时 启用内置方法(缺点没有封面 限速1min/条)
* 支持Window X86-32机器
新增的 API 详细见[API文档](https://napneko.github.io/zh-CN/develop/extends_api)

2
docs/develop/Android.md Normal file
View File

@@ -0,0 +1,2 @@
# 开始
jadx 跳转于 `com.tencent.qqnt.kernel.*`

View 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
```

View File

@@ -0,0 +1,48 @@
public static final int C2C_PIC_DOWNLOAD = 1004;
public static final String C2C_PIC_DOWNLOAD_DOMAIN = "c2cpicdw.qpic.cn";
public static final String C2C_PIC_DOWNLOAD_QUIC_DOMAIN = "c2cpicdw.quic.qpic.cn";
public static final int FLAG_NOT_UPLOAD = 3;
public static final int FLAG_UPLOADINFO_ERROR = 4;
public static final int GROUP_PIC_DOWNLOAD = 1000;
public static final String GROUP_PIC_DOWNLOAD_DOMAIN = "gchat.qpic.cn";
public static final String GROUP_PIC_DOWNLOAD_QUIC_DOMAIN = "gchat.quic.qpic.cn";
public static final String GUILD_PIC_DOWNLOAD_DOMAIN = "gchat.qpic.cn/qmeetpic";
public static final boolean NEW_STORE_FLAG = true;
public static final String PTT_VIDEO_DOWNLOAD_DOMAIN = "grouptalk.c2c.qq.com";
protected static final int AVIF_DECODE_EXCEPTION = 4;
protected static final int AVIF_DECODE_FAIL = 1;
protected static final int AVIF_DECODE_FAIL_SO_FAIL = 2;
protected static final int AVIF_DECODE_FAIL_UNKNOWN = 6;
protected static final int AVIF_DECODE_FILETYPE_ERROR = 5;
protected static final int AVIF_DECODE_OOM = 3;
protected static final int AVIF_DECODE_RENAME_FAIL = 7;
protected static final int AVIF_DECODE_SUC = 0;
public static final String AVIF_FILE_SUFFIX = ".avif";
public static final int AVIF_REQ_APPRUNTIME_NULL = 12;
public static final int AVIF_REQ_CODEC_UNSURPPORT = 5;
protected static final int AVIF_REQ_DENSITY_UNSURPPORT = 10;
protected static final int AVIF_REQ_FLASH_PHOTO = 9;
protected static final int AVIF_REQ_HAS_TMP_AVIF = 7;
protected static final int AVIF_REQ_INVALID_MSG_RECORD = 2;
protected static final int AVIF_REQ_IS_RAW_PHOTO = 3;
protected static final int AVIF_REQ_OUTPUTSTREAM_UNSURPPORT = 11;
protected static final int AVIF_REQ_OVERSIZE = 6;
protected static final int AVIF_REQ_RETRY = 1;
public static final int AVIF_REQ_SO_DOWNLOAD_FAILED = 8;
protected static final int AVIF_REQ_SUC = 0;
public static final int AVIF_REQ_SWITCH_CLOSE = 4;
public static final String C2C_PIC_DOWNLOAD_ERROR_CODE = "C2CPicDownloadErrorCode";
static final int DOWNLOAD_ST_COMPLETE = 1;
static final int DOWNLOAD_ST_HEAD = 2;
static final int DOWNLOAD_ST_LEFT = 4;
static final int DOWNLOAD_ST_PART = 3;
private static final int ENCRYPT_APPID = 1600000226;
public static final String GROUP_PIC_DOWNLOAD_ERROR_CODE = "GroupPicDownloadErrorCode";
public static final String KEY_PIC_DOWNLOAD_ERROR_CODE = "param_detail_code";
protected static final int QUIC_FAIL_IP_LIST_EMPTY = 1;
protected static final int QUIC_FAIL_REQUEST_HTTPS = 3;
protected static final int QUIC_FAIL_REQUEST_QUIC = 2;
protected static final int QUIC_FAIL_SO_LOAD = 4;
public static final String REPORT_TAG_DIRECT_DOWNLOAD_FAIL = "report_direct_download_fail";
public static final String REQ_PARAM_AVIF = "tp=avif";

View 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;
```

View 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调用流程

View File

@@ -1,66 +1,72 @@
{
"name": "napcat",
"private": true,
"type": "module",
"version": "1.4.0",
"scripts": {
"watch:dev": "vite --mode development",
"watch:prod": "vite --mode production",
"build:dev": "vite build --mode development",
"build:prod": "vite build --mode production",
"build": "npm run build:dev",
"build:core": "cd ./src/core && npm run build && cd ../.. && node ./script/copy-core.cjs",
"build:webui": "cd ./src/webui && vite build",
"watch": "npm run watch:dev",
"debug-win": "powershell dist/napcat.ps1",
"lint": "eslint --fix src/**/*.{js,ts}",
"release": "npm run build:prod",
"depend": "cd dist && npm install --omit=dev"
},
"devDependencies": {
"@log4js-node/log4js-api": "^1.0.2",
"@rollup/plugin-node-resolve": "^15.2.3",
"@rollup/plugin-typescript": "^11.1.6",
"@types/cors": "^2.8.17",
"@types/express": "^4.17.21",
"@types/figlet": "^1.5.8",
"@types/fluent-ffmpeg": "^2.1.24",
"@types/node": "^20.11.30",
"@types/qrcode-terminal": "^0.12.2",
"@types/uuid": "^9.0.8",
"@types/ws": "^8.5.10",
"@typescript-eslint/eslint-plugin": "^7.4.0",
"@typescript-eslint/parser": "^7.4.0",
"eslint": "^8.57.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.29.1",
"i": "^0.3.7",
"javascript-obfuscator": "^4.1.0",
"rollup": "^4.13.2",
"rollup-plugin-dts": "^6.1.0",
"rollup-plugin-obfuscator": "^1.1.0",
"typescript": "^5.3.3",
"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"
},
"dependencies": {
"ajv": "^8.13.0",
"commander": "^12.0.0",
"cors": "^2.8.5",
"express": "^5.0.0-beta.2",
"fast-xml-parser": "^4.3.6",
"file-type": "^19.0.0",
"fluent-ffmpeg": "^2.1.2",
"image-size": "^1.1.1",
"json-schema-to-ts": "^3.1.0",
"log4js": "^6.9.1",
"qrcode-terminal": "^0.12.0",
"silk-wasm": "^3.3.4",
"sqlite3": "^5.1.7",
"uuid": "^9.0.1",
"ws": "^8.16.0"
}
}
{
"name": "napcat",
"private": true,
"type": "module",
"version": "1.5.9",
"scripts": {
"watch:dev": "vite --mode development",
"watch:prod": "vite --mode production",
"build:dev": "vite build --mode development",
"build:prod": "vite build --mode production",
"build": "npm run build:dev",
"build:core": "cd ./src/core && npm run build && cd ../.. && node ./script/copy-core.cjs",
"build:webui": "cd ./src/webui && vite build",
"watch": "npm run watch:dev",
"debug-win": "powershell dist/napcat.ps1",
"lint": "eslint --fix src/**/*.{js,ts}",
"release": "npm run build:prod",
"depend": "cd dist && npm install --omit=dev"
},
"devDependencies": {
"@babel/core": "^7.24.7",
"@babel/preset-typescript": "^7.24.7",
"vite-plugin-babel": "^1.2.0",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-decorators": "^7.24.7",
"@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",
"@types/express": "^4.17.21",
"@types/figlet": "^1.5.8",
"@types/fluent-ffmpeg": "^2.1.24",
"@types/node": "^20.11.30",
"@types/qrcode-terminal": "^0.12.2",
"@types/uuid": "^10.0.0",
"@types/ws": "^8.5.10",
"@typescript-eslint/eslint-plugin": "^7.4.0",
"@typescript-eslint/parser": "^7.4.0",
"eslint": "^8.57.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.29.1",
"i": "^0.3.7",
"javascript-obfuscator": "^4.1.0",
"rollup": "^4.13.2",
"rollup-plugin-dts": "^6.1.0",
"rollup-plugin-obfuscator": "^1.1.0",
"typescript": "^5.3.3",
"vite": "^5.2.6",
"vite-plugin-cp": "^4.0.8",
"vite-plugin-dts": "^3.8.2",
"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",
"fast-xml-parser": "^4.3.6",
"file-type": "^19.0.0",
"fluent-ffmpeg": "^2.1.2",
"image-size": "^1.1.1",
"json-schema-to-ts": "^3.1.0",
"log4js": "^6.9.1",
"qrcode-terminal": "^0.12.0",
"silk-wasm": "^3.3.4",
"sqlite3": "^5.1.7",
"uuid": "^10.0.0",
"ws": "^8.16.0"
}
}

View File

@@ -37,14 +37,14 @@ export abstract class HttpServerBase {
const authHeader = req.get('authorization');
if (authHeader) {
clientToken = authHeader.split('Bearer ').pop() || '';
logDebug('receive http header token', clientToken);
//logDebug('receive http header token', clientToken);
} else if (req.query.access_token) {
if (Array.isArray(req.query.access_token)) {
clientToken = req.query.access_token[0].toString();
} else {
clientToken = req.query.access_token.toString();
}
logDebug('receive http url token', clientToken);
//logDebug('receive http url token', clientToken);
}
if (serverToken && clientToken != serverToken) {

View File

@@ -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);

View File

@@ -0,0 +1,182 @@
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) });

View File

@@ -0,0 +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;

View 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) {
const ShortId = parseInt(crypto.createHash('sha1').update('2345').digest('hex').slice(0, 8), 16);
this.msgIdMap.set(ShortId, MsgId);
return ShortId;
}
getMsgIdByShortId(ShortId: number) {
return this.msgIdMap.getValue(ShortId);
}
getShortIdByMsgId(MsgId: string) {
return this.msgIdMap.getKey(MsgId);
}
}
export const MessageUnique = new MessageUniqueWrapper();

View File

@@ -0,0 +1,17 @@
// 方案一 MiniApp发包方案
// 前置条件: 处于GUI环境 存在MiniApp
import { NTQQSystemApi } from '@/core';
// 前排提示: 开发验证仅Win平台开展
export class MiniAppUtil {
static async RunMiniAppWithGUI() {
//process.env.ELECTRON_RUN_AS_NODE = undefined;//没用还是得自己用cpp之类的语言写个程序转发参数
return NTQQSystemApi.BootMiniApp(process.execPath, 'miniapp://open/1007?url=https%3A%2F%2Fm.q.qq.com%2Fa%2Fs%2Fedd0a83d3b8afe233dfa07adaaf8033f%3Fscene%3D1007%26min_refer%3D10001');
}
}
// 方案二 MiniApp发包方案 替代MiniApp方案
// 前置条件: 无
export class MojoMiniAppUtil{
}

View File

@@ -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;
@@ -37,11 +38,11 @@ type QQVersionConfigInfo = {
}
let _qqVersionConfigInfo: QQVersionConfigInfo = {
'baseVersion': '9.9.9-23361',
'curVersion': '9.9.9-23361',
'baseVersion': '9.9.11-24568',
'curVersion': '9.9.11-24568',
'prevVersion': '',
'onErrorVersions': [],
'buildId': '23361'
'buildId': '24568'
};
if (fs.existsSync(configVersionInfoPath)) {
@@ -49,12 +50,12 @@ 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);
}
}
export const qqVersionConfigInfo: QQVersionConfigInfo = _qqVersionConfigInfo;
//V1_WIN_NQ_9.9.11_24568_GW_B
export const qqPkgInfo: QQPkgInfo = JSON.parse(fs.readFileSync(pkgInfoPath).toString());
// platform_type: 3,
// app_type: 4,
@@ -63,10 +64,15 @@ export const qqPkgInfo: QQPkgInfo = JSON.parse(fs.readFileSync(pkgInfoPath).toSt
// appid: '537213764',
// platVer: '10.0.26100',
// clientVer: '9.9.9-23159',
//Android
//V1_AND_SQ_9.0.60_6478_YYB_D
// Linux
// app_version: '3.2.9-24568',
// qua: 'V1_LNX_NQ_3.2.9_24568_GW_B',
let _appid: string = '537213803'; // 默认为 Windows 平台的 appid
let _appid: string = '537226369'; // 默认为 Windows 平台的 appid
if (systemPlatform === 'linux') {
_appid = '537213827';
_appid = '537226441';
}
// todo: mac 平台的 appid
export const appid = _appid;

View File

@@ -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;
}
}

View File

@@ -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) {

449
src/common/utils/db.ts Normal file
View File

@@ -0,0 +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);
}
});
}
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();

View File

@@ -1,10 +1,10 @@
import fs from 'fs';
import fsPromise from 'fs/promises';
import fsPromise, { stat } from 'fs/promises';
import crypto from 'crypto';
import util from 'util';
import path from 'node:path';
import { log } from './log';
import { dbUtil } from '@/core/utils/db';
import { log, logError } from './log';
import { dbUtil } from '@/common/utils/db';
import * as fileType from 'file-type';
import { v4 as uuidv4 } from 'uuid';
import { napCatCore } from '@/core';
@@ -50,7 +50,40 @@ export function checkFileReceived(path: string, timeout: number = 3000): Promise
check();
});
}
// 定义一个异步函数来检查文件是否存在
export async function checkFileReceived2(path: string, timeout: number = 3000): Promise<void> {
// 使用 Promise.race 来同时进行文件状态检查和超时计时
// Promise.race 会返回第一个解决resolve或拒绝reject的 Promise
await Promise.race([
checkFile(path),
timeoutPromise(timeout, `文件不存在: ${path}`),
]);
}
// 转换超时时间至 Promise
function timeoutPromise(timeout: number, errorMsg: string): Promise<void> {
return new Promise((_, reject) => {
setTimeout(() => {
reject(new Error(errorMsg));
}, timeout);
});
}
// 异步检查文件是否存在
async function checkFile(path: string): Promise<void> {
try {
await stat(path);
} catch (error: any) {
if (error.code === 'ENOENT') {
// 如果文件不存在,则抛出一个错误
throw new Error(`文件不存在: ${path}`);
} else {
// 对于 stat 调用的其他错误,重新抛出
throw error;
}
}
// 如果文件存在则无需做任何事情Promise 解决resolve自身
}
export async function file2base64(path: string) {
const readFile = util.promisify(fs.readFile);
const result = {
@@ -262,12 +295,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);
}
}

View File

@@ -4,7 +4,7 @@ import fs from 'fs/promises';
import { log, logDebug } from './log';
import { dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
import * as fsPromise from 'node:fs/promises';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
@@ -43,8 +43,88 @@ export function truncateString(obj: any, maxLength = 500) {
}
return obj;
}
export function simpleDecorator(target: any, context: any) {
}
// export function CacheClassFunc(ttl: number = 3600 * 1000, customKey: string = '') {
// const cache = new Map<string, { expiry: number; value: any }>();
// return function CacheClassFuncDecorator(originalMethod: Function, context: ClassMethodDecoratorContext) {
// async function CacheClassFuncDecoratorInternal(this: any, ...args: any[]) {
// const key = `${customKey}${String(context.name)}.(${args.map(arg => JSON.stringify(arg)).join(', ')})`;
// const cachedValue = cache.get(key);
// if (cachedValue && cachedValue.expiry > Date.now()) {
// return cachedValue.value;
// }
// const result = originalMethod.call(this, ...args);
// cache.set(key, { expiry: Date.now() + ttl, value: result });
// return result;
// }
// return CacheClassFuncDecoratorInternal;
// }
// }
export function CacheClassFuncAsync(ttl: number = 3600 * 1000, customKey: string = '') {
//console.log('CacheClassFuncAsync', ttl, customKey);
function logExecutionTime(target: any, methodName: string, descriptor: PropertyDescriptor) {
//console.log('logExecutionTime', target, methodName, descriptor);
const cache = new Map<string, { expiry: number; value: any }>();
const originalMethod = descriptor.value;
descriptor.value = async function (...args: any[]) {
const key = `${customKey}${String(methodName)}.(${args.map(arg => JSON.stringify(arg)).join(', ')})`;
cache.forEach((value, key) => {
if (value.expiry < Date.now()) {
cache.delete(key);
}
});
const cachedValue = cache.get(key);
if (cachedValue && cachedValue.expiry > Date.now()) {
return cachedValue.value;
}
// const start = Date.now();
const result = await originalMethod.apply(this, args);
// const end = Date.now();
// console.log(`Method ${methodName} executed in ${end - start} ms.`);
cache.set(key, { expiry: Date.now() + ttl, value: result });
return result;
};
}
return logExecutionTime;
}
// export function CacheClassFuncAsync(ttl: number = 3600 * 1000, customKey: string = ''): any {
// const cache = new Map<string, { expiry: number; value: any }>();
// // 注意在JavaScript装饰器中我们通常不直接处理ClassMethodDecoratorContext这样的类型
// // 因为装饰器的参数通常是目标类(对于类装饰器)、属性名(对于属性装饰器)等。
// // 对于方法装饰器,我们关注的是方法本身及其描述符。
// // 但这里我们维持原逻辑,假设有一个自定义的处理上下文的方式。
// return function (originalMethod: Function): any {
// console.log(originalMethod);
// // 由于JavaScript装饰器原生不支持异步直接定义我们保持async定义以便处理异步方法。
// async function decoratorWrapper(this: any, ...args: any[]): Promise<any> {
// console.log(...args);
// const key = `${customKey}${originalMethod.name}.(${args.map(arg => JSON.stringify(arg)).join(', ')})`;
// const cachedValue = cache.get(key);
// // 遍历cache 清除expiry内容
// cache.forEach((value, key) => {
// if (value.expiry < Date.now()) {
// cache.delete(key);
// }
// });
// if (cachedValue && cachedValue.expiry > Date.now()) {
// return cachedValue.value;
// }
// // 直接await异步方法的结果
// const result = await originalMethod.apply(this, args);
// cache.set(key, { expiry: Date.now() + ttl, value: result });
// return result;
// }
// // 返回装饰后的方法保持与原方法相同的名称和描述符如果需要更精细的控制可以考虑使用Object.getOwnPropertyDescriptor等
// return decoratorWrapper;
// };
// }
/**
* 函数缓存装饰器根据方法名、参数、自定义key生成缓存键在一定时间内返回缓存结果
@@ -138,6 +218,10 @@ export function migrateConfig(oldConfig: any) {
enable: oldConfig.enableWsReverse,
urls: oldConfig.wsReverseUrls,
},
GroupLocalTime: {
Record: false,
RecordList: []
},
debug: oldConfig.debug,
heartInterval: oldConfig.heartInterval,
messagePostFormat: oldConfig.messagePostFormat,
@@ -145,6 +229,7 @@ export function migrateConfig(oldConfig: any) {
musicSignUrl: oldConfig.musicSignUrl,
reportSelfMessage: oldConfig.reportSelfMessage,
token: oldConfig.token,
};
return newConfig;
}
@@ -176,4 +261,26 @@ export function isEqual(obj1: any, obj2: any) {
if (!isEqual(obj1[key], obj2[key])) return false;
}
return true;
}
}
export async function deleteOldFiles(directoryPath: string, daysThreshold: number) {
try {
const files = await fsPromise.readdir(directoryPath);
for (const file of files) {
const filePath = path.join(directoryPath, file);
const stats = await fsPromise.stat(filePath);
const lastModifiedTime = stats.mtimeMs;
const currentTime = Date.now();
const timeDifference = currentTime - lastModifiedTime;
const daysDifference = timeDifference / (1000 * 60 * 60 * 24);
if (daysDifference > daysThreshold) {
await fsPromise.unlink(filePath); // Delete the file
//console.log(`Deleted: ${filePath}`);
}
}
} catch (error) {
//console.error('Error deleting files:', error);
}
}

View File

@@ -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);
@@ -39,17 +39,17 @@ const logConfig: Configuration = {
FileAppender: { // 输出到文件的appender
type: 'file',
filename: logPath, // 指定日志文件的位置和文件名
maxLoogSize: 10485760, // 日志文件的最大大小单位字节这里设置为10MB
maxLogSize: 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);
}

View File

@@ -1,6 +1,9 @@
import https from 'node:https';
import http from 'node:http';
import fs, { readFileSync } from 'node:fs';
import { NTQQUserApi } from '@/core';
import path from 'node:path';
import { request } from 'node:http';
export class RequestUtil {
// 适用于获取服务器下发cookies时获取仅GET
static async HttpsGetCookies(url: string): Promise<{ [key: string]: string }> {
@@ -49,7 +52,7 @@ export class RequestUtil {
// 请求和回复都是JSON data传原始内容 自动编码json
static async HttpGetJson<T>(url: string, method: string = 'GET', data?: any, headers: Record<string, string> = {}, isJsonRet: boolean = true, isArgJson: boolean = true): Promise<T> {
static async HttpGetJson<T>(url: string, method: string = 'GET', data?: any, headers: { [key: string]: string } = {}, isJsonRet: boolean = true, isArgJson: boolean = true): Promise<T> {
const option = new URL(url);
const protocol = url.startsWith('https://') ? https : http;
const options = {
@@ -59,6 +62,10 @@ export class RequestUtil {
method: method,
headers: headers
};
// headers: {
// 'Content-Type': 'application/json',
// 'Content-Length': Buffer.byteLength(postData),
// },
return new Promise((resolve, reject) => {
const req = protocol.request(options, (res: any) => {
let responseBody = '';
@@ -100,7 +107,86 @@ export class RequestUtil {
}
// 请求返回都是原始内容
static async HttpGetText(url: string, method: string = 'GET', data?: any, headers: Record<string, string> = {}) {
static async HttpGetText(url: string, method: string = 'GET', data?: any, headers: { [key: string]: string } = {}) {
return this.HttpGetJson<string>(url, method, data, headers, false, false);
}
static async createFormData(boundary: string, filePath: string): Promise<Buffer> {
let type = 'image/png';
if (filePath.endsWith('.jpg')) {
type = 'image/jpeg';
}
const formDataParts = [
`------${boundary}\r\n`,
`Content-Disposition: form-data; name="share_image"; filename="${filePath}"\r\n`,
'Content-Type: ' + type + '\r\n\r\n'
];
const fileContent = readFileSync(filePath);
const footer = `\r\n------${boundary}--`;
return Buffer.concat([
Buffer.from(formDataParts.join(''), 'utf8'),
fileContent,
Buffer.from(footer, 'utf8')
]);
}
static async uploadImageForOpenPlatform(filePath: string): Promise<string> {
return new Promise(async (resolve, reject) => {
type retType = { retcode: number, result?: { url: string } };
try {
const cookies = Object.entries(await NTQQUserApi.getCookies('connect.qq.com')).map(([key, value]) => `${key}=${value}`).join('; ');
const options = {
hostname: 'cgi.connect.qq.com',
port: 443,
path: '/qqconnectopen/upload_share_image',
method: 'POST',
headers: {
'Referer': 'https://cgi.connect.qq.com',
'Cookie': cookies,
'Accept': '*/*',
'Connection': 'keep-alive',
'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'
}
};
const req = https.request(options, async (res) => {
let responseBody = '';
res.on('data', (chunk: string | Buffer) => {
responseBody += chunk.toString();
});
res.on('end', () => {
try {
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
const responseJson = JSON.parse(responseBody) as retType;
resolve(responseJson.result!.url!);
} else {
reject(new Error(`Unexpected status code: ${res.statusCode}`));
}
} catch (parseError) {
reject(parseError);
}
});
});
req.on('error', (error) => {
console.error('Error during upload:', error);
});
const body = await RequestUtil.createFormData('WebKitFormBoundary7MA4YWxkTrZu0gW', filePath);
// req.setHeader('Content-Length', Buffer.byteLength(body));
// console.log(`Prepared data size: ${Buffer.byteLength(body)} bytes`);
req.write(body);
req.end();
return;
} catch (error) {
reject(error);
}
return undefined;
});
}
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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('未找到视频流信息。');
}

View File

@@ -1 +1 @@
var _0x2f9bbf=_0x8fe9;(function(_0x240c15,_0x13a1b9){var _0x44d52a=_0x8fe9,_0x48175b=_0x240c15();while(!![]){try{var _0x43e10a=-parseInt(_0x44d52a(0xd2))/0x1+-parseInt(_0x44d52a(0xca))/0x2*(parseInt(_0x44d52a(0xce))/0x3)+parseInt(_0x44d52a(0xcc))/0x4*(parseInt(_0x44d52a(0xcf))/0x5)+parseInt(_0x44d52a(0xd0))/0x6+parseInt(_0x44d52a(0xd4))/0x7+-parseInt(_0x44d52a(0xcd))/0x8+parseInt(_0x44d52a(0xcb))/0x9;if(_0x43e10a===_0x13a1b9)break;else _0x48175b['push'](_0x48175b['shift']());}catch(_0x212c5e){_0x48175b['push'](_0x48175b['shift']());}}}(_0x573b,0x4e014));export class DependsAdapter{[_0x2f9bbf(0xd1)](_0x571d8c,_0x2da53b){}['onMSFSsoError'](_0xeb8504){}[_0x2f9bbf(0xd3)](_0xc5cb23){}}function _0x8fe9(_0x18a1a4,_0xb679b){var _0x573b03=_0x573b();return _0x8fe9=function(_0x8fe947,_0x355420){_0x8fe947=_0x8fe947-0xca;var _0x14c474=_0x573b03[_0x8fe947];return _0x14c474;},_0x8fe9(_0x18a1a4,_0xb679b);}function _0x573b(){var _0x2f3e16=['onMSFStatusChange','178221cLXANj','getGroupCode','2825634SxDvBt','18NYwNJJ','3815829fEQwgG','3524MpzAYl','2522312mBhRkw','137181gBuRKZ','1655noChHQ','631842JoCFyL'];_0x573b=function(){return _0x2f3e16;};return _0x573b();}
function _0x3af3(_0x356d40,_0x2a20fb){var _0x101a99=_0x101a();return _0x3af3=function(_0x3af393,_0x53d8da){_0x3af393=_0x3af393-0x64;var _0x1a7781=_0x101a99[_0x3af393];return _0x1a7781;},_0x3af3(_0x356d40,_0x2a20fb);}var _0x37baa3=_0x3af3;(function(_0x3d6d4c,_0x1c9364){var _0x3270f1=_0x3af3,_0x5d4667=_0x3d6d4c();while(!![]){try{var _0x6921cf=parseInt(_0x3270f1(0x68))/0x1+-parseInt(_0x3270f1(0x6b))/0x2+parseInt(_0x3270f1(0x6f))/0x3+-parseInt(_0x3270f1(0x6e))/0x4*(parseInt(_0x3270f1(0x67))/0x5)+-parseInt(_0x3270f1(0x6a))/0x6*(parseInt(_0x3270f1(0x64))/0x7)+-parseInt(_0x3270f1(0x66))/0x8*(parseInt(_0x3270f1(0x65))/0x9)+parseInt(_0x3270f1(0x6d))/0xa;if(_0x6921cf===_0x1c9364)break;else _0x5d4667['push'](_0x5d4667['shift']());}catch(_0xc0a47b){_0x5d4667['push'](_0x5d4667['shift']());}}}(_0x101a,0xe1bfe));export class DependsAdapter{[_0x37baa3(0x69)](_0x1e1f6e,_0x459b96){}[_0x37baa3(0x6c)](_0x1f7874){}[_0x37baa3(0x70)](_0x52d383){}}function _0x101a(){var _0xa96996=['42367970pybWcp','5588848WWCYNI','1222647CgLZgG','getGroupCode','7658BHknpG','4631319UaMPvI','24IHKGAL','5juNrBF','406432qNpTWf','onMSFStatusChange','54fzBnPw','2350554PxwUSd','onMSFSsoError'];_0x101a=function(){return _0xa96996;};return _0x101a();}

View File

@@ -1 +1 @@
function _0x3ac0(_0xcb3d4b,_0x45f6cb){var _0x2b332b=_0x2b33();return _0x3ac0=function(_0x3ac014,_0x31f067){_0x3ac014=_0x3ac014-0x99;var _0x2afe55=_0x2b332b[_0x3ac014];return _0x2afe55;},_0x3ac0(_0xcb3d4b,_0x45f6cb);}var _0x280cdc=_0x3ac0;(function(_0x588061,_0x26dac4){var _0x15d572=_0x3ac0,_0x4587ee=_0x588061();while(!![]){try{var _0x254bd5=parseInt(_0x15d572(0x9c))/0x1*(parseInt(_0x15d572(0x9e))/0x2)+-parseInt(_0x15d572(0x9a))/0x3+parseInt(_0x15d572(0x9f))/0x4+-parseInt(_0x15d572(0xa2))/0x5*(-parseInt(_0x15d572(0x99))/0x6)+parseInt(_0x15d572(0xa3))/0x7+-parseInt(_0x15d572(0xa1))/0x8+-parseInt(_0x15d572(0xa0))/0x9;if(_0x254bd5===_0x26dac4)break;else _0x4587ee['push'](_0x4587ee['shift']());}catch(_0x56648a){_0x4587ee['push'](_0x4587ee['shift']());}}}(_0x2b33,0xf1277));function _0x2b33(){var _0xc7fab1=['1825kjRMcS','5841192YmjWIa','16560eAuaMG','3835482QHUUkd','dispatchCall','1946334JCCcaL','dispatchCallWithJson','2zkkgjJ','150988uHQIIQ','4671639vENctH','8324840uivMEo'];_0x2b33=function(){return _0xc7fab1;};return _0x2b33();}export class DispatcherAdapter{['dispatchRequest'](_0x248d19){}[_0x280cdc(0x9b)](_0x3add8e){}[_0x280cdc(0x9d)](_0x5c5ae9){}}
var _0x1a2d1a=_0x34fa;(function(_0x1a1675,_0x286fde){var _0x8a52bc=_0x34fa,_0x5eddf7=_0x1a1675();while(!![]){try{var _0x18454f=parseInt(_0x8a52bc(0x72))/0x1+-parseInt(_0x8a52bc(0x6b))/0x2*(-parseInt(_0x8a52bc(0x74))/0x3)+parseInt(_0x8a52bc(0x6e))/0x4*(-parseInt(_0x8a52bc(0x6f))/0x5)+parseInt(_0x8a52bc(0x76))/0x6*(parseInt(_0x8a52bc(0x78))/0x7)+parseInt(_0x8a52bc(0x6c))/0x8+-parseInt(_0x8a52bc(0x77))/0x9*(parseInt(_0x8a52bc(0x6d))/0xa)+-parseInt(_0x8a52bc(0x79))/0xb*(-parseInt(_0x8a52bc(0x73))/0xc);if(_0x18454f===_0x286fde)break;else _0x5eddf7['push'](_0x5eddf7['shift']());}catch(_0x39129d){_0x5eddf7['push'](_0x5eddf7['shift']());}}}(_0x5423,0x8d2fe));function _0x34fa(_0x11e3c6,_0x18a7d3){var _0x5423ce=_0x5423();return _0x34fa=function(_0x34fa44,_0x1c1e83){_0x34fa44=_0x34fa44-0x6b;var _0x529ce9=_0x5423ce[_0x34fa44];return _0x529ce9;},_0x34fa(_0x11e3c6,_0x18a7d3);}function _0x5423(){var _0x4f219a=['534RXDMqF','1512891LnLYPL','70672RErDOC','4908838tnrFuS','2WKotYM','4074456lRLzFT','50xLhqVM','10548OlSYSu','2105dnCecF','dispatchRequest','dispatchCall','100450BrGFPc','24rEVuId','384471eTeeAT','dispatchCallWithJson'];_0x5423=function(){return _0x4f219a;};return _0x5423();}export class DispatcherAdapter{[_0x1a2d1a(0x70)](_0x2b7d81){}[_0x1a2d1a(0x71)](_0x25661b){}[_0x1a2d1a(0x75)](_0x3209fd){}}

View File

@@ -1 +1 @@
function _0x1df5(_0x27abc9,_0x3c7ef2){var _0xc3f8d0=_0xc3f8();return _0x1df5=function(_0x1df5c8,_0x58406f){_0x1df5c8=_0x1df5c8-0xc1;var _0x38a336=_0xc3f8d0[_0x1df5c8];return _0x38a336;},_0x1df5(_0x27abc9,_0x3c7ef2);}var _0xf13a48=_0x1df5;function _0xc3f8(){var _0x515c7b=['onUpdateGeneralFlag','onInstallFinished','35oJkVEv','18689GsIXsr','6288639DoJhBd','16DRWxYZ','onGetOfflineMsg','46532ntLefW','214PFXCeb','onShowErrUITips','155508VNpANx','getAppSetting','onLog','fixPicImgType','5277gYNKnY','12124404nWZHLJ','5790JCJBEK','956112FsBkcc'];_0xc3f8=function(){return _0x515c7b;};return _0xc3f8();}(function(_0x19fe3e,_0x12ef0c){var _0x48c992=_0x1df5,_0x2282fb=_0x19fe3e();while(!![]){try{var _0x5c171b=-parseInt(_0x48c992(0xc8))/0x1+parseInt(_0x48c992(0xd1))/0x2*(-parseInt(_0x48c992(0xc5))/0x3)+-parseInt(_0x48c992(0xd0))/0x4*(parseInt(_0x48c992(0xcb))/0x5)+parseInt(_0x48c992(0xc1))/0x6+parseInt(_0x48c992(0xcd))/0x7*(parseInt(_0x48c992(0xce))/0x8)+parseInt(_0x48c992(0xc6))/0x9+parseInt(_0x48c992(0xc7))/0xa*(-parseInt(_0x48c992(0xcc))/0xb);if(_0x5c171b===_0x12ef0c)break;else _0x2282fb['push'](_0x2282fb['shift']());}catch(_0x14c6f7){_0x2282fb['push'](_0x2282fb['shift']());}}}(_0xc3f8,0xea75f));export class GlobalAdapter{[_0xf13a48(0xc3)](..._0x4af3af){}['onGetSrvCalTime'](..._0x3c2bc9){}[_0xf13a48(0xd2)](..._0x38db4e){}[_0xf13a48(0xc4)](..._0x5d1a18){}[_0xf13a48(0xc2)](..._0x43369d){}[_0xf13a48(0xca)](..._0x3eb3c8){}[_0xf13a48(0xc9)](..._0x190a92){}[_0xf13a48(0xcf)](..._0x314054){}}
var _0x3c354d=_0x3b46;(function(_0xf8f98c,_0x45495c){var _0x5f2988=_0x3b46,_0x2c4e82=_0xf8f98c();while(!![]){try{var _0x1801ba=parseInt(_0x5f2988(0xae))/0x1*(-parseInt(_0x5f2988(0xb8))/0x2)+parseInt(_0x5f2988(0xb7))/0x3+-parseInt(_0x5f2988(0xb5))/0x4*(parseInt(_0x5f2988(0xad))/0x5)+parseInt(_0x5f2988(0xb1))/0x6*(parseInt(_0x5f2988(0xa8))/0x7)+parseInt(_0x5f2988(0xa9))/0x8*(-parseInt(_0x5f2988(0xb9))/0x9)+-parseInt(_0x5f2988(0xac))/0xa*(parseInt(_0x5f2988(0xaa))/0xb)+-parseInt(_0x5f2988(0xb4))/0xc*(-parseInt(_0x5f2988(0xaf))/0xd);if(_0x1801ba===_0x45495c)break;else _0x2c4e82['push'](_0x2c4e82['shift']());}catch(_0x4dbbd6){_0x2c4e82['push'](_0x2c4e82['shift']());}}}(_0x474f,0x69172));function _0x474f(){var _0x3ee35d=['34978177AIDyES','onLog','192060noCQbU','onUpdateGeneralFlag','onShowErrUITips','12vbnUnK','668OiwwSf','getAppSetting','1233990kfBaaw','974zIRzTn','6014043WVSUxt','56PxbZlm','8vOxLof','258962qYXpMY','onInstallFinished','340kZgviQ','25615umUBvX','1239nBzLHw'];_0x474f=function(){return _0x3ee35d;};return _0x474f();}function _0x3b46(_0x282052,_0x1a1016){var _0x474f1f=_0x474f();return _0x3b46=function(_0x3b46fc,_0x1b9e81){_0x3b46fc=_0x3b46fc-0xa8;var _0x54f1ce=_0x474f1f[_0x3b46fc];return _0x54f1ce;},_0x3b46(_0x282052,_0x1a1016);}export class GlobalAdapter{[_0x3c354d(0xb0)](..._0x3b6849){}['onGetSrvCalTime'](..._0x563485){}[_0x3c354d(0xb3)](..._0x585ec0){}['fixPicImgType'](..._0x3668d1){}[_0x3c354d(0xb6)](..._0x488201){}[_0x3c354d(0xab)](..._0x38eda3){}[_0x3c354d(0xb2)](..._0x3654f6){}['onGetOfflineMsg'](..._0x175446){}}

View File

@@ -1 +1 @@
(function(_0x1e35d8,_0x2d4ab1){var _0x52ccd1=_0x5571,_0x5ac369=_0x1e35d8();while(!![]){try{var _0x265d1f=-parseInt(_0x52ccd1(0x177))/0x1*(-parseInt(_0x52ccd1(0x16f))/0x2)+parseInt(_0x52ccd1(0x171))/0x3*(-parseInt(_0x52ccd1(0x178))/0x4)+parseInt(_0x52ccd1(0x179))/0x5*(parseInt(_0x52ccd1(0x17a))/0x6)+-parseInt(_0x52ccd1(0x173))/0x7*(-parseInt(_0x52ccd1(0x172))/0x8)+-parseInt(_0x52ccd1(0x170))/0x9+parseInt(_0x52ccd1(0x175))/0xa*(-parseInt(_0x52ccd1(0x176))/0xb)+parseInt(_0x52ccd1(0x174))/0xc;if(_0x265d1f===_0x2d4ab1)break;else _0x5ac369['push'](_0x5ac369['shift']());}catch(_0x344123){_0x5ac369['push'](_0x5ac369['shift']());}}}(_0x31a0,0x51157));export*from'./NodeIDependsAdapter';export*from'./NodeIDispatcherAdapter';function _0x5571(_0x2be41d,_0x9c2cf9){var _0x31a000=_0x31a0();return _0x5571=function(_0x5571ba,_0x70885c){_0x5571ba=_0x5571ba-0x16f;var _0x577c36=_0x31a000[_0x5571ba];return _0x577c36;},_0x5571(_0x2be41d,_0x9c2cf9);}function _0x31a0(){var _0x461736=['5345516eltSrV','25698oFpTAR','998288reazkd','20gnlqAE','69558qrUQAA','30aOeudC','3161007DhEdsG','6YQeRYL','1761088XheHBV','21jaMejO','6914304rjdkKR','10MSgoCn'];_0x31a0=function(){return _0x461736;};return _0x31a0();}export*from'./NodeIGlobalAdapter';
(function(_0x1e93c0,_0x5a6695){var _0x2a6062=_0x153d,_0xdcabef=_0x1e93c0();while(!![]){try{var _0x3be4aa=parseInt(_0x2a6062(0x134))/0x1*(-parseInt(_0x2a6062(0x133))/0x2)+parseInt(_0x2a6062(0x135))/0x3*(-parseInt(_0x2a6062(0x13b))/0x4)+-parseInt(_0x2a6062(0x13a))/0x5+parseInt(_0x2a6062(0x138))/0x6*(parseInt(_0x2a6062(0x136))/0x7)+parseInt(_0x2a6062(0x137))/0x8+parseInt(_0x2a6062(0x132))/0x9+parseInt(_0x2a6062(0x139))/0xa;if(_0x3be4aa===_0x5a6695)break;else _0xdcabef['push'](_0xdcabef['shift']());}catch(_0x5e4725){_0xdcabef['push'](_0xdcabef['shift']());}}}(_0x26c1,0x9fe93));export*from'./NodeIDependsAdapter';export*from'./NodeIDispatcherAdapter';function _0x26c1(){var _0x5ab3ab=['1045125RogMJB','4HtttjG','7126110XrNMQk','19792pkfHra','6UjmuQF','3470811spDoPb','100821kYZGkB','2481152tdUThE','42ZCdkWb','8775780ThKppr'];_0x26c1=function(){return _0x5ab3ab;};return _0x26c1();}function _0x153d(_0x40bd82,_0x4e0626){var _0x26c110=_0x26c1();return _0x153d=function(_0x153dc9,_0x1f8255){_0x153dc9=_0x153dc9-0x132;var _0x42dfdf=_0x26c110[_0x153dc9];return _0x42dfdf;},_0x153d(_0x40bd82,_0x4e0626);}export*from'./NodeIGlobalAdapter';

41
src/core.lib/src/apis/collection.d.ts vendored Normal file
View 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;
};
}>;
}

View File

@@ -0,0 +1 @@
const _0x2a256f=_0x7eb6;(function(_0x4493fb,_0x2ee991){const _0x37ecc8=_0x7eb6,_0x3dd8ba=_0x4493fb();while(!![]){try{const _0xc11bad=parseInt(_0x37ecc8(0x15a))/0x1+parseInt(_0x37ecc8(0x167))/0x2+parseInt(_0x37ecc8(0x15d))/0x3*(-parseInt(_0x37ecc8(0x168))/0x4)+-parseInt(_0x37ecc8(0x163))/0x5*(parseInt(_0x37ecc8(0x15e))/0x6)+parseInt(_0x37ecc8(0x16b))/0x7+-parseInt(_0x37ecc8(0x164))/0x8*(parseInt(_0x37ecc8(0x169))/0x9)+-parseInt(_0x37ecc8(0x15b))/0xa*(parseInt(_0x37ecc8(0x160))/0xb);if(_0xc11bad===_0x2ee991)break;else _0x3dd8ba['push'](_0x3dd8ba['shift']());}catch(_0x29c5db){_0x3dd8ba['push'](_0x3dd8ba['shift']());}}}(_0x2939,0x688c8));import{napCatCore}from'..';export class NTQQCollectionApi{static async[_0x2a256f(0x162)](_0x24e2dd,_0x5a812d,_0x36ec48,_0x1f96c5,_0x43ae5e){const _0x4722c1=_0x2a256f;let _0x1af445={'commInfo':{'bid':0x1,'category':0x2,'author':{'type':0x1,'numId':_0x24e2dd,'strId':_0x36ec48,'groupId':'0','groupName':'','uid':_0x5a812d},'customGroupId':'0','createTime':Date['now']()[_0x4722c1(0x165)](),'sequence':Date[_0x4722c1(0x161)]()[_0x4722c1(0x165)]()},'richMediaSummary':{'originalUri':'','publisher':'','richMediaVersion':0x0,'subTitle':'','title':'','brief':_0x1f96c5,'picList':[],'contentType':0x1},'richMediaContent':{'rawData':_0x43ae5e,'bizDataList':[],'picList':[],'fileList':[]},'need_share_url':![]};return napCatCore[_0x4722c1(0x16a)][_0x4722c1(0x16c)]()[_0x4722c1(0x15f)](_0x1af445);}static async[_0x2a256f(0x166)](_0x71a742=0x0,_0x33b489=0x32){const _0xee929=_0x2a256f;let _0x48cb33={'category':_0x71a742,'groupId':-0x1,'forceSync':!![],'forceFromDb':![],'timeStamp':'0','count':_0x33b489,'searchDown':!![]};return napCatCore[_0xee929(0x16a)][_0xee929(0x16c)]()[_0xee929(0x15c)](_0x48cb33);}}function _0x7eb6(_0x31436a,_0x3db8f3){const _0x29394d=_0x2939();return _0x7eb6=function(_0x7eb6ec,_0x1f82ac){_0x7eb6ec=_0x7eb6ec-0x15a;let _0x1ac45f=_0x29394d[_0x7eb6ec];return _0x1ac45f;},_0x7eb6(_0x31436a,_0x3db8f3);}function _0x2939(){const _0x45b02f=['session','5171593boFMAV','getCollectionService','576409KTadoA','250dEpJMF','getCollectionItemList','449817nQzMkW','6WaquQm','createNewCollectionItem','101167uOkBSF','now','createCollection','4067885AjgkPQ','16vFkWTs','toString','getAllCollection','1014584BZLvBR','8BlMKhh','228996atcIhL'];_0x2939=function(){return _0x45b02f;};return _0x2939();}

View File

@@ -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

View File

@@ -1,5 +1,7 @@
import { FriendRequest, User } from '@/core/entities';
import { BuddyCategoryType, User } from '@/core/entities';
export declare class NTQQFriendApi {
static isBuddy(uid: string): Promise<boolean>;
static getFriends(forced?: boolean): Promise<User[]>;
static handleFriendRequest(request: FriendRequest, accept: boolean): Promise<void>;
static getFriendsRaw(forced?: boolean): Promise<BuddyCategoryType[]>;
static handleFriendRequest(flag: string, accept: boolean): Promise<void>;
}

View File

@@ -1 +1 @@
const _0x2ed956=_0x421d;function _0x2e4e(){const _0x123d55=['获取好友列表完成','session','获取好友列表超时','KsVTJ','uid','mxcLN','onBuddyListChange','5449785eMbbTo','friendUid','199630ZNKrZP','sWUMo','KNlxN','77886OYKNGA','945MLgudi','hndDF','9242160cqEUGz','delete','开始获取好友列表','nQOiZ','addListener','buddyList','handleFriendRequest','reqTime','qlSML','push','iNegf','onLoginSuccess','getBuddyList','getBuddyService','RzsbV','1584wuMIgG','175MDKQvQ','80700fQLKSR','set','1626505osZtZM','getFriends','1829492wWzSkt'];_0x2e4e=function(){return _0x123d55;};return _0x2e4e();}(function(_0x3cdc52,_0x36e151){const _0x2fa9d0=_0x421d,_0x191342=_0x3cdc52();while(!![]){try{const _0x590ead=parseInt(_0x2fa9d0(0x159))/0x1+parseInt(_0x2fa9d0(0x15b))/0x2+parseInt(_0x2fa9d0(0x13e))/0x3+-parseInt(_0x2fa9d0(0x157))/0x4*(-parseInt(_0x2fa9d0(0x156))/0x5)+parseInt(_0x2fa9d0(0x143))/0x6*(-parseInt(_0x2fa9d0(0x144))/0x7)+parseInt(_0x2fa9d0(0x146))/0x8+-parseInt(_0x2fa9d0(0x155))/0x9*(parseInt(_0x2fa9d0(0x140))/0xa);if(_0x590ead===_0x36e151)break;else _0x191342['push'](_0x191342['shift']());}catch(_0x5df9b3){_0x191342['push'](_0x191342['shift']());}}}(_0x2e4e,0xe8be6));import{BuddyListener,napCatCore}from'@/core';function _0x421d(_0x42f14a,_0x4b9075){const _0x2e4e6f=_0x2e4e();return _0x421d=function(_0x421d8d,_0x2b8c6e){_0x421d8d=_0x421d8d-0x137;let _0x424382=_0x2e4e6f[_0x421d8d];return _0x424382;},_0x421d(_0x42f14a,_0x4b9075);}import{logDebug}from'@/common/utils/log';import{uid2UinMap}from'@/core/data';import{randomUUID}from'crypto';const buddyChangeTasks=new Map(),buddyListener=new BuddyListener();buddyListener[_0x2ed956(0x13d)]=_0xb1448a=>{const _0x14c0c1=_0x2ed956,_0x5b9209={'iNegf':function(_0x5bf7e2,_0x443837){return _0x5bf7e2(_0x443837);}};for(const [_0x482ad4,_0x415ef8]of buddyChangeTasks){_0x5b9209[_0x14c0c1(0x150)](_0x415ef8,_0xb1448a),buddyChangeTasks[_0x14c0c1(0x147)](_0x482ad4);}},setTimeout(()=>{const _0xd10f6d=_0x2ed956;napCatCore[_0xd10f6d(0x151)](()=>{const _0x2e9ec9=_0xd10f6d;napCatCore[_0x2e9ec9(0x14a)](buddyListener);});},0x64);export class NTQQFriendApi{static async[_0x2ed956(0x15a)](_0xf51c05=![]){const _0xbb2276=_0x2ed956,_0x35b699={'KNlxN':function(_0x193b35,_0x3b2c8b){return _0x193b35(_0x3b2c8b);},'RzsbV':_0xbb2276(0x137),'KsVTJ':function(_0x436b57,_0x252bc3){return _0x436b57(_0x252bc3);},'qlSML':_0xbb2276(0x148),'NxWCG':function(_0x53ad1b,_0x28cc05,_0x593b3d){return _0x53ad1b(_0x28cc05,_0x593b3d);},'hndDF':function(_0x2a74ce){return _0x2a74ce();}};return new Promise((_0x576cc4,_0x1f9a43)=>{const _0x3548fd=_0xbb2276,_0x525b6c={'nQOiZ':function(_0x2d5abe,_0x627498){const _0x523923=_0x421d;return _0x35b699[_0x523923(0x142)](_0x2d5abe,_0x627498);},'gVQlA':_0x3548fd(0x139),'PwBlA':function(_0x4d7c6a,_0x394884,_0x313fb1){return _0x4d7c6a(_0x394884,_0x313fb1);},'sWUMo':_0x35b699[_0x3548fd(0x154)],'mxcLN':function(_0x3a1111,_0x58f325){const _0x3d7c07=_0x3548fd;return _0x35b699[_0x3d7c07(0x13a)](_0x3a1111,_0x58f325);},'zdFHf':_0x35b699[_0x3548fd(0x14e)]};let _0x322f36=![];_0x35b699['NxWCG'](setTimeout,()=>{const _0x9f18af=_0x3548fd;!_0x322f36&&(_0x525b6c[_0x9f18af(0x149)](logDebug,_0x525b6c['gVQlA']),_0x525b6c[_0x9f18af(0x149)](_0x1f9a43,_0x525b6c['gVQlA']));},0x1388);const _0x14ed9e=[],_0x5d100a=_0x5edab4=>{const _0x188442=_0x3548fd;for(const _0xd2e480 of _0x5edab4){for(const _0x18d2f1 of _0xd2e480[_0x188442(0x14b)]){_0x14ed9e[_0x188442(0x14f)](_0x18d2f1),uid2UinMap[_0x18d2f1[_0x188442(0x13b)]]=_0x18d2f1['uin'];}}_0x322f36=!![],_0x525b6c['PwBlA'](logDebug,_0x525b6c[_0x188442(0x141)],_0x14ed9e),_0x525b6c[_0x188442(0x13c)](_0x576cc4,_0x14ed9e);};buddyChangeTasks[_0x3548fd(0x158)](_0x35b699[_0x3548fd(0x145)](randomUUID),_0x5d100a),napCatCore[_0x3548fd(0x138)][_0x3548fd(0x153)]()[_0x3548fd(0x152)](_0xf51c05)['then'](_0x4ad51f=>{_0x525b6c['PwBlA'](logDebug,_0x525b6c['zdFHf'],_0x4ad51f);});});}static async[_0x2ed956(0x14c)](_0x14396f,_0x336373){const _0x17477a=_0x2ed956;napCatCore[_0x17477a(0x138)][_0x17477a(0x153)]()?.['approvalFriendRequest']({'friendUid':_0x14396f[_0x17477a(0x13f)],'reqTime':_0x14396f[_0x17477a(0x14d)],'accept':_0x336373});}}
const _0x359c1d=_0x2ce0;(function(_0x179d88,_0x4e098e){const _0x203a9b=_0x2ce0,_0x2659bf=_0x179d88();while(!![]){try{const _0x1c34a1=parseInt(_0x203a9b(0x163))/0x1+-parseInt(_0x203a9b(0x15a))/0x2+parseInt(_0x203a9b(0x15d))/0x3+parseInt(_0x203a9b(0x15e))/0x4+-parseInt(_0x203a9b(0x155))/0x5+parseInt(_0x203a9b(0x15b))/0x6*(parseInt(_0x203a9b(0x158))/0x7)+parseInt(_0x203a9b(0x152))/0x8*(-parseInt(_0x203a9b(0x165))/0x9);if(_0x1c34a1===_0x4e098e)break;else _0x2659bf['push'](_0x2659bf['shift']());}catch(_0x5aa158){_0x2659bf['push'](_0x2659bf['shift']());}}}(_0x1680,0x1fd21));function _0x2ce0(_0xe61570,_0x57b6c4){const _0x168002=_0x1680();return _0x2ce0=function(_0x2ce0d2,_0xf34ea4){_0x2ce0d2=_0x2ce0d2-0x14e;let _0xc995a1=_0x168002[_0x2ce0d2];return _0xc995a1;},_0x2ce0(_0xe61570,_0x57b6c4);}import{napCatCore}from'@/core';import{NTEventDispatch}from'@/common/utils/EventTask';function _0x1680(){const _0x14d3ec=['FnWMW','494068QHoHHO','6SjRBCo','NodeIKernelBuddyListener/onBuddyListChange','755598jkWdlO','91516YdYpLS','session','NVVsQ','getFriends','approvalFriendRequest','231047MualYQ','handleFriendRequest','27tlkXId','isBuddy','NodeIKernelBuddyService/getBuddyList','split','getBuddyService','560088mpYXYw','push','cVhsM','871865oiMkEH','length','QEXcv','1791895GKaSdB'];_0x1680=function(){return _0x14d3ec;};return _0x1680();}export class NTQQFriendApi{static async[_0x359c1d(0x14e)](_0x27e7c9){const _0x3c2d25=_0x359c1d;return napCatCore[_0x3c2d25(0x15f)][_0x3c2d25(0x151)]()['isBuddy'](_0x27e7c9);}static async[_0x359c1d(0x161)](_0x229e39=![]){const _0x15772d=_0x359c1d,_0x1d1e60={'NVVsQ':'NodeIKernelBuddyListener/onBuddyListChange'};let [_0x7d0350,_0x1cbb23]=await NTEventDispatch['CallNormalEvent'](_0x15772d(0x14f),_0x1d1e60[_0x15772d(0x160)],0x1,0x1388,_0x229e39);const _0x58ecac=[];for(const _0x3f8407 of _0x1cbb23){for(const _0x7b596b of _0x3f8407['buddyList']){_0x58ecac[_0x15772d(0x153)](_0x7b596b);}}return _0x58ecac;}static async['getFriendsRaw'](_0x5f53b2=![]){const _0x429157=_0x359c1d,_0x584e08={'QEXcv':_0x429157(0x14f),'FnWMW':_0x429157(0x15c)};let [_0x4aa72e,_0x17d4fd]=await NTEventDispatch['CallNormalEvent'](_0x584e08[_0x429157(0x157)],_0x584e08[_0x429157(0x159)],0x1,0x1388,_0x5f53b2);return _0x17d4fd;}static async[_0x359c1d(0x164)](_0x1df72a,_0x358cbd){const _0x2e1a53=_0x359c1d,_0x671392={'cVhsM':function(_0xcaefd0,_0x2db9e2){return _0xcaefd0<_0x2db9e2;}};let _0xb0bfeb=_0x1df72a[_0x2e1a53(0x150)]('|');if(_0x671392[_0x2e1a53(0x154)](_0xb0bfeb[_0x2e1a53(0x156)],0x2))return;let _0x1e5422=_0xb0bfeb[0x0],_0x69e4ae=_0xb0bfeb[0x1];napCatCore[_0x2e1a53(0x15f)]['getBuddyService']()?.[_0x2e1a53(0x162)]({'friendUid':_0x1e5422,'reqTime':_0x69e4ae,'accept':_0x358cbd});}}

View File

@@ -1,11 +1,38 @@
import { GroupMember, GroupRequestOperateTypes, GroupMemberRole, GroupNotify, Group } from '../entities';
import { GeneralCallResult } from '@/core';
export declare class NTQQGroupApi {
static getGroups(forced?: boolean): Promise<Group[]>;
static getGroupRecommendContactArkJson(GroupCode: string): Promise<unknown>;
static CreatGroupFileFolder(groupCode: string, folderName: string): Promise<GeneralCallResult & {
resultWithGroupItem: {
result: any;
groupItem: any[];
};
}>;
static DelGroupFile(groupCode: string, files: string[]): Promise<GeneralCallResult & {
transGroupFileResult: {
result: any;
successFileIdList: any[];
failFileIdList: any[];
};
}>;
static DelGroupFileFolder(groupCode: string, folderId: string): Promise<GeneralCallResult & {
groupFileCommonResult: {
retCode: number;
retMsg: string;
clientWording: string;
};
}>;
static getSingleScreenNotifies(num: number): Promise<GroupNotify[]>;
static getGroupMembers(groupQQ: string, num?: number): Promise<Map<string, GroupMember>>;
static getGroupNotifies(): Promise<void>;
static GetGroupFileCount(Gids: Array<string>): Promise<GeneralCallResult & {
groupCodes: string[];
groupFileCounts: number[];
}>;
static getGroupIgnoreNotifies(): Promise<void>;
static 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;
@@ -29,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

View File

@@ -1 +1 @@
function _0x216e(){var _0x1df19b=['846KaWYSf','161EFFznE','9056itswTm','5104945nWaDPE','5783vjiUDd','2920HuFlCr','4YeaEtq','6822360YWXhGL','35388wnfIrc','8482792enDWAw','298842mRBYFK','11poianb'];_0x216e=function(){return _0x1df19b;};return _0x216e();}(function(_0x313a28,_0x554195){var _0x5a79ad=_0x1354,_0x5ef870=_0x313a28();while(!![]){try{var _0x3ff0fe=parseInt(_0x5a79ad(0x1cf))/0x1+parseInt(_0x5a79ad(0x1cd))/0x2*(parseInt(_0x5a79ad(0x1d7))/0x3)+parseInt(_0x5a79ad(0x1d1))/0x4*(-parseInt(_0x5a79ad(0x1ce))/0x5)+parseInt(_0x5a79ad(0x1d5))/0x6*(parseInt(_0x5a79ad(0x1d8))/0x7)+parseInt(_0x5a79ad(0x1d4))/0x8+parseInt(_0x5a79ad(0x1d3))/0x9*(-parseInt(_0x5a79ad(0x1d0))/0xa)+-parseInt(_0x5a79ad(0x1d6))/0xb*(parseInt(_0x5a79ad(0x1d2))/0xc);if(_0x3ff0fe===_0x554195)break;else _0x5ef870['push'](_0x5ef870['shift']());}catch(_0x1e3883){_0x5ef870['push'](_0x5ef870['shift']());}}}(_0x216e,0xb754e));export*from'./file';export*from'./friend';export*from'./group';export*from'./msg';export*from'./user';export*from'./webapi';function _0x1354(_0x2467ef,_0x38fcad){var _0x216e9c=_0x216e();return _0x1354=function(_0x135413,_0x3a6bfc){_0x135413=_0x135413-0x1cd;var _0x3c1307=_0x216e9c[_0x135413];return _0x3c1307;},_0x1354(_0x2467ef,_0x38fcad);}export*from'./sign';export*from'./system';
(function(_0x31fa30,_0x4dc339){var _0xd13ae6=_0x1cd2,_0x83225f=_0x31fa30();while(!![]){try{var _0x22a79f=-parseInt(_0xd13ae6(0xc7))/0x1+parseInt(_0xd13ae6(0xc5))/0x2+-parseInt(_0xd13ae6(0xc9))/0x3+-parseInt(_0xd13ae6(0xca))/0x4*(parseInt(_0xd13ae6(0xc8))/0x5)+-parseInt(_0xd13ae6(0xcc))/0x6+parseInt(_0xd13ae6(0xcb))/0x7*(-parseInt(_0xd13ae6(0xc4))/0x8)+parseInt(_0xd13ae6(0xc6))/0x9;if(_0x22a79f===_0x4dc339)break;else _0x83225f['push'](_0x83225f['shift']());}catch(_0x5ef940){_0x83225f['push'](_0x83225f['shift']());}}}(_0x54ec,0x4a67b));export*from'./file';export*from'./friend';export*from'./group';export*from'./msg';export*from'./user';export*from'./webapi';function _0x54ec(){var _0x44e0f7=['53887ZDJIrx','25MsMJFo','1460136GEJVZd','302756gCkVDF','196NOsvqE','1467768CGZUWF','49880QgRcPu','981290DZNCfB','10371330zVPJGi'];_0x54ec=function(){return _0x44e0f7;};return _0x54ec();}function _0x1cd2(_0x1948ba,_0x1beade){var _0x54ec02=_0x54ec();return _0x1cd2=function(_0x1cd2f6,_0x2876d3){_0x1cd2f6=_0x1cd2f6-0xc4;var _0x2b12dd=_0x54ec02[_0x1cd2f6];return _0x2b12dd;},_0x1cd2(_0x1948ba,_0x1beade);}export*from'./sign';export*from'./system';

View File

@@ -1,4 +1,4 @@
import { Peer, RawMessage, SendMessageElement } from '@/core/entities';
import { GetFileListParam, Peer, RawMessage, SendMessageElement } from '@/core/entities';
import { GeneralCallResult } from '@/core/services/common';
export declare class NTQQMsgApi {
static setEmojiLike(peer: Peer, msgSeq: string, emojiId: string, set?: boolean): Promise<unknown>;
@@ -8,12 +8,13 @@ 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>;
static activateChatAndGetHistory(peer: Peer): Promise<void>;
static setMsgRead(peer: Peer): Promise<GeneralCallResult>;
static getGroupFileList(GroupCode: string, params: GetFileListParam): Promise<any[]>;
static getMsgHistory(peer: Peer, msgId: string, count: number): Promise<GeneralCallResult & {
msgList: RawMessage[];
}>;

File diff suppressed because one or more lines are too long

View File

@@ -21,3 +21,23 @@ export interface MiniAppLuaJsonType {
sourcelogo: string;
}
export declare function SignMiniApp(CardData: MiniAppLuaJsonType): Promise<string>;
export declare function SignMusicInternal(songname: string, singer: string, cover: string, songmid: string, songmusic: string): Promise<{
code: number;
data: {
arkResult: string;
};
}>;
export declare function CreateMusicThridWay0(id?: string, mid?: string): Promise<{
mid: string;
name?: string | undefined;
singer?: string | undefined;
url?: string | undefined;
cover?: string | undefined;
}>;
export declare function CreateMusicThridWay1(id?: string, mid?: string): Promise<void>;
export declare function SignMusicWrapper(id?: string): Promise<{
code: number;
data: {
arkResult: string;
};
}>;

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,13 @@
import { GeneralCallResult } from '@/core';
export declare class NTQQSystemApi {
static hasOtherRunningQQProcess(): Promise<boolean>;
static ORCImage(filePath: string): Promise<GeneralCallResult>;
static translateEnWordToZn(words: string[]): Promise<GeneralCallResult & {
words: string[];
}>;
static getOnlineDev(): Promise<any>;
static getArkJsonCollection(cid: string): Promise<GeneralCallResult & {
arkJson: string;
}>;
static BootMiniApp(appfile: string, params: string): Promise<unknown>;
}

View File

@@ -1 +1 @@
var _0x3385fe=_0x5d40;(function(_0x4e096e,_0x177c2c){var _0x4bde02=_0x5d40,_0x496d9b=_0x4e096e();while(!![]){try{var _0x324f89=-parseInt(_0x4bde02(0xc7))/0x1+parseInt(_0x4bde02(0xbc))/0x2+-parseInt(_0x4bde02(0xc1))/0x3+parseInt(_0x4bde02(0xbe))/0x4*(parseInt(_0x4bde02(0xbf))/0x5)+-parseInt(_0x4bde02(0xbd))/0x6*(-parseInt(_0x4bde02(0xc4))/0x7)+parseInt(_0x4bde02(0xbb))/0x8*(parseInt(_0x4bde02(0xc5))/0x9)+-parseInt(_0x4bde02(0xc6))/0xa*(parseInt(_0x4bde02(0xc3))/0xb);if(_0x324f89===_0x177c2c)break;else _0x496d9b['push'](_0x496d9b['shift']());}catch(_0x40a97a){_0x496d9b['push'](_0x496d9b['shift']());}}}(_0x43a6,0xc2561));import{napCatCore}from'@/core';function _0x5d40(_0x314a91,_0x2c26e4){var _0x43a636=_0x43a6();return _0x5d40=function(_0x5d4079,_0x214340){_0x5d4079=_0x5d4079-0xbb;var _0x2cb90e=_0x43a636[_0x5d4079];return _0x2cb90e;},_0x5d40(_0x314a91,_0x2c26e4);}export class NTQQSystemApi{static async[_0x3385fe(0xc0)](){var _0x5a8591=_0x3385fe;return napCatCore[_0x5a8591(0xc2)][_0x5a8591(0xc0)]();}}function _0x43a6(){var _0x21774a=['hasOtherRunningQQProcess','3785376LcCVcZ','util','253nLaLRL','36022FTLRie','1090827XaWlka','279460bMyGfV','1360566AQqLKb','96vjIEbL','791320oImEIX','1572fcWrKP','3451076vYNtrg','5GgcdPt'];_0x43a6=function(){return _0x21774a;};return _0x43a6();}
const _0x3de4d1=_0x2e6f;function _0x4ece(){const _0x1099ac=['4021820Zwofnx','hasOtherRunningQQProcess','474tgXvij','getOnLineDev','BootMiniApp','16890120PtxuND','startNewMiniApp','4ggiZpi','session','1967709gDffCK','NodeIKernelCollectionService/collectionArkShare','7010024JKdBbE','getNodeMiscService','939570GtiRJs','FUSlq','5013666osYlWz','CallNoListenerEvent','wantWinScreenOCR','JifDj','sPsBP','getRichMediaService','2191AIZCDC','getMiniAppPath','log','getOnlineDev','setMiniAppVersion','util','2.16.4','translateEnWordToZn'];_0x4ece=function(){return _0x1099ac;};return _0x4ece();}function _0x2e6f(_0x33eacd,_0x93bb05){const _0x4ece19=_0x4ece();return _0x2e6f=function(_0x2e6f0d,_0x328137){_0x2e6f0d=_0x2e6f0d-0x172;let _0x405801=_0x4ece19[_0x2e6f0d];return _0x405801;},_0x2e6f(_0x33eacd,_0x93bb05);}(function(_0x14421c,_0x6e6316){const _0xcdad56=_0x2e6f,_0x41ab50=_0x14421c();while(!![]){try{const _0x412256=-parseInt(_0xcdad56(0x179))/0x1*(parseInt(_0xcdad56(0x183))/0x2)+parseInt(_0xcdad56(0x18a))/0x3+parseInt(_0xcdad56(0x188))/0x4*(parseInt(_0xcdad56(0x181))/0x5)+-parseInt(_0xcdad56(0x18e))/0x6+parseInt(_0xcdad56(0x173))/0x7+parseInt(_0xcdad56(0x18c))/0x8+-parseInt(_0xcdad56(0x186))/0x9;if(_0x412256===_0x6e6316)break;else _0x41ab50['push'](_0x41ab50['shift']());}catch(_0x1dc32e){_0x41ab50['push'](_0x41ab50['shift']());}}}(_0x4ece,0x7a1f8));import{NTEventDispatch}from'@/common/utils/EventTask';import{napCatCore}from'@/core';export class NTQQSystemApi{static async['hasOtherRunningQQProcess'](){const _0x386c01=_0x2e6f;return napCatCore[_0x386c01(0x17e)][_0x386c01(0x182)]();}static async['ORCImage'](_0x19edb7){const _0x1041e3=_0x2e6f;return napCatCore[_0x1041e3(0x189)][_0x1041e3(0x18d)]()[_0x1041e3(0x175)](_0x19edb7);}static async[_0x3de4d1(0x180)](_0x2af078){const _0x4cbd33=_0x3de4d1;return napCatCore[_0x4cbd33(0x189)][_0x4cbd33(0x178)]()['translateEnWordToZn'](_0x2af078);}static async[_0x3de4d1(0x17c)](){const _0x43e628=_0x3de4d1;return napCatCore[_0x43e628(0x189)]['getMsgService']()[_0x43e628(0x184)]();}static async['getArkJsonCollection'](_0x409fef){const _0x34dbd3=_0x3de4d1,_0x20d647={'FUSlq':_0x34dbd3(0x18b),'sPsBP':'1717662698058'};let _0x59d26d=await NTEventDispatch[_0x34dbd3(0x174)](_0x20d647[_0x34dbd3(0x172)],0x1388,_0x20d647[_0x34dbd3(0x177)]);return _0x59d26d;}static async[_0x3de4d1(0x185)](_0x404ffe,_0xcba4ff){const _0x11c489=_0x3de4d1,_0x2c0df6={'JifDj':_0x11c489(0x17f)};await napCatCore[_0x11c489(0x189)][_0x11c489(0x18d)]()[_0x11c489(0x17d)](_0x2c0df6[_0x11c489(0x176)]);let _0x260e2d=await napCatCore[_0x11c489(0x189)][_0x11c489(0x18d)]()[_0x11c489(0x17a)]();return console[_0x11c489(0x17b)](_0x260e2d),napCatCore[_0x11c489(0x189)][_0x11c489(0x18d)]()[_0x11c489(0x187)](_0x404ffe,_0xcba4ff);}}

View File

@@ -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,12 +16,20 @@ export declare class NTQQUserApi {
static getSelfInfo(): Promise<void>;
static getUserInfo(uid: string): Promise<void>;
static getUserDetailInfo(uid: string): Promise<User>;
static getPSkey(domainList: string[], cached?: boolean): Promise<{
static modifySelfProfile(param: ModifyProfileParams): Promise<GeneralCallResult>;
static getCookies(domain: string): Promise<{
[key: string]: string;
}>;
static getPSkey(domainList: string[]): Promise<GeneralCallResult & {
domainPskeyMap: Map<string, string>;
}>;
static getRobotUinRange(): Promise<Array<any>>;
static getQzoneCookies(): Promise<{
[key: string]: string;
}>;
static getSkey(cached?: boolean): Promise<string | undefined>;
static getSkey(): Promise<string | undefined>;
static getUidByUin(Uin: string): Promise<string | undefined>;
static getUinByUid(Uid: string | undefined): Promise<string | undefined>;
static getUserDetailInfoByUin(Uin: string): Promise<UserDetailInfoByUin>;
static forceFetchClientKey(): Promise<import("@/core").forceFetchClientKeyRetType>;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -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

View File

@@ -1,38 +1,9 @@
import { type Friend, type FriendRequest, type Group, type GroupMember, GroupNotify, type SelfInfo, BuddyCategoryType } from './entities';
import { WebApiGroupMember } from '@/core/apis';
export declare const Credentials: {
Skey: string;
CreatTime: number;
Cookies: Map<string, string>;
ClientKey: string;
KeyIndex: string;
PskeyData: Map<string, string>;
PskeyTime: Map<string, number>;
};
export declare const WebGroupData: {
GroupData: Map<string, WebApiGroupMember[]>;
GroupTime: Map<string, number>;
};
import { type GroupMember, GroupNotify, type SelfInfo } from './entities';
export declare const selfInfo: SelfInfo;
export declare const groups: Map<string, Group>;
export declare function deleteGroup(groupQQ: string): void;
export declare const groupMembers: Map<string, Map<string, GroupMember>>;
export declare const friends: Map<string, Friend>;
export declare const 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: {
packet_received: number;
packet_sent: number;

View File

@@ -1 +1 @@
function _0x1642(_0x1a8662,_0x1d40c7){const _0x66d13f=_0x66d1();return _0x1642=function(_0x164216,_0x1ad570){_0x164216=_0x164216-0xe3;let _0x380bd3=_0x66d13f[_0x164216];return _0x380bd3;},_0x1642(_0x1a8662,_0x1d40c7);}(function(_0x1866c3,_0xe707af){const _0x7fb1e8=_0x1642,_0x3fac90=_0x1866c3();while(!![]){try{const _0x13d3e7=parseInt(_0x7fb1e8(0xea))/0x1*(-parseInt(_0x7fb1e8(0xe4))/0x2)+-parseInt(_0x7fb1e8(0xeb))/0x3+-parseInt(_0x7fb1e8(0xf8))/0x4+-parseInt(_0x7fb1e8(0xf1))/0x5+-parseInt(_0x7fb1e8(0xe7))/0x6+parseInt(_0x7fb1e8(0xf0))/0x7*(-parseInt(_0x7fb1e8(0xf4))/0x8)+-parseInt(_0x7fb1e8(0xf7))/0x9*(-parseInt(_0x7fb1e8(0xe8))/0xa);if(_0x13d3e7===_0xe707af)break;else _0x3fac90['push'](_0x3fac90['shift']());}catch(_0x549291){_0x3fac90['push'](_0x3fac90['shift']());}}}(_0x66d1,0x34954));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();export function deleteGroup(_0x15a7a6){const _0x2c5d9f=_0x1642;groups[_0x2c5d9f(0xec)](_0x15a7a6),groupMembers[_0x2c5d9f(0xec)](_0x15a7a6);}export const groupMembers=new Map();export const friends=new Map();export const friendRequests={};export const groupNotifies={};export const napCatError={'ffmpegError':'','httpServerError':'','wsServerError':'','otherError':'NapCat未能正常启动请检查日志查看错误'};export async function getFriend(_0x36c81b){const _0x5070e1=_0x1642;_0x36c81b=_0x36c81b['toString']();if(isNumeric(_0x36c81b)){const _0x2acf8c=Array[_0x5070e1(0xf9)](friends[_0x5070e1(0xed)]());return _0x2acf8c[_0x5070e1(0xe3)](_0xfe1ef7=>_0xfe1ef7[_0x5070e1(0xf5)]===_0x36c81b);}else return friends['get'](_0x36c81b);}export async function getGroup(_0x265c3d){const _0x21d54d=_0x1642;let _0x4b47b8=groups[_0x21d54d(0xe9)](_0x265c3d[_0x21d54d(0xe5)]());if(!_0x4b47b8)try{const _0x3ace3c=await NTQQGroupApi[_0x21d54d(0xfa)]();_0x3ace3c[_0x21d54d(0xf3)]&&_0x3ace3c['forEach'](_0x19263b=>{const _0x248465=_0x21d54d;groups[_0x248465(0xee)](_0x19263b[_0x248465(0xef)],_0x19263b);});}catch(_0x93e832){return undefined;}return _0x4b47b8=groups['get'](_0x265c3d[_0x21d54d(0xe5)]()),_0x4b47b8;}export async function getGroupMember(_0x4c9dde,_0x2a836c){const _0x3c843c=_0x1642,_0x2552a3={'NPAsI':function(_0x423608,_0x3928c7){return _0x423608(_0x3928c7);},'csHUm':function(_0x4dfaa8){return _0x4dfaa8();},'fQDEe':function(_0xe63e3d){return _0xe63e3d();}};_0x4c9dde=_0x4c9dde[_0x3c843c(0xe5)](),_0x2a836c=_0x2a836c[_0x3c843c(0xe5)]();let _0x2f424f=groupMembers[_0x3c843c(0xe9)](_0x4c9dde);if(!_0x2f424f)try{_0x2f424f=await NTQQGroupApi['getGroupMembers'](_0x4c9dde),groupMembers[_0x3c843c(0xee)](_0x4c9dde,_0x2f424f);}catch(_0x121aa6){return null;}const _0x467aab=()=>{const _0x5ba92b=_0x3c843c;let _0x3ae4b1=undefined;return _0x2552a3['NPAsI'](isNumeric,_0x2a836c)?_0x3ae4b1=Array[_0x5ba92b(0xf9)](_0x2f424f['values']())['find'](_0x3f9f4f=>_0x3f9f4f['uin']===_0x2a836c):_0x3ae4b1=_0x2f424f[_0x5ba92b(0xe9)](_0x2a836c),_0x3ae4b1;};let _0x234020=_0x2552a3[_0x3c843c(0xf6)](_0x467aab);return!_0x234020&&(_0x2f424f=await NTQQGroupApi[_0x3c843c(0xe6)](_0x4c9dde),_0x234020=_0x2552a3[_0x3c843c(0xf2)](_0x467aab)),_0x234020;}export const uid2UinMap={};export function getUidByUin(_0x3cc9c2){for(const _0x37ff82 in uid2UinMap){if(uid2UinMap[_0x37ff82]===_0x3cc9c2)return _0x37ff82;}}function _0x66d1(){const _0x1aafc1=['delete','values','set','groupCode','35NkYjYP','1666025YLVJIM','fQDEe','length','445448ZUKZQK','uin','csHUm','13268628HwALlt','214108scqLKw','from','getGroups','find','2rzzIQy','toString','getGroupMembers','827250mHLyYZ','10HaeqNQ','get','236069tAfqDV','659493muGXei'];_0x66d1=function(){return _0x1aafc1;};return _0x66d1();}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(_0x2ce4f4,_0x1379fe){const _0x4960b0=_0x116f,_0x4d19ab=_0x2ce4f4();while(!![]){try{const _0x453c60=parseInt(_0x4960b0(0xb3))/0x1+parseInt(_0x4960b0(0xbb))/0x2*(-parseInt(_0x4960b0(0xbc))/0x3)+parseInt(_0x4960b0(0xb7))/0x4*(parseInt(_0x4960b0(0xc0))/0x5)+-parseInt(_0x4960b0(0xb0))/0x6*(-parseInt(_0x4960b0(0xbe))/0x7)+parseInt(_0x4960b0(0xb2))/0x8*(parseInt(_0x4960b0(0xba))/0x9)+parseInt(_0x4960b0(0xb6))/0xa+parseInt(_0x4960b0(0xb9))/0xb*(-parseInt(_0x4960b0(0xc1))/0xc);if(_0x453c60===_0x1379fe)break;else _0x4d19ab['push'](_0x4d19ab['shift']());}catch(_0x5073cd){_0x4d19ab['push'](_0x4d19ab['shift']());}}}(_0x4e0c,0x493dd));function _0x116f(_0x3f6bef,_0x5b9aff){const _0x4e0c23=_0x4e0c();return _0x116f=function(_0x116f23,_0x21a912){_0x116f23=_0x116f23-0xaf;let _0xbb9d1f=_0x4e0c23[_0x116f23];return _0xbb9d1f;},_0x116f(_0x3f6bef,_0x5b9aff);}function _0x4e0c(){const _0x1a83b7=['341944VJeLcQ','25132OAewvs','get','find','787840pouKim','72KcOGkx','MQOjO','32494mvMnjh','9UZxEmI','190132QzOjZY','12FJwZNF','NyqSJ','41671iDtgJx','uin','143370hUmvtR','1380HhybVt','toString','getGroupMembers','360jNLVAF','pUqBb'];_0x4e0c=function(){return _0x1a83b7;};return _0x4e0c();}import{isNumeric}from'@/common/utils/helper';import{NTQQGroupApi}from'@/core/apis';export const selfInfo={'uid':'','uin':'','nick':'','online':!![]};export const groupMembers=new Map();export const groupNotifies={};export async function getGroupMember(_0x2a1928,_0x3c2bdc){const _0x432ab2=_0x116f,_0x1d5b7a={'MQOjO':function(_0xae238e,_0x13c0a5){return _0xae238e(_0x13c0a5);},'pUqBb':function(_0x18ab3f){return _0x18ab3f();},'NyqSJ':function(_0x48a597){return _0x48a597();}};_0x2a1928=_0x2a1928[_0x432ab2(0xc2)](),_0x3c2bdc=_0x3c2bdc[_0x432ab2(0xc2)]();let _0x20391c=groupMembers[_0x432ab2(0xb4)](_0x2a1928);if(!_0x20391c)try{_0x20391c=await NTQQGroupApi[_0x432ab2(0xaf)](_0x2a1928),groupMembers['set'](_0x2a1928,_0x20391c);}catch(_0x3b1b83){return null;}const _0x3f4f31=()=>{const _0x1f37b6=_0x432ab2;let _0x42b5c3=undefined;return _0x1d5b7a[_0x1f37b6(0xb8)](isNumeric,_0x3c2bdc)?_0x42b5c3=Array['from'](_0x20391c['values']())[_0x1f37b6(0xb5)](_0x55ed1d=>_0x55ed1d[_0x1f37b6(0xbf)]===_0x3c2bdc):_0x42b5c3=_0x20391c[_0x1f37b6(0xb4)](_0x3c2bdc),_0x42b5c3;};let _0x1bbece=_0x1d5b7a[_0x432ab2(0xb1)](_0x3f4f31);return!_0x1bbece&&(_0x20391c=await NTQQGroupApi[_0x432ab2(0xaf)](_0x2a1928),_0x1bbece=_0x1d5b7a[_0x432ab2(0xbd)](_0x3f4f31)),_0x1bbece;}export const tempGroupCodeMap={};export const stat={'packet_received':0x0,'packet_sent':0x0,'message_received':0x0,'message_sent':0x0,'last_message_time':0x0,'disconnect_times':0x0,'lost_times':0x0,'packet_lost':0x0};

View File

@@ -1 +1 @@
function _0x545d(_0x3ef9dc,_0xe5aa36){var _0x101f48=_0x101f();return _0x545d=function(_0x545d67,_0x27e419){_0x545d67=_0x545d67-0xb3;var _0x3ad04c=_0x101f48[_0x545d67];return _0x3ad04c;},_0x545d(_0x3ef9dc,_0xe5aa36);}function _0x101f(){var _0x3f338c=['14ndscRH','YYofk','2953002rmxilI','DOCUMENT','split','xKGzN','20pHxTRb','KxFxV','2740150DbzUDW','231PWAyjZ','ADNkV','AUDIO','IMAGE','9428TgPFRW','OTHER','44912uQZHKJ','0|3|1|2|4','kSBJM','190912UmDJUy','2072727NugLUo','1637336vEufIL'];_0x101f=function(){return _0x3f338c;};return _0x101f();}(function(_0x4a11ea,_0x38ba70){var _0x496e86=_0x545d,_0x20b4e3=_0x4a11ea();while(!![]){try{var _0xbe8e11=parseInt(_0x496e86(0xc1))/0x1+parseInt(_0x496e86(0xbe))/0x2+-parseInt(_0x496e86(0xb8))/0x3*(-parseInt(_0x496e86(0xbc))/0x4)+-parseInt(_0x496e86(0xb7))/0x5+parseInt(_0x496e86(0xc6))/0x6+parseInt(_0x496e86(0xc4))/0x7*(parseInt(_0x496e86(0xc3))/0x8)+-parseInt(_0x496e86(0xc2))/0x9*(parseInt(_0x496e86(0xb5))/0xa);if(_0xbe8e11===_0x38ba70)break;else _0x20b4e3['push'](_0x20b4e3['shift']());}catch(_0x5752e8){_0x20b4e3['push'](_0x20b4e3['shift']());}}}(_0x101f,0x463ea));;export var CacheFileType;(function(_0x5328bf){var _0x83c8ad=_0x545d,_0x26642b={'kSBJM':_0x83c8ad(0xbf),'KxFxV':_0x83c8ad(0xbb),'xKGzN':'AUDIO','ADNkV':_0x83c8ad(0xc7),'YYofk':'VIDEO','LBNan':_0x83c8ad(0xbd)},_0x4ecba1=_0x26642b[_0x83c8ad(0xc0)][_0x83c8ad(0xb3)]('|'),_0x5403d6=0x0;while(!![]){switch(_0x4ecba1[_0x5403d6++]){case'0':_0x5328bf[_0x5328bf[_0x26642b[_0x83c8ad(0xb6)]]=0x0]=_0x26642b[_0x83c8ad(0xb6)];continue;case'1':_0x5328bf[_0x5328bf[_0x26642b[_0x83c8ad(0xb4)]]=0x2]=_0x83c8ad(0xba);continue;case'2':_0x5328bf[_0x5328bf[_0x26642b[_0x83c8ad(0xb9)]]=0x3]=_0x83c8ad(0xc7);continue;case'3':_0x5328bf[_0x5328bf[_0x26642b[_0x83c8ad(0xc5)]]=0x1]=_0x26642b[_0x83c8ad(0xc5)];continue;case'4':_0x5328bf[_0x5328bf[_0x26642b['LBNan']]=0x4]=_0x26642b['LBNan'];continue;}break;}}(CacheFileType||(CacheFileType={})));
function _0x1b7d(_0x42c842,_0x423739){var _0x24d073=_0x24d0();return _0x1b7d=function(_0x1b7d55,_0x3d45eb){_0x1b7d55=_0x1b7d55-0x1ae;var _0x6c111d=_0x24d073[_0x1b7d55];return _0x6c111d;},_0x1b7d(_0x42c842,_0x423739);}(function(_0x1abcb9,_0x56cd8b){var _0x2e5d0d=_0x1b7d,_0x13c89e=_0x1abcb9();while(!![]){try{var _0x1662e8=parseInt(_0x2e5d0d(0x1c1))/0x1*(-parseInt(_0x2e5d0d(0x1bf))/0x2)+parseInt(_0x2e5d0d(0x1bd))/0x3*(parseInt(_0x2e5d0d(0x1b0))/0x4)+parseInt(_0x2e5d0d(0x1c2))/0x5+parseInt(_0x2e5d0d(0x1c3))/0x6*(parseInt(_0x2e5d0d(0x1b4))/0x7)+-parseInt(_0x2e5d0d(0x1c0))/0x8*(parseInt(_0x2e5d0d(0x1b5))/0x9)+parseInt(_0x2e5d0d(0x1bb))/0xa*(-parseInt(_0x2e5d0d(0x1be))/0xb)+-parseInt(_0x2e5d0d(0x1b9))/0xc*(-parseInt(_0x2e5d0d(0x1bc))/0xd);if(_0x1662e8===_0x56cd8b)break;else _0x13c89e['push'](_0x13c89e['shift']());}catch(_0x32a9b4){_0x13c89e['push'](_0x13c89e['shift']());}}}(_0x24d0,0xbba9c));function _0x24d0(){var _0x37b820=['split','4512810AEaOGC','3250vSyVeY','3UAfcno','22rZlNLg','4wjqSoS','1030888RFMbqP','74891YjMbnf','1031840hOuPZU','582WBqQeg','2|4|1|0|3','OTHER','1912668WFUnZJ','qvrzM','hNJei','IMAGE','34419OQWVDt','18wQYZtg','VIDEO','PWnpT','DOCUMENT','44028DLcUhw'];_0x24d0=function(){return _0x37b820;};return _0x24d0();};export var CacheFileType;(function(_0x1f8adf){var _0x56652f=_0x1b7d,_0x12990e={'hNJei':_0x56652f(0x1b8),'PWnpT':'AUDIO','UdtuQ':_0x56652f(0x1b3),'dreDF':'OTHER','qvrzM':_0x56652f(0x1b6)},_0x58dcd2=_0x56652f(0x1ae)[_0x56652f(0x1ba)]('|'),_0x272ac7=0x0;while(!![]){switch(_0x58dcd2[_0x272ac7++]){case'0':_0x1f8adf[_0x1f8adf[_0x12990e[_0x56652f(0x1b2)]]=0x3]=_0x12990e[_0x56652f(0x1b2)];continue;case'1':_0x1f8adf[_0x1f8adf[_0x12990e[_0x56652f(0x1b7)]]=0x2]=_0x12990e[_0x56652f(0x1b7)];continue;case'2':_0x1f8adf[_0x1f8adf[_0x12990e['UdtuQ']]=0x0]=_0x56652f(0x1b3);continue;case'3':_0x1f8adf[_0x1f8adf[_0x12990e['dreDF']]=0x4]=_0x56652f(0x1af);continue;case'4':_0x1f8adf[_0x1f8adf[_0x12990e[_0x56652f(0x1b1)]]=0x1]=_0x12990e[_0x56652f(0x1b1)];continue;}break;}}(CacheFileType||(CacheFileType={})));

View File

@@ -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

View File

@@ -1 +1 @@
function _0x4da7(_0x2dece6,_0x3de6ef){var _0x4b161f=_0x4b16();return _0x4da7=function(_0x4da794,_0x2abd8a){_0x4da794=_0x4da794-0x161;var _0xf1e548=_0x4b161f[_0x4da794];return _0xf1e548;},_0x4da7(_0x2dece6,_0x3de6ef);}(function(_0x18d2b9,_0x1230ef){var _0x2e2a86=_0x4da7,_0x40e364=_0x18d2b9();while(!![]){try{var _0x468e31=parseInt(_0x2e2a86(0x162))/0x1+-parseInt(_0x2e2a86(0x16a))/0x2*(-parseInt(_0x2e2a86(0x164))/0x3)+-parseInt(_0x2e2a86(0x161))/0x4+parseInt(_0x2e2a86(0x167))/0x5*(parseInt(_0x2e2a86(0x168))/0x6)+-parseInt(_0x2e2a86(0x166))/0x7+-parseInt(_0x2e2a86(0x16d))/0x8+-parseInt(_0x2e2a86(0x169))/0x9*(-parseInt(_0x2e2a86(0x165))/0xa);if(_0x468e31===_0x1230ef)break;else _0x40e364['push'](_0x40e364['shift']());}catch(_0x128320){_0x40e364['push'](_0x40e364['shift']());}}}(_0x4b16,0xd59db));function _0x4b16(){var _0x36957f=['9dJaKky','9242NzUVsB','tWQaC','owner','6172288NkVpxF','admin','5560288sHiXxY','646660zLAmzA','yjOxv','963UIXEXG','6511530UkDoaQ','3984414bAfjss','77795OqnHHX','318pMgnEg'];_0x4b16=function(){return _0x36957f;};return _0x4b16();}export var GroupMemberRole;(function(_0x248e7c){var _0x5e4454=_0x4da7,_0x4da84f={'tWQaC':'normal','yjOxv':_0x5e4454(0x16e),'mVDrM':'owner'};_0x248e7c[_0x248e7c[_0x4da84f['tWQaC']]=0x2]=_0x4da84f[_0x5e4454(0x16b)],_0x248e7c[_0x248e7c[_0x4da84f[_0x5e4454(0x163)]]=0x3]=_0x4da84f['yjOxv'],_0x248e7c[_0x248e7c[_0x5e4454(0x16c)]=0x4]=_0x4da84f['mVDrM'];}(GroupMemberRole||(GroupMemberRole={})));
(function(_0x256298,_0x2e6d95){var _0x5d7b85=_0x2275,_0x3ab8cf=_0x256298();while(!![]){try{var _0x251be9=-parseInt(_0x5d7b85(0x12a))/0x1+-parseInt(_0x5d7b85(0x12e))/0x2*(parseInt(_0x5d7b85(0x12b))/0x3)+-parseInt(_0x5d7b85(0x126))/0x4*(-parseInt(_0x5d7b85(0x124))/0x5)+-parseInt(_0x5d7b85(0x127))/0x6+-parseInt(_0x5d7b85(0x131))/0x7+parseInt(_0x5d7b85(0x128))/0x8+-parseInt(_0x5d7b85(0x125))/0x9*(-parseInt(_0x5d7b85(0x12c))/0xa);if(_0x251be9===_0x2e6d95)break;else _0x3ab8cf['push'](_0x3ab8cf['shift']());}catch(_0x45480e){_0x3ab8cf['push'](_0x3ab8cf['shift']());}}}(_0x4579,0x79b0d));export var GroupMemberRole;function _0x2275(_0xab6b8a,_0x35339c){var _0x45794a=_0x4579();return _0x2275=function(_0x227514,_0x2c9bc2){_0x227514=_0x227514-0x123;var _0x19ad12=_0x45794a[_0x227514];return _0x19ad12;},_0x2275(_0xab6b8a,_0x35339c);}(function(_0x5de561){var _0x2e570b=_0x2275,_0x2332ec={'wAsuO':_0x2e570b(0x130),'oiJZE':_0x2e570b(0x129),'TVfJT':_0x2e570b(0x123)};_0x5de561[_0x5de561[_0x2e570b(0x130)]=0x2]=_0x2332ec[_0x2e570b(0x12d)],_0x5de561[_0x5de561[_0x2e570b(0x129)]=0x3]=_0x2332ec['oiJZE'],_0x5de561[_0x5de561[_0x2332ec[_0x2e570b(0x12f)]]=0x4]=_0x2332ec['TVfJT'];}(GroupMemberRole||(GroupMemberRole={})));function _0x4579(){var _0x58639c=['1041065tarjrE','5798781YFGHyx','8JXzsDe','2357118UJJWTC','1445624YQlInO','admin','452042UxEmRB','747rbQLOw','20TRkXPz','wAsuO','3302fKtSDI','TVfJT','normal','919156DxZYcH','owner'];_0x4579=function(){return _0x58639c;};return _0x4579();}

View File

@@ -1 +1 @@
(function(_0x3f0194,_0x3a6f4a){var _0x539a8f=_0x4f70,_0x2067a5=_0x3f0194();while(!![]){try{var _0x499e86=-parseInt(_0x539a8f(0x171))/0x1*(-parseInt(_0x539a8f(0x174))/0x2)+parseInt(_0x539a8f(0x177))/0x3*(parseInt(_0x539a8f(0x16f))/0x4)+-parseInt(_0x539a8f(0x173))/0x5+parseInt(_0x539a8f(0x16e))/0x6*(-parseInt(_0x539a8f(0x176))/0x7)+parseInt(_0x539a8f(0x172))/0x8+-parseInt(_0x539a8f(0x170))/0x9+parseInt(_0x539a8f(0x175))/0xa;if(_0x499e86===_0x3a6f4a)break;else _0x2067a5['push'](_0x2067a5['shift']());}catch(_0x41555b){_0x2067a5['push'](_0x2067a5['shift']());}}}(_0x1b61,0x2d476));function _0x4f70(_0x34f5ce,_0x20f4ba){var _0x1b6107=_0x1b61();return _0x4f70=function(_0x4f701e,_0x3ef028){_0x4f701e=_0x4f701e-0x16e;var _0x3b02d3=_0x1b6107[_0x4f701e];return _0x3b02d3;},_0x4f70(_0x34f5ce,_0x20f4ba);}export*from'./user';function _0x1b61(){var _0x4958f7=['863225NcNNqZ','2ixShrg','4260810wFoYio','287ZKlKQo','441843JsnoPO','18108dnDIdy','4CSgZUz','1764612mSDzJh','70654UcFolu','271176ONTsbw'];_0x1b61=function(){return _0x4958f7;};return _0x1b61();}export*from'./group';export*from'./msg';export*from'./notify';export*from'./cache';export*from'./constructor';
function _0x270e(){var _0x2c19d1=['58382cUascg','1301157hawbxY','10432521FKngEB','13tJBKJI','419601ZMFfZb','6kskzdJ','187386egYPWN','48tgRBGh','8nyIqtE','572410paDubJ','1971005JEnPzr'];_0x270e=function(){return _0x2c19d1;};return _0x270e();}(function(_0x426a82,_0x2bbb4a){var _0xba9992=_0x26d8,_0x235655=_0x426a82();while(!![]){try{var _0xd97186=parseInt(_0xba9992(0x148))/0x1*(parseInt(_0xba9992(0x145))/0x2)+-parseInt(_0xba9992(0x14b))/0x3*(-parseInt(_0xba9992(0x142))/0x4)+-parseInt(_0xba9992(0x144))/0x5*(-parseInt(_0xba9992(0x14a))/0x6)+parseInt(_0xba9992(0x149))/0x7*(parseInt(_0xba9992(0x141))/0x8)+-parseInt(_0xba9992(0x146))/0x9+parseInt(_0xba9992(0x143))/0xa+-parseInt(_0xba9992(0x147))/0xb;if(_0xd97186===_0x2bbb4a)break;else _0x235655['push'](_0x235655['shift']());}catch(_0x236bd0){_0x235655['push'](_0x235655['shift']());}}}(_0x270e,0x3653b));export*from'./user';export*from'./group';export*from'./msg';export*from'./notify';function _0x26d8(_0x15fb49,_0x4cfa8f){var _0x270e58=_0x270e();return _0x26d8=function(_0x26d80a,_0xcfdf39){_0x26d80a=_0x26d80a-0x141;var _0x5d374a=_0x270e58[_0x26d80a];return _0x5d374a;},_0x26d8(_0x15fb49,_0x4cfa8f);}export*from'./cache';export*from'./constructor';

View File

@@ -13,6 +13,13 @@ export interface KickedOffLineInfo {
kickedType: number;
securityKickedType: number;
}
export interface GetFileListParam {
sortType: number;
fileCount: number;
startIndex: number;
sortOrder: number;
showOnlinedocFolder: number;
}
export declare enum ElementType {
TEXT = 1,
PIC = 2,
@@ -108,6 +115,7 @@ export interface FileElement {
fileSize: string;
picHeight?: number;
picWidth?: number;
folderId?: string;
picThumbPath?: Map<number, string>;
file10MMd5?: string;
fileSha?: string;
@@ -149,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;
@@ -265,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

View File

@@ -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

View File

@@ -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;
};
}

View File

@@ -1 +1 @@
function _0xfb09(_0x4069c0,_0x12bb7b){var _0x45d3c7=_0x45d3();return _0xfb09=function(_0xfb0922,_0x312f99){_0xfb0922=_0xfb0922-0x1e6;var _0x2be3a3=_0x45d3c7[_0xfb0922];return _0x2be3a3;},_0xfb09(_0x4069c0,_0x12bb7b);}(function(_0x397b8f,_0x3cdcf4){var _0x2c290c=_0xfb09,_0x5c3bab=_0x397b8f();while(!![]){try{var _0x9e7901=-parseInt(_0x2c290c(0x1e9))/0x1+parseInt(_0x2c290c(0x1e8))/0x2*(-parseInt(_0x2c290c(0x1ea))/0x3)+parseInt(_0x2c290c(0x1ef))/0x4+parseInt(_0x2c290c(0x1f0))/0x5+-parseInt(_0x2c290c(0x1f2))/0x6*(-parseInt(_0x2c290c(0x1f1))/0x7)+-parseInt(_0x2c290c(0x1f3))/0x8*(parseInt(_0x2c290c(0x1ed))/0x9)+parseInt(_0x2c290c(0x1eb))/0xa;if(_0x9e7901===_0x3cdcf4)break;else _0x5c3bab['push'](_0x5c3bab['shift']());}catch(_0x2786db){_0x5c3bab['push'](_0x5c3bab['shift']());}}}(_0x45d3,0x8488c));export var Sex;function _0x45d3(){var _0x31b326=['902520AqROoT','3pOMsye','15807110hhIbCp','MAnXW','46629FMFnnd','male','232080axHzhk','4851910avaOkD','168ecKIdb','17322hofvQf','256egSqie','unknown','female','rCflF','2134458ndfJJQ'];_0x45d3=function(){return _0x31b326;};return _0x45d3();}(function(_0x3453e7){var _0x5f2da7=_0xfb09,_0x431283={'MAnXW':_0x5f2da7(0x1ee),'rCflF':_0x5f2da7(0x1e6)};_0x3453e7[_0x3453e7[_0x5f2da7(0x1ee)]=0x1]=_0x431283[_0x5f2da7(0x1ec)],_0x3453e7[_0x3453e7[_0x431283[_0x5f2da7(0x1e7)]]=0x2]=_0x431283[_0x5f2da7(0x1e7)],_0x3453e7[_0x3453e7['unknown']=0xff]=_0x5f2da7(0x1f4);}(Sex||(Sex={})));
(function(_0x404d94,_0x3285b2){var _0x4e29e2=_0x1c53,_0x524d15=_0x404d94();while(!![]){try{var _0x1df94c=-parseInt(_0x4e29e2(0xdc))/0x1*(parseInt(_0x4e29e2(0xda))/0x2)+-parseInt(_0x4e29e2(0xd4))/0x3+-parseInt(_0x4e29e2(0xcb))/0x4*(-parseInt(_0x4e29e2(0xd5))/0x5)+-parseInt(_0x4e29e2(0xd7))/0x6+-parseInt(_0x4e29e2(0xcc))/0x7*(parseInt(_0x4e29e2(0xca))/0x8)+-parseInt(_0x4e29e2(0xd3))/0x9+-parseInt(_0x4e29e2(0xd1))/0xa*(-parseInt(_0x4e29e2(0xd2))/0xb);if(_0x1df94c===_0x3285b2)break;else _0x524d15['push'](_0x524d15['shift']());}catch(_0x36e69b){_0x524d15['push'](_0x524d15['shift']());}}}(_0x2d57,0x7dbc2));export var Sex;(function(_0x426e5a){var _0x51009e=_0x1c53,_0x3e21ff={'LCmDL':_0x51009e(0xd9),'feGDz':_0x51009e(0xce)};_0x426e5a[_0x426e5a[_0x3e21ff[_0x51009e(0xd8)]]=0x1]=_0x3e21ff[_0x51009e(0xd8)],_0x426e5a[_0x426e5a[_0x3e21ff[_0x51009e(0xd6)]]=0x2]=_0x3e21ff[_0x51009e(0xd6)],_0x426e5a[_0x426e5a['unknown']=0xff]=_0x51009e(0xcd);}(Sex||(Sex={})));export var BizKey;function _0x2d57(){var _0x3e59af=['76785tocBrZ','8Bdcosu','45488GZqIzm','6827583NtwBfN','unknown','female','KPHOTOWALL','wBvVL','18978710jZbpyA','22xqbpfH','2012166nHSaVf','1329741WqMXxx','125tScxLU','feGDz','5547822hQXRSS','LCmDL','male','26guEwGI','KPRIVILEGEICON'];_0x2d57=function(){return _0x3e59af;};return _0x2d57();}function _0x1c53(_0x5bb7d3,_0x464179){var _0x2d5762=_0x2d57();return _0x1c53=function(_0x1c530e,_0x3099d7){_0x1c530e=_0x1c530e-0xca;var _0x19f5f8=_0x2d5762[_0x1c530e];return _0x19f5f8;},_0x1c53(_0x5bb7d3,_0x464179);}(function(_0x21e8ab){var _0x3cff1e=_0x1c53,_0x2c723f={'vAFSz':_0x3cff1e(0xdb),'wBvVL':_0x3cff1e(0xcf)};_0x21e8ab[_0x21e8ab[_0x2c723f['vAFSz']]=0x0]=_0x3cff1e(0xdb),_0x21e8ab[_0x21e8ab[_0x2c723f[_0x3cff1e(0xd0)]]=0x1]=_0x2c723f[_0x3cff1e(0xd0)];}(BizKey||(BizKey={})));

View File

@@ -1,8 +0,0 @@
declare class HookApi {
private readonly moeHook;
constructor();
getRKey(): string;
isAvailable(): boolean;
}
export declare const hookApi: HookApi;
export {};

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
(function(_0xb49f97,_0x175077){var _0xf2c564=_0x1e80,_0x20d6f2=_0xb49f97();while(!![]){try{var _0x40fa08=parseInt(_0xf2c564(0x1d5))/0x1*(-parseInt(_0xf2c564(0x1d3))/0x2)+-parseInt(_0xf2c564(0x1d2))/0x3*(-parseInt(_0xf2c564(0x1d1))/0x4)+-parseInt(_0xf2c564(0x1cf))/0x5*(-parseInt(_0xf2c564(0x1d0))/0x6)+-parseInt(_0xf2c564(0x1d8))/0x7*(parseInt(_0xf2c564(0x1d9))/0x8)+parseInt(_0xf2c564(0x1d6))/0x9+-parseInt(_0xf2c564(0x1d4))/0xa*(-parseInt(_0xf2c564(0x1d7))/0xb)+parseInt(_0xf2c564(0x1db))/0xc*(parseInt(_0xf2c564(0x1da))/0xd);if(_0x40fa08===_0x175077)break;else _0x20d6f2['push'](_0x20d6f2['shift']());}catch(_0xa68e15){_0x20d6f2['push'](_0x20d6f2['shift']());}}}(_0x5438,0xd71dd));import _0x299076 from'./wrapper';export*from'./adapters';export*from'./apis';function _0x1e80(_0x3519bc,_0x5ae3be){var _0x54380e=_0x5438();return _0x1e80=function(_0x1e807a,_0x42f54f){_0x1e807a=_0x1e807a-0x1cf;var _0x4ea390=_0x54380e[_0x1e807a];return _0x4ea390;},_0x1e80(_0x3519bc,_0x5ae3be);}export*from'./entities';export*from'./listeners';export*from'./services';export*as Adapters from'./adapters';export*as APIs from'./apis';function _0x5438(){var _0x1bdecc=['2978548JeyFRF','3qNynFd','624adrTwZ','10RtDHVG','3793nnYNyq','3331395NbIiPc','14125463BSaQhs','18830NDslUz','4760AkfUiX','11882ssIBgw','10824nnrrWn','13550FUigJA','978RmEKIP'];_0x5438=function(){return _0x1bdecc;};return _0x5438();}export*as Entities from'./entities';export*as Listeners from'./listeners';export*as Services from'./services';export{_0x299076 as Wrapper};export*as WrapperInterface from'./wrapper';export*as SessionConfig from'./sessionConfig';export{napCatCore}from'./core';
function _0x3c95(_0x3542e0,_0x65e975){var _0x2b434c=_0x2b43();return _0x3c95=function(_0x3c9584,_0x100255){_0x3c9584=_0x3c9584-0x17d;var _0x201f1a=_0x2b434c[_0x3c9584];return _0x201f1a;},_0x3c95(_0x3542e0,_0x65e975);}(function(_0x53aa4a,_0x2f3368){var _0x47bd96=_0x3c95,_0x3b55ef=_0x53aa4a();while(!![]){try{var _0x54ae81=parseInt(_0x47bd96(0x184))/0x1+-parseInt(_0x47bd96(0x182))/0x2+parseInt(_0x47bd96(0x180))/0x3*(parseInt(_0x47bd96(0x17e))/0x4)+parseInt(_0x47bd96(0x181))/0x5*(parseInt(_0x47bd96(0x183))/0x6)+parseInt(_0x47bd96(0x17f))/0x7+-parseInt(_0x47bd96(0x17d))/0x8+-parseInt(_0x47bd96(0x185))/0x9;if(_0x54ae81===_0x2f3368)break;else _0x3b55ef['push'](_0x3b55ef['shift']());}catch(_0x5c1a71){_0x3b55ef['push'](_0x3b55ef['shift']());}}}(_0x2b43,0xde95c));import _0x27ff6b 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';export*as Services from'./services';export{_0x27ff6b as Wrapper};function _0x2b43(){var _0x44016e=['12ZzQSUL','1349409SLcBNI','15330699GJcAiP','5710176oYrHVH','80436vLXYla','3104409gGHPCt','222ndLuTr','1558895oovCxc','1151258nAXkaT'];_0x2b43=function(){return _0x44016e;};return _0x2b43();}export*as WrapperInterface from'./wrapper';export*as SessionConfig from'./sessionConfig';export{napCatCore}from'./core';

View File

@@ -1,7 +1,7 @@
import { BuddyCategoryType, FriendRequestNotify } from '@/core/entities';
export type OnBuddyChangeParams = BuddyCategoryType[];
interface IBuddyListener {
onBuddyListChange(arg: OnBuddyChangeParams): void;
onBuddyListChange(arg: BuddyCategoryType[]): void;
onBuddyInfoChange(arg: unknown): void;
onBuddyDetailInfoChange(arg: unknown): void;
onNickUpdated(arg: unknown): void;

View File

@@ -1 +1 @@
var _0x5b9891=_0x3d05;function _0x3d05(_0x587add,_0x209cf7){var _0x1f0d7e=_0x1f0d();return _0x3d05=function(_0x3d058c,_0x36510b){_0x3d058c=_0x3d058c-0xa6;var _0x29758b=_0x1f0d7e[_0x3d058c];return _0x29758b;},_0x3d05(_0x587add,_0x209cf7);}(function(_0x34f8f2,_0x32c19e){var _0x594364=_0x3d05,_0x1337d3=_0x34f8f2();while(!![]){try{var _0x12cb4a=parseInt(_0x594364(0xb2))/0x1*(parseInt(_0x594364(0xaa))/0x2)+parseInt(_0x594364(0xb1))/0x3*(-parseInt(_0x594364(0xb6))/0x4)+-parseInt(_0x594364(0xb3))/0x5*(parseInt(_0x594364(0xa7))/0x6)+parseInt(_0x594364(0xb4))/0x7+parseInt(_0x594364(0xb8))/0x8*(-parseInt(_0x594364(0xa8))/0x9)+parseInt(_0x594364(0xb5))/0xa+parseInt(_0x594364(0xb9))/0xb;if(_0x12cb4a===_0x32c19e)break;else _0x1337d3['push'](_0x1337d3['shift']());}catch(_0x2755e4){_0x1337d3['push'](_0x1337d3['shift']());}}}(_0x1f0d,0x6415e));function _0x1f0d(){var _0x4056e1=['4116588EFQKhQ','7902060xWIsSQ','2387680LihvQH','onDelBatchBuddyInfos','59672VXOAtG','40601qnwQuW','onBuddyListChange','825270KDtxTf','864ucVOkh','onBuddyDetailInfoChange','478498MSIufy','onDoubtBuddyReqChange','onSpacePermissionInfos','onBlockChanged','onCheckBuddySettingResult','onBuddyRemarkUpdated','onNickUpdated','3wKtJyx','2ygaFbT','5WDXBJD'];_0x1f0d=function(){return _0x4056e1;};return _0x1f0d();}export class BuddyListener{['onAddBuddyNeedVerify'](_0x51b00b){}['onAddMeSettingChanged'](_0x3eaf15){}['onAvatarUrlUpdated'](_0x112f10){}[_0x5b9891(0xad)](_0x43ce56){}[_0x5b9891(0xa9)](_0x2204d2){}['onBuddyInfoChange'](_0x422691){}[_0x5b9891(0xa6)](_0x65f17a){}[_0x5b9891(0xaf)](_0x907d3f){}['onBuddyReqChange'](_0x548cd8){}['onBuddyReqUnreadCntChange'](_0x117373){}[_0x5b9891(0xae)](_0x26e718){}[_0x5b9891(0xb7)](_0x374db5){}[_0x5b9891(0xab)](_0x3ec022){}['onDoubtBuddyReqUnreadNumChange'](_0x386cb3){}[_0x5b9891(0xb0)](_0x499c3f){}['onSmartInfos'](_0x24db0d){}[_0x5b9891(0xac)](_0x5f16fa){}}
var _0x498845=_0xb7d0;function _0x3e02(){var _0x591819=['3044792rWaKGS','286422fNVgvh','11nJeYCf','onDoubtBuddyReqChange','5tNvhPV','140BSHPpI','onBuddyReqChange','1518716tamlMV','onDoubtBuddyReqUnreadNumChange','onNickUpdated','1241481VwnMmf','onBlockChanged','onBuddyRemarkUpdated','4zMoNwP','onAddBuddyNeedVerify','onSmartInfos','240984kFSNGt','onDelBatchBuddyInfos','onCheckBuddySettingResult','4552570OVLntE','1246299QsnYdG','onAddMeSettingChanged'];_0x3e02=function(){return _0x591819;};return _0x3e02();}(function(_0x1524c2,_0x14bdb1){var _0x4d98f4=_0xb7d0,_0x3f5435=_0x1524c2();while(!![]){try{var _0x4e5bd8=parseInt(_0x4d98f4(0x125))/0x1+parseInt(_0x4d98f4(0x11e))/0x2*(parseInt(_0x4d98f4(0x11b))/0x3)+parseInt(_0x4d98f4(0x118))/0x4*(-parseInt(_0x4d98f4(0x115))/0x5)+parseInt(_0x4d98f4(0x112))/0x6*(-parseInt(_0x4d98f4(0x116))/0x7)+parseInt(_0x4d98f4(0x111))/0x8+parseInt(_0x4d98f4(0x121))/0x9+-parseInt(_0x4d98f4(0x124))/0xa*(parseInt(_0x4d98f4(0x113))/0xb);if(_0x4e5bd8===_0x14bdb1)break;else _0x3f5435['push'](_0x3f5435['shift']());}catch(_0x41dccc){_0x3f5435['push'](_0x3f5435['shift']());}}}(_0x3e02,0xa8dc4));function _0xb7d0(_0x4d1e62,_0x34ef7b){var _0x3e0252=_0x3e02();return _0xb7d0=function(_0xb7d066,_0x10aba4){_0xb7d066=_0xb7d066-0x110;var _0x28d6a6=_0x3e0252[_0xb7d066];return _0x28d6a6;},_0xb7d0(_0x4d1e62,_0x34ef7b);}export class BuddyListener{[_0x498845(0x11f)](_0x523a33){}[_0x498845(0x110)](_0x20073e){}['onAvatarUrlUpdated'](_0x2b0a24){}[_0x498845(0x11c)](_0xcf9e4e){}['onBuddyDetailInfoChange'](_0x329eb5){}['onBuddyInfoChange'](_0x5a2dcd){}['onBuddyListChange'](_0x1a1af1){}[_0x498845(0x11d)](_0x5100f5){}[_0x498845(0x117)](_0x1878f6){}['onBuddyReqUnreadCntChange'](_0x2d6a7f){}[_0x498845(0x123)](_0x2d857c){}[_0x498845(0x122)](_0x554b6e){}[_0x498845(0x114)](_0x459d14){}[_0x498845(0x119)](_0xaf8afd){}[_0x498845(0x11a)](_0x4a27f0){}[_0x498845(0x120)](_0x16902b){}['onSpacePermissionInfos'](_0x1b7c7f){}}

View File

@@ -1 +1 @@
var _0x499213=_0x44ef;function _0x2201(){var _0x4ea2bb=['onFileStatusChanged','8OqcNAg','50295JZxcPz','onSessionChanged','95150xMjizq','5193nhTzWS','4988KmhBvA','25356xJbTSc','onFileSearch','423996KejVAj','onFileListChanged','740RvXGMy','207420NCHJBO','366JrRNgG','5XDVqgb'];_0x2201=function(){return _0x4ea2bb;};return _0x2201();}function _0x44ef(_0x1b855d,_0x4b1afc){var _0x220165=_0x2201();return _0x44ef=function(_0x44ef48,_0x1c030a){_0x44ef48=_0x44ef48-0x12a;var _0x7cc523=_0x220165[_0x44ef48];return _0x7cc523;},_0x44ef(_0x1b855d,_0x4b1afc);}(function(_0x57e28f,_0x3325ae){var _0x572a35=_0x44ef,_0x14e0e0=_0x57e28f();while(!![]){try{var _0x952b8e=-parseInt(_0x572a35(0x132))/0x1+-parseInt(_0x572a35(0x137))/0x2+-parseInt(_0x572a35(0x138))/0x3*(-parseInt(_0x572a35(0x131))/0x4)+-parseInt(_0x572a35(0x12a))/0x5*(-parseInt(_0x572a35(0x134))/0x6)+-parseInt(_0x572a35(0x12d))/0x7*(parseInt(_0x572a35(0x12c))/0x8)+parseInt(_0x572a35(0x130))/0x9*(parseInt(_0x572a35(0x136))/0xa)+-parseInt(_0x572a35(0x12f))/0xb;if(_0x952b8e===_0x3325ae)break;else _0x14e0e0['push'](_0x14e0e0['shift']());}catch(_0x18ba98){_0x14e0e0['push'](_0x14e0e0['shift']());}}}(_0x2201,0x1d715));export class KernelFileAssistantListener{[_0x499213(0x12b)](..._0x52105e){}['onSessionListChanged'](..._0xc4083d){}[_0x499213(0x12e)](..._0x316788){}[_0x499213(0x135)](..._0x20a56e){}[_0x499213(0x133)](..._0x986a90){}}
var _0x5f5b05=_0x2849;function _0x4ad0(){var _0x57e8cb=['1659848QyerRE','3TWVpbq','8004375SMxzVP','onSessionListChanged','886080KDNCTJ','onFileListChanged','14fZCEgL','1163818UIISII','178735xkFtvo','onSessionChanged','100OJwIZk','onFileSearch','3582012WwgEmQ','1110418xtHGpM'];_0x4ad0=function(){return _0x57e8cb;};return _0x4ad0();}function _0x2849(_0xed445,_0x260683){var _0x4ad000=_0x4ad0();return _0x2849=function(_0x28499a,_0x1f9e40){_0x28499a=_0x28499a-0x180;var _0x4afc4c=_0x4ad000[_0x28499a];return _0x4afc4c;},_0x2849(_0xed445,_0x260683);}(function(_0x4b5d8b,_0x30424e){var _0x40f888=_0x2849,_0x564de6=_0x4b5d8b();while(!![]){try{var _0x58312c=parseInt(_0x40f888(0x186))/0x1+-parseInt(_0x40f888(0x180))/0x2*(-parseInt(_0x40f888(0x188))/0x3)+parseInt(_0x40f888(0x183))/0x4*(-parseInt(_0x40f888(0x181))/0x5)+-parseInt(_0x40f888(0x185))/0x6+-parseInt(_0x40f888(0x18d))/0x7*(parseInt(_0x40f888(0x187))/0x8)+parseInt(_0x40f888(0x189))/0x9+-parseInt(_0x40f888(0x18b))/0xa;if(_0x58312c===_0x30424e)break;else _0x564de6['push'](_0x564de6['shift']());}catch(_0x47ec11){_0x564de6['push'](_0x564de6['shift']());}}}(_0x4ad0,0x8f6bf));export class KernelFileAssistantListener{['onFileStatusChanged'](..._0x3dcb81){}[_0x5f5b05(0x18a)](..._0xde996d){}[_0x5f5b05(0x182)](..._0x5ab8fd){}[_0x5f5b05(0x18c)](..._0x293069){}[_0x5f5b05(0x184)](..._0xd95d6){}}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
var _0x491cb8=_0x14fd;(function(_0x3c1e3a,_0x268bef){var _0x45e94e=_0x14fd,_0x454340=_0x3c1e3a();while(!![]){try{var _0x5ddaa3=parseInt(_0x45e94e(0x1b2))/0x1+-parseInt(_0x45e94e(0x1bb))/0x2+parseInt(_0x45e94e(0x1b9))/0x3+-parseInt(_0x45e94e(0x1ba))/0x4+parseInt(_0x45e94e(0x1c4))/0x5+-parseInt(_0x45e94e(0x1c0))/0x6*(-parseInt(_0x45e94e(0x1c2))/0x7)+-parseInt(_0x45e94e(0x1b3))/0x8;if(_0x5ddaa3===_0x268bef)break;else _0x454340['push'](_0x454340['shift']());}catch(_0x19aab3){_0x454340['push'](_0x454340['shift']());}}}(_0x902a,0xd3c5b));function _0x14fd(_0x46ae82,_0x35d7b5){var _0x902a1f=_0x902a();return _0x14fd=function(_0x14fdb9,_0x41f0f7){_0x14fdb9=_0x14fdb9-0x1b1;var _0x20c7fd=_0x902a1f[_0x14fdb9];return _0x20c7fd;},_0x14fd(_0x46ae82,_0x35d7b5);}function _0x902a(){var _0x1acda1=['onLoginConnected','onLoginState','onLogoutSucceed','6XbrTxS','onLoginFailed','10333267PnYMgw','onQQLoginNumLimited','8080405xdFkpu','onQRCodeLoginPollingStarted','onQRCodeGetPicture','1457662hGKJRT','32821968gSasfy','OnConfirmUnusualDeviceFailed','onUserLoggedIn','onQRCodeSessionFailed','onLogoutFailed','onQRCodeSessionQuickLoginFailed','2103327gNudpf','1037404IKpTeR','43034EDzaxc','onLoginDisConnected'];_0x902a=function(){return _0x1acda1;};return _0x902a();}export class LoginListener{[_0x491cb8(0x1bd)](..._0x200ab1){}[_0x491cb8(0x1bc)](..._0x388694){}['onLoginConnecting'](..._0x5469e4){}[_0x491cb8(0x1b1)](_0xc5a17c){}[_0x491cb8(0x1c5)](..._0x538406){}['onQRCodeSessionUserScaned'](..._0x28abc){}['onQRCodeLoginSucceed'](_0x11427e){}[_0x491cb8(0x1b6)](..._0x3d91e3){}[_0x491cb8(0x1c1)](..._0x2e7d12){}[_0x491cb8(0x1bf)](..._0x508986){}[_0x491cb8(0x1b7)](..._0x2a793b){}[_0x491cb8(0x1b5)](..._0x3b0258){}[_0x491cb8(0x1b8)](..._0x56cbc8){}['onPasswordLoginFailed'](..._0x592aec){}[_0x491cb8(0x1b4)](..._0x491932){}[_0x491cb8(0x1c3)](..._0x42bdc0){}[_0x491cb8(0x1be)](..._0x4119b4){}}
var _0x27d9af=_0x59ad;(function(_0x4306e4,_0xffe206){var _0x347652=_0x59ad,_0x2dfb1c=_0x4306e4();while(!![]){try{var _0x5bf614=parseInt(_0x347652(0x193))/0x1*(-parseInt(_0x347652(0x195))/0x2)+-parseInt(_0x347652(0x18a))/0x3+-parseInt(_0x347652(0x192))/0x4+-parseInt(_0x347652(0x19e))/0x5*(parseInt(_0x347652(0x18e))/0x6)+parseInt(_0x347652(0x19f))/0x7+-parseInt(_0x347652(0x194))/0x8*(-parseInt(_0x347652(0x196))/0x9)+parseInt(_0x347652(0x190))/0xa*(parseInt(_0x347652(0x189))/0xb);if(_0x5bf614===_0xffe206)break;else _0x2dfb1c['push'](_0x2dfb1c['shift']());}catch(_0x919dce){_0x2dfb1c['push'](_0x2dfb1c['shift']());}}}(_0x1f6e,0xf0865));function _0x1f6e(){var _0x232df0=['onQRCodeGetPicture','onLoginConnecting','onUserLoggedIn','5sERRAy','13127723XcYOQS','onLogoutSucceed','onQRCodeLoginPollingStarted','43065XKuhBv','4457028FIGkpq','onLogoutFailed','onLoginFailed','onQRCodeSessionQuickLoginFailed','3575244vDIiKa','onPasswordLoginFailed','920zfUBJz','onQRCodeLoginSucceed','212168cCWPON','404227qtTOxR','8SqUFNE','2LpaAPw','11595951nIIqVG','onLoginDisConnected','onQQLoginNumLimited','onLoginConnected','onQRCodeSessionUserScaned'];_0x1f6e=function(){return _0x232df0;};return _0x1f6e();}function _0x59ad(_0xc765e0,_0x479445){var _0x1f6e30=_0x1f6e();return _0x59ad=function(_0x59add4,_0x3ccfb5){_0x59add4=_0x59add4-0x187;var _0x156645=_0x1f6e30[_0x59add4];return _0x156645;},_0x59ad(_0xc765e0,_0x479445);}export class LoginListener{[_0x27d9af(0x199)](..._0x54733a){}[_0x27d9af(0x197)](..._0x1f933d){}[_0x27d9af(0x19c)](..._0x596e91){}[_0x27d9af(0x19b)](_0xd1f6d8){}[_0x27d9af(0x188)](..._0x2bde43){}[_0x27d9af(0x19a)](..._0x5c9dd1){}[_0x27d9af(0x191)](_0x1322f3){}['onQRCodeSessionFailed'](..._0x3262df){}[_0x27d9af(0x18c)](..._0x1ed9e6){}[_0x27d9af(0x187)](..._0x105718){}[_0x27d9af(0x18b)](..._0x4386dd){}[_0x27d9af(0x19d)](..._0x3750dc){}[_0x27d9af(0x18d)](..._0x18049b){}[_0x27d9af(0x18f)](..._0x216bd9){}['OnConfirmUnusualDeviceFailed'](..._0x2d9ab6){}[_0x27d9af(0x198)](..._0x30542e){}['onLoginState'](..._0x56272c){}}

View File

@@ -1,4 +1,4 @@
import { RawMessage } from '@/core/entities';
import { ChatType, RawMessage } from '@/core/entities';
export interface OnRichMediaDownloadCompleteParams {
fileModelId: string;
msgElementId: string;
@@ -21,6 +21,24 @@ export interface OnRichMediaDownloadCompleteParams {
userTotalSpacePerDay: unknown | null;
userUsedSpacePerDay: unknown | null;
}
export interface onGroupFileInfoUpdateParamType {
retCode: number;
retMsg: string;
clientWording: string;
isEnd: boolean;
item: Array<any>;
allFileCount: string;
nextIndex: string;
reqId: string;
}
export interface TempOnRecvParams {
sessionType: number;
chatType: ChatType;
peerUid: string;
groupCode: string;
fromNick: string;
sig: string;
}
export interface IKernelMsgListener {
onAddSendMsg(msgRecord: RawMessage): void;
onBroadcastHelperDownloadComplete(broadcastHelperTransNotifyInfo: unknown): void;
@@ -37,7 +55,7 @@ export interface IKernelMsgListener {
onFirstViewGroupGuildMapping(arrayList: unknown): void;
onGrabPasswordRedBag(i2: unknown, str: unknown, i3: unknown, recvdOrder: unknown, msgRecord: unknown): void;
onGroupFileInfoAdd(groupItem: unknown): void;
onGroupFileInfoUpdate(groupFileListResult: unknown): void;
onGroupFileInfoUpdate(groupFileListResult: onGroupFileInfoUpdateParamType): void;
onGroupGuildUpdate(groupGuildNotifyInfo: unknown): void;
onGroupTransferInfoAdd(groupItem: unknown): void;
onGroupTransferInfoUpdate(groupFileListResult: unknown): void;
@@ -79,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;
@@ -111,7 +129,7 @@ export declare class MsgListener implements IKernelMsgListener {
onFirstViewGroupGuildMapping(arrayList: unknown): void;
onGrabPasswordRedBag(i2: unknown, str: unknown, i3: unknown, recvdOrder: unknown, msgRecord: unknown): void;
onGroupFileInfoAdd(groupItem: unknown): void;
onGroupFileInfoUpdate(groupFileListResult: unknown): void;
onGroupFileInfoUpdate(groupFileListResult: onGroupFileInfoUpdateParamType): void;
onGroupGuildUpdate(groupGuildNotifyInfo: unknown): void;
onGroupTransferInfoAdd(groupItem: unknown): void;
onGroupTransferInfoUpdate(groupFileListResult: unknown): void;
@@ -153,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;

View File

@@ -1 +1 @@
var _0x9390b7=_0x4e0a;function _0x588c(){var _0x3bf40c=['onMsgSettingUpdate','onRecvUDCFlag','onFirstViewGroupGuildMapping','onTempChatInfoUpdate','onUnreadCntAfterFirstView','onUnreadCntUpdate','6474OyEprl','onEmojiResourceUpdate','onMsgWithRichLinkInfoUpdate','onMsgAbstractUpdate','onKickedOffLine','onRecvGroupGuildFlag','onHitCsRelatedEmojiResult','12gaHbcn','5TJptRv','3252wLmOPx','onRecvMsgSvrRspTransInfo','onFileMsgCome','onContactUnreadCntUpdate','onGrabPasswordRedBag','onLogLevelChanged','onSearchGroupFileInfoUpdate','onUserOnlineStatusChanged','onUserChannelTabStatusChanged','onRedTouchChanged','onRichMediaProgerssUpdate','onGuildNotificationAbstractUpdate','onEmojiDownloadComplete','onSysMsgNotification','onGuildInteractiveUpdate','onBroadcastHelperProgerssUpdate','2343177AOcHBM','onLineDev','onGroupTransferInfoAdd','16FWtSBe','4579290fiAbwy','3822rGQCye','onAddSendMsg','onReadFeedEventUpdate','onBroadcastHelperDownloadComplete','onSendMsgError','onFirstViewDirectMsgUpdate','onImportOldDbProgressUpdate','onlineStatusSmallIconDownloadPush','onGroupTransferInfoUpdate','onRichMediaDownloadComplete','onlineStatusBigIconDownloadPush','onMsgInfoListAdd','onRecvS2CMsg','onInputStatusPush','onUserTabStatusChanged','onUserSecQualityChanged','onMsgBoxChanged','onNtMsgSyncStart','onMsgDelete','3464qtczWu','67ivdaip','onRecvMsg','onRecvOnlineFileMsg','14848537YuDlVl','onGroupGuildUpdate','onRichMediaUploadComplete','1797018nCiDGq','onChannelFreqLimitInfoUpdate','onNtFirstViewMsgSyncEnd'];_0x588c=function(){return _0x3bf40c;};return _0x588c();}function _0x4e0a(_0x34f23c,_0x546e83){var _0x588cb5=_0x588c();return _0x4e0a=function(_0x4e0a57,_0x6c950c){_0x4e0a57=_0x4e0a57-0x89;var _0x14c59c=_0x588cb5[_0x4e0a57];return _0x14c59c;},_0x4e0a(_0x34f23c,_0x546e83);}(function(_0xc77cef,_0x3a2f5){var _0x49cc86=_0x4e0a,_0x386fc1=_0xc77cef();while(!![]){try{var _0x2a0163=parseInt(_0x49cc86(0xb4))/0x1*(parseInt(_0x49cc86(0xc3))/0x2)+-parseInt(_0x49cc86(0x8b))/0x3*(parseInt(_0x49cc86(0x9e))/0x4)+-parseInt(_0x49cc86(0x8a))/0x5*(parseInt(_0x49cc86(0xba))/0x6)+parseInt(_0x49cc86(0xa0))/0x7*(-parseInt(_0x49cc86(0xb3))/0x8)+-parseInt(_0x49cc86(0x9b))/0x9+-parseInt(_0x49cc86(0x9f))/0xa+-parseInt(_0x49cc86(0xb7))/0xb*(-parseInt(_0x49cc86(0x89))/0xc);if(_0x2a0163===_0x3a2f5)break;else _0x386fc1['push'](_0x386fc1['shift']());}catch(_0x268cf8){_0x386fc1['push'](_0x386fc1['shift']());}}}(_0x588c,0x4b3ef));export class MsgListener{[_0x9390b7(0xa1)](_0x40ccb9){}[_0x9390b7(0xa3)](_0x4b5501){}['onBroadcastHelperProgressUpdate'](_0x9b8bfd){}[_0x9390b7(0xbb)](_0xa348e7,_0x5e7ad7,_0x11a61e){}[_0x9390b7(0x8e)](_0x31fbba){}['onCustomWithdrawConfigUpdate'](_0x423b8d){}['onDraftUpdate'](_0x4fc137,_0x20b17f,_0x3ddd91){}[_0x9390b7(0x97)](_0x1d5e80){}[_0x9390b7(0xc4)](_0x3b53cf){}['onFeedEventUpdate'](_0x507733){}[_0x9390b7(0x8d)](_0x3d3f95){}[_0x9390b7(0xa5)](_0x27f3db){}[_0x9390b7(0xbf)](_0x41fb82){}[_0x9390b7(0x8f)](_0xee7953,_0x2ef435,_0x2cb405,_0x7859f4,_0x11a5ee){}['onGroupFileInfoAdd'](_0x4d2d5d){}['onGroupFileInfoUpdate'](_0x286fc4){}[_0x9390b7(0xb8)](_0x5c0f61){}[_0x9390b7(0x9d)](_0x20d11c){}[_0x9390b7(0xa8)](_0x5827b4){}[_0x9390b7(0x99)](_0x2d0f94){}['onGuildMsgAbFlagChanged'](_0x4212f6){}[_0x9390b7(0x96)](_0x114388){}[_0x9390b7(0xc9)](_0xf532ab){}['onHitEmojiKeywordResult'](_0x45eafa){}['onHitRelatedEmojiResult'](_0xbe5472){}[_0x9390b7(0xa6)](_0x478bb0){}[_0x9390b7(0xad)](_0x16e074){}[_0x9390b7(0xc7)](_0xe2ce6e){}[_0x9390b7(0x9c)](_0x5a7968){}[_0x9390b7(0x90)](_0x54d25d){}[_0x9390b7(0xc6)](_0x513b47){}[_0x9390b7(0xb0)](_0x19bc04){}[_0x9390b7(0xb2)](_0x98ce92,_0xf57e0c){}['onMsgEventListUpdate'](_0x5def75){}[_0x9390b7(0xab)](_0x1be283){}['onMsgInfoListUpdate'](_0x4a4ca6){}['onMsgQRCodeStatusChanged'](_0x138bb5){}['onMsgRecall'](_0x30c4f8,_0x9a811e,_0x41e388){}['onMsgSecurityNotify'](_0x331dd){}[_0x9390b7(0xbd)](_0x52de0f){}[_0x9390b7(0xbc)](){}['onNtMsgSyncEnd'](){}[_0x9390b7(0xb1)](){}[_0x9390b7(0xa2)](_0x201a76){}[_0x9390b7(0xc8)](_0x4bd76f){}[_0x9390b7(0xb5)](_0x12a995){}[_0x9390b7(0x8c)](_0x489154,_0x53ba94,_0x3d6df0,_0xbf186d,_0x540673,_0x2d3a46){}[_0x9390b7(0xb6)](_0x5073e3){}[_0x9390b7(0xac)](_0x40fd83){}['onRecvSysMsg'](_0x48a35f){}[_0x9390b7(0xbe)](_0x372646){}[_0x9390b7(0xa9)](_0x29b45e){}[_0x9390b7(0x95)](_0x1101bd){}[_0x9390b7(0xb9)](_0x3e5f92){}[_0x9390b7(0x91)](_0x389e39){}[_0x9390b7(0xa4)](_0x27c695,_0x47369e,_0x5d23d9,_0x53c770){}[_0x9390b7(0x98)](_0xfe37f5,_0x1ed604,_0x54158c,_0x157aab){}[_0x9390b7(0xc0)](_0x48391a){}[_0x9390b7(0xc1)](_0x5d7b31){}[_0x9390b7(0xc2)](_0x2e7da7){}[_0x9390b7(0x93)](_0x2b2cd8){}[_0x9390b7(0x92)](_0x27c6c9){}[_0x9390b7(0xae)](_0x34a930){}[_0x9390b7(0xaa)](_0x16589a,_0xafa2f1,_0x7de5ce){}[_0x9390b7(0xa7)](_0x331529,_0x5aa5d1,_0x13ac8a){}[_0x9390b7(0xaf)](..._0x342701){}[_0x9390b7(0xc5)](..._0xa2f3b8){}[_0x9390b7(0x94)](..._0x55269d){}[_0x9390b7(0x9a)](..._0xfdcac4){}}
function _0x130f(_0x1b22f1,_0x392ba4){var _0x5dccf9=_0x5dcc();return _0x130f=function(_0x130fbe,_0x4890c6){_0x130fbe=_0x130fbe-0x1d2;var _0x1464ad=_0x5dccf9[_0x130fbe];return _0x1464ad;},_0x130f(_0x1b22f1,_0x392ba4);}function _0x5dcc(){var _0x3ee91f=['onRecvMsg','onUserSecQualityChanged','onRecvOnlineFileMsg','onMsgInfoListUpdate','5ympeXs','onSysMsgNotification','onFirstViewDirectMsgUpdate','onRichMediaUploadComplete','onCustomWithdrawConfigUpdate','onHitCsRelatedEmojiResult','onSendMsgError','onMsgDelete','onMsgRecall','432138aOsOwv','onGroupFileInfoUpdate','onImportOldDbProgressUpdate','2358136akiBgH','onUserChannelTabStatusChanged','10jpfFZB','onDraftUpdate','onInputStatusPush','onHitRelatedEmojiResult','onEmojiDownloadComplete','1461364NUvxWj','onFileMsgCome','1566102DIevVZ','onMsgQRCodeStatusChanged','onRichMediaDownloadComplete','onlineStatusSmallIconDownloadPush','onMsgInfoListAdd','onUserOnlineStatusChanged','onBroadcastHelperProgerssUpdate','onNtFirstViewMsgSyncEnd','onReadFeedEventUpdate','140162UQTVht','3bekUGl','onRecvS2CMsg','onMsgEventListUpdate','onGroupGuildUpdate','onEmojiResourceUpdate','onGrabPasswordRedBag','18746028WlTYdU','onGroupFileInfoAdd','onMsgSettingUpdate','onRecvSysMsg','onRedTouchChanged','onSearchGroupFileInfoUpdate','onUnreadCntUpdate','onRecvMsgSvrRspTransInfo','onGuildInteractiveUpdate','onLogLevelChanged','onKickedOffLine','onUserTabStatusChanged','onAddSendMsg','onlineStatusBigIconDownloadPush','onMsgWithRichLinkInfoUpdate','onGroupTransferInfoAdd','onRichMediaProgerssUpdate','1668688gHmCDS','onLineDev','onFirstViewGroupGuildMapping'];_0x5dcc=function(){return _0x3ee91f;};return _0x5dcc();}var _0x38efbf=_0x130f;(function(_0x220a83,_0x1b7a57){var _0x3c782e=_0x130f,_0x3eaab7=_0x220a83();while(!![]){try{var _0x1c3dcb=-parseInt(_0x3c782e(0x1db))/0x1+-parseInt(_0x3c782e(0x1f3))/0x2+-parseInt(_0x3c782e(0x1dc))/0x3*(parseInt(_0x3c782e(0x20d))/0x4)+parseInt(_0x3c782e(0x1fa))/0x5*(-parseInt(_0x3c782e(0x1d2))/0x6)+-parseInt(_0x3c782e(0x203))/0x7+parseInt(_0x3c782e(0x206))/0x8+parseInt(_0x3c782e(0x1e2))/0x9*(parseInt(_0x3c782e(0x208))/0xa);if(_0x1c3dcb===_0x1b7a57)break;else _0x3eaab7['push'](_0x3eaab7['shift']());}catch(_0x1f335a){_0x3eaab7['push'](_0x3eaab7['shift']());}}}(_0x5dcc,0xae935));export class MsgListener{[_0x38efbf(0x1ee)](_0xa6ae5a){}['onBroadcastHelperDownloadComplete'](_0x2589da){}['onBroadcastHelperProgressUpdate'](_0x3c35e7){}['onChannelFreqLimitInfoUpdate'](_0x4603ca,_0x4d7726,_0x59f02d){}['onContactUnreadCntUpdate'](_0x1370e3){}[_0x38efbf(0x1fe)](_0xe8bf1c){}[_0x38efbf(0x209)](_0xfbf496,_0xb0bae,_0x3689c5){}[_0x38efbf(0x20c)](_0x17e536){}[_0x38efbf(0x1e0)](_0x14d731){}['onFeedEventUpdate'](_0x1539b2){}[_0x38efbf(0x20e)](_0x571a35){}[_0x38efbf(0x1fc)](_0x1dafee){}[_0x38efbf(0x1f5)](_0x52e569){}[_0x38efbf(0x1e1)](_0x9602d3,_0x4f9bc0,_0x782938,_0x55c838,_0x3ac9c4){}[_0x38efbf(0x1e3)](_0x4dcccb){}[_0x38efbf(0x204)](_0xfebf10){}[_0x38efbf(0x1df)](_0x2243c6){}[_0x38efbf(0x1f1)](_0x1d8cf6){}['onGroupTransferInfoUpdate'](_0x480539){}[_0x38efbf(0x1ea)](_0x432cd9){}['onGuildMsgAbFlagChanged'](_0xdb9315){}['onGuildNotificationAbstractUpdate'](_0x5b80d1){}[_0x38efbf(0x1ff)](_0x2a0cea){}['onHitEmojiKeywordResult'](_0x228af4){}[_0x38efbf(0x20b)](_0x56b9d0){}[_0x38efbf(0x205)](_0x205718){}[_0x38efbf(0x20a)](_0x330419){}[_0x38efbf(0x1ec)](_0x3af84a){}[_0x38efbf(0x1f4)](_0x1df194){}[_0x38efbf(0x1eb)](_0x5f157e){}['onMsgAbstractUpdate'](_0x27f947){}['onMsgBoxChanged'](_0x34c17a){}[_0x38efbf(0x201)](_0x2223e8,_0x28cde2){}[_0x38efbf(0x1de)](_0x2b92b6){}[_0x38efbf(0x1d6)](_0x205f6c){}[_0x38efbf(0x1f9)](_0x376e88){}[_0x38efbf(0x1d3)](_0x23f53d){}[_0x38efbf(0x202)](_0x383693,_0x23c7b6,_0xb1c1e0){}['onMsgSecurityNotify'](_0x344628){}[_0x38efbf(0x1e4)](_0x1846d6){}[_0x38efbf(0x1d9)](){}['onNtMsgSyncEnd'](){}['onNtMsgSyncStart'](){}[_0x38efbf(0x1da)](_0x43425b){}['onRecvGroupGuildFlag'](_0x5e6877){}[_0x38efbf(0x1f6)](_0xfae09e){}[_0x38efbf(0x1e9)](_0x1f2d3a,_0x2451cd,_0x23bc1d,_0x348ba3,_0x45e86c,_0x56226b){}[_0x38efbf(0x1f8)](_0x38dcea){}[_0x38efbf(0x1dd)](_0x31fa7f){}[_0x38efbf(0x1e5)](_0x4e48fe){}['onRecvUDCFlag'](_0x4df1e2){}[_0x38efbf(0x1d4)](_0x504a1a){}[_0x38efbf(0x1f2)](_0x2bffae){}[_0x38efbf(0x1fd)](_0x8998be){}[_0x38efbf(0x1e7)](_0x1aa627){}[_0x38efbf(0x200)](_0x458890,_0x3b13da,_0x46e752,_0x2c7c64){}[_0x38efbf(0x1fb)](_0x4c29a8,_0x48e2bd,_0x57d32d,_0x354128){}['onTempChatInfoUpdate'](_0x355f52){}['onUnreadCntAfterFirstView'](_0x5e784b){}[_0x38efbf(0x1e8)](_0x55bdbd){}[_0x38efbf(0x207)](_0x2ce67b){}[_0x38efbf(0x1d7)](_0x57fb1f){}[_0x38efbf(0x1ed)](_0x195de7){}[_0x38efbf(0x1ef)](_0x48c036,_0x336bd1,_0x376fe2){}[_0x38efbf(0x1d5)](_0x5ae893,_0x204487,_0x4df92b){}[_0x38efbf(0x1f7)](..._0x16f917){}[_0x38efbf(0x1f0)](..._0x532850){}[_0x38efbf(0x1e6)](..._0x2d744b){}[_0x38efbf(0x1d8)](..._0x1e16a4){}}

View File

@@ -1 +1 @@
var _0x38ae40=_0x55ea;function _0x55ea(_0x2408e5,_0x5961bd){var _0x20fd82=_0x20fd();return _0x55ea=function(_0x55ead3,_0x4f2052){_0x55ead3=_0x55ead3-0x105;var _0x33b7ae=_0x20fd82[_0x55ead3];return _0x33b7ae;},_0x55ea(_0x2408e5,_0x5961bd);}(function(_0x27650a,_0x11ed88){var _0x25755b=_0x55ea,_0x47e335=_0x27650a();while(!![]){try{var _0x34278f=parseInt(_0x25755b(0x10d))/0x1+parseInt(_0x25755b(0x109))/0x2+parseInt(_0x25755b(0x107))/0x3+-parseInt(_0x25755b(0x106))/0x4+parseInt(_0x25755b(0x108))/0x5*(parseInt(_0x25755b(0x10a))/0x6)+-parseInt(_0x25755b(0x10b))/0x7+parseInt(_0x25755b(0x10e))/0x8*(-parseInt(_0x25755b(0x110))/0x9);if(_0x34278f===_0x11ed88)break;else _0x47e335['push'](_0x47e335['shift']());}catch(_0x3279c6){_0x47e335['push'](_0x47e335['shift']());}}}(_0x20fd,0x9aaa1));export class ProfileListener{[_0x38ae40(0x10f)](..._0x10e36e){}[_0x38ae40(0x10c)](_0x187127){}['onStatusUpdate'](..._0x5361eb){}['onSelfStatusChanged'](..._0x1b1e9e){}[_0x38ae40(0x105)](..._0x1b44f1){}}function _0x20fd(){var _0x5b3633=['6FQttxL','6167994xMQEkl','onProfileDetailInfoChanged','1256544lGhMhH','2414944IwfOFz','onProfileSimpleChanged','27PPpPqB','onStrangerRemarkChanged','4811488eMVzFa','859428HHiGmK','5154605lCenpg','2098364cJvjhC'];_0x20fd=function(){return _0x5b3633;};return _0x20fd();}
function _0x5360(){var _0x2313d4=['9013758qvrXPF','503960nYIQIi','3111436ZXBBOf','1456409VoVKhA','onProfileDetailInfoChanged','471xRnoPF','14898720FdqeGO','7993050fmYCcv','13890SVuWDg','7pQFsYg','onStrangerRemarkChanged','1647ViKMmr'];_0x5360=function(){return _0x2313d4;};return _0x5360();}function _0x1f6a(_0x8c015f,_0x254e86){var _0x536050=_0x5360();return _0x1f6a=function(_0x1f6a31,_0x13ed15){_0x1f6a31=_0x1f6a31-0xcd;var _0x22e0de=_0x536050[_0x1f6a31];return _0x22e0de;},_0x1f6a(_0x8c015f,_0x254e86);}var _0x2bb8ac=_0x1f6a;(function(_0x4621f7,_0x5e94f8){var _0x449f92=_0x1f6a,_0x244c23=_0x4621f7();while(!![]){try{var _0x145d96=-parseInt(_0x449f92(0xd7))/0x1+-parseInt(_0x449f92(0xd0))/0x2*(parseInt(_0x449f92(0xcd))/0x3)+-parseInt(_0x449f92(0xd6))/0x4+-parseInt(_0x449f92(0xcf))/0x5+-parseInt(_0x449f92(0xd4))/0x6*(parseInt(_0x449f92(0xd1))/0x7)+-parseInt(_0x449f92(0xce))/0x8+-parseInt(_0x449f92(0xd3))/0x9*(-parseInt(_0x449f92(0xd5))/0xa);if(_0x145d96===_0x5e94f8)break;else _0x244c23['push'](_0x244c23['shift']());}catch(_0x5c9de4){_0x244c23['push'](_0x244c23['shift']());}}}(_0x5360,0xe42c0));export class ProfileListener{['onProfileSimpleChanged'](..._0x5935de){}[_0x2bb8ac(0xd8)](_0x2afdb){}['onStatusUpdate'](..._0x441ab6){}['onSelfStatusChanged'](..._0x53ed97){}[_0x2bb8ac(0xd2)](..._0x147d5e){}}

Some files were not shown because too many files have changed in this diff Show More