llonebot-dist 8.0.5 → 8.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/llbot.js CHANGED
@@ -19144,7 +19144,17 @@ function parseElements(elems, isGroup) {
19144
19144
  const svcType = elem.commonElem.serviceType;
19145
19145
  const bizType = elem.commonElem.businessType;
19146
19146
  const pbElem = elem.commonElem.pbElem;
19147
- if (svcType === 37) {
19147
+ if (svcType === 33) {
19148
+ const ext = Msg.QSmallFaceExtra.decode(pbElem);
19149
+ result.push({
19150
+ elementType: ElementType.Face,
19151
+ faceElement: {
19152
+ faceIndex: ext.faceId,
19153
+ faceType: 2,
19154
+ faceText: ext.text
19155
+ }
19156
+ });
19157
+ } else if (svcType === 37) {
19148
19158
  const ext = Msg.LargeFaceExtra.decode(pbElem);
19149
19159
  const faceIndex = Number(ext.faceId ?? 0);
19150
19160
  const face = face_config_default.sysface.find((f) => f.QSid === String(faceIndex));
@@ -19262,13 +19272,6 @@ function registerDispatcher(ctx) {
19262
19272
  try {
19263
19273
  switch (cmd) {
19264
19274
  case MSG_PUSH_CMD:
19265
- if (process.env.DEBUG_RAW_PUSH) try {
19266
- const m = Msg.PushMsg.decode(payload).message;
19267
- const rh = m?.routingHead;
19268
- console.log(`[RawPush] MsgPush msgType=${m?.contentHead.msgType} subType=${m?.contentHead.subType} fromUid=${rh?.fromUid ?? "?"} fromUin=${rh?.fromUin ?? "?"} groupCode=${rh?.group?.groupCode ?? "?"}`);
19269
- } catch (e) {
19270
- console.log(`[RawPush] MsgPush decode failed: ${e.message}`);
19271
- }
19272
19275
  handleMsgPush(ctx, payload);
19273
19276
  break;
19274
19277
  case KICK_CMD:
@@ -19285,6 +19288,11 @@ function registerDispatcher(ctx) {
19285
19288
  }
19286
19289
  function handleMsgPush(ctx, payload) {
19287
19290
  const msg = Msg.PushMsg.decode(payload).message;
19291
+ if (process.env.DEBUG_RAW_PUSH) {
19292
+ const m = msg;
19293
+ const rh = m?.routingHead;
19294
+ console.log(`[RawPush] MsgPush msgType=${m?.contentHead.msgType} subType=${m?.contentHead.subType} fromUid=${rh?.fromUid ?? "?"} fromUin=${rh?.fromUin ?? "?"} groupCode=${rh?.group?.groupCode ?? "?"}`);
19295
+ }
19288
19296
  if (!msg) return;
19289
19297
  const msgType = msg.contentHead.msgType;
19290
19298
  const subType = msg.contentHead.subType;
@@ -20669,7 +20677,7 @@ var OB11HeartbeatEvent = class extends OB11BaseMetaEvent {
20669
20677
  };
20670
20678
  //#endregion
20671
20679
  //#region src/version.ts
20672
- var version$3 = "8.0.5";
20680
+ var version$3 = "8.0.6";
20673
20681
  //#endregion
20674
20682
  //#region node_modules/sift/es5m/index.js
20675
20683
  /******************************************************************************
@@ -31546,7 +31554,7 @@ var UploadPrivateFile$1 = class extends BaseAction {
31546
31554
  if (name.includes("/") || name.includes("\\")) throw new Error(`文件名 ${name} 不合法`);
31547
31555
  const uid = await this.ctx.ntUserApi.getUidByUin(+payload.user_id);
31548
31556
  if (!uid) throw new Error("无法获取用户信息");
31549
- const info = await this.ctx.ntFileApi.uploadPrivateFile(uid, path, name);
31557
+ const info = await this.ctx.ntFileApi.uploadPrivateFile(ChatType.C2C, uid, path, name);
31550
31558
  if (!isLocal) unlink(path).catch(noop);
31551
31559
  const result = await this.ctx.ntMsgApi.sendPrivateFileMessage({
31552
31560
  toUin: +payload.user_id,
@@ -31671,7 +31679,7 @@ var OCRImage = class extends BaseAction {
31671
31679
  const { errMsg, isLocal, path, success } = await uri2local(this.ctx, payload.image);
31672
31680
  if (!success) throw new Error(errMsg);
31673
31681
  const size = await getImageSize(path);
31674
- const result = await this.ctx.ntFileApi.uploadPrivateImage(selfInfo.uid, path, size.width, size.height, "", 0);
31682
+ const result = await this.ctx.ntFileApi.uploadPrivateImage(ChatType.C2C, selfInfo.uid, path, size.width, size.height, "", 0);
31675
31683
  if (!isLocal) unlink(path).catch(noop);
31676
31684
  const msgInfoBytes = result.msgInfo instanceof Uint8Array || Buffer.isBuffer(result.msgInfo) ? Buffer.from(result.msgInfo) : null;
31677
31685
  if (!msgInfoBytes) throw new Error("uploadC2CImage 返回的 msgInfo 不是 bytes");
@@ -50920,7 +50928,7 @@ var FileApi = [
50920
50928
  await writeFile(tempPath, data);
50921
50929
  const uid = await ctx.ntUserApi.getUidByUin(payload.user_id);
50922
50930
  if (!uid) return Failed(-404, "User not found");
50923
- const info = await ctx.ntFileApi.uploadPrivateFile(uid, tempPath, payload.file_name);
50931
+ const info = await ctx.ntFileApi.uploadPrivateFile(ChatType.C2C, uid, tempPath, payload.file_name);
50924
50932
  unlink(tempPath).catch(noop);
50925
50933
  const result = await ctx.ntMsgApi.sendPrivateFileMessage({
50926
50934
  toUin: payload.user_id,
@@ -56211,7 +56219,7 @@ var MessageBuilding = class MessageBuilding {
56211
56219
  }
56212
56220
  async [ElementType.Face](data) {
56213
56221
  const { faceElement } = data;
56214
- if (faceElement.stickerType && faceElement.stickerId) {
56222
+ if (faceElement.faceType === 3) {
56215
56223
  const f = faceElement;
56216
56224
  const pbElem = Msg.LargeFaceExtra.encode({
56217
56225
  aniStickerPackId: f.packId ? String(f.packId) : "1",
@@ -56225,9 +56233,19 @@ var MessageBuilding = class MessageBuilding {
56225
56233
  pbElem,
56226
56234
  businessType: f.stickerType ?? 1
56227
56235
  } });
56228
- return;
56229
- }
56230
- this.outputElems.push({ face: { index: faceElement.faceIndex } });
56236
+ } else if (faceElement.faceType === 2) {
56237
+ const f = faceElement;
56238
+ const pbElem = Msg.QSmallFaceExtra.encode({
56239
+ faceId: f.faceIndex,
56240
+ text: f.faceText,
56241
+ compatText: f.faceText
56242
+ });
56243
+ this.outputElems.push({ commonElem: {
56244
+ serviceType: 33,
56245
+ pbElem,
56246
+ businessType: f.stickerType ?? 1
56247
+ } });
56248
+ } else this.outputElems.push({ face: { index: faceElement.faceIndex } });
56231
56249
  }
56232
56250
  async [ElementType.MarketFace](data) {
56233
56251
  const { marketFaceElement } = data;
@@ -59371,6 +59389,10 @@ function isDockerEnvironment() {
59371
59389
  return false;
59372
59390
  }
59373
59391
  }
59392
+ /** PMHQ 模式必须传 --pmhq-port (CLI/Desktop/docker 启动脚本都会带), 以此区分直连模式 */
59393
+ function isPmhqMode() {
59394
+ return process.argv.some((arg) => arg.startsWith("--pmhq-port="));
59395
+ }
59374
59396
  //#endregion
59375
59397
  //#region src/webui/BE/routes/config.ts
59376
59398
  function isListenAllInterfaces(host) {
@@ -59755,7 +59777,7 @@ function createMessagesRoutes(ctx, createPicElement) {
59755
59777
  }, 500);
59756
59778
  sentMsgIds.push(info.fileId);
59757
59779
  } else {
59758
- const info = await ctx.ntFileApi.uploadPrivateFile(peerUid, f.filePath, f.fileName);
59780
+ const info = await ctx.ntFileApi.uploadPrivateFile(ChatType.C2C, peerUid, f.filePath, f.fileName);
59759
59781
  const result = await ctx.ntMsgApi.sendPrivateFileMessage({
59760
59782
  toUin: +peerId,
59761
59783
  toUid: peerUid,
@@ -73579,39 +73601,538 @@ var DirectProtocolClient = class extends EventEmitter {
73579
73601
  };
73580
73602
  }
73581
73603
  SIGN_ALLOWLIST = new Set([
73582
- "wtlogin.trans_emp",
73583
- "wtlogin.login",
73584
- "trpc.o3.ecdh_access.EcdhAccess.SsoEstablishShareKey",
73585
- "trpc.o3.ecdh_access.EcdhAccess.SsoSecureAccess",
73604
+ "AvatarInfoSvr.QQHeadUrlReq",
73605
+ "CertifiedAccountSvc.certified_account_read.GetFollowList",
73606
+ "ConfigPushSvc.PushResp",
73607
+ "ConnAuthSvr.fast_qq_login",
73608
+ "ConnAuthSvr.get_app_info",
73609
+ "ConnAuthSvr.get_app_info_emp",
73610
+ "ConnAuthSvr.get_auth_api_list",
73611
+ "ConnAuthSvr.get_auth_api_list_emp",
73612
+ "ConnAuthSvr.sdk_auth_api",
73613
+ "ConnAuthSvr.sdk_auth_api_emp",
73614
+ "FeedCloudSvr.trpc.circlesearch.exhibition.ExhibitionSvr.ExhibitionSuggestion",
73615
+ "FeedCloudSvr.trpc.feedcloud.commreader.ComReader.GetBusiInfo",
73616
+ "FeedCloudSvr.trpc.feedcloud.commreader.ComReader.GetCommentList",
73617
+ "FeedCloudSvr.trpc.feedcloud.commreader.ComReader.GetFeedList",
73618
+ "FeedCloudSvr.trpc.feedcloud.commreader.ComReader.GetMainPageBasicData",
73619
+ "FeedCloudSvr.trpc.feedcloud.commreader.ComReader.GetMainPageCommData",
73620
+ "FeedCloudSvr.trpc.feedcloud.commreader.ComReader.GetRelationGroupList",
73621
+ "FeedCloudSvr.trpc.feedcloud.commreader.ComReader.GetReplyList",
73622
+ "FeedCloudSvr.trpc.feedcloud.commreader.ComReader.GetRerankedFeedList",
73623
+ "FeedCloudSvr.trpc.feedcloud.commwriter.ComWriter.DoBarrage",
73624
+ "FeedCloudSvr.trpc.feedcloud.commwriter.ComWriter.DoComment",
73625
+ "FeedCloudSvr.trpc.feedcloud.commwriter.ComWriter.DoFollow",
73626
+ "FeedCloudSvr.trpc.feedcloud.commwriter.ComWriter.DoLike",
73627
+ "FeedCloudSvr.trpc.feedcloud.commwriter.ComWriter.DoPush",
73628
+ "FeedCloudSvr.trpc.feedcloud.commwriter.ComWriter.DoReply",
73629
+ "FeedCloudSvr.trpc.feedcloud.commwriter.ComWriter.PublishFeed",
73630
+ "FeedCloudSvr.trpc.videocircle.circleprofile.CircleProfile.SetProfile",
73631
+ "GameCenterMsg.GetUserInfo",
73632
+ "HttpConn.0x6ff_501",
73633
+ "IncreaseURLSvr.QQHeadUrlReq",
73634
+ "LightAppSvc.mini_app_cloudstorage.GetUserCloudStorage",
73635
+ "LightAppSvc.mini_app_privacy.GetPrivacyInfo",
73636
+ "LightAppSvc.mini_app_userapp.GetDropdownAppList",
73637
+ "MQUpdateSvc_com_qq_qzone_act.web.OidbSvcTrpcJsapiTcp.0x9377_0",
73638
+ "MQUpdateSvc_com_qq_ti.web.OidbSvcTrpcJsapiTcp.0x9044_0",
73639
+ "MQUpdateSvc_com_qq_ti.web.OidbSvcTrpcJsapiTcp.0x9047_0",
73640
+ "MQUpdateSvc_com_qq_ti.web.OidbSvcTrpcJsapiTcp.0x9172_0",
73641
+ "MessageSvc.PbBindUinGetMsg",
73642
+ "MessageSvc.PbGetGroupMsg",
73643
+ "MessageSvc.PbGetMsg",
73644
+ "MessageSvc.PbGetRoamMsg",
73586
73645
  "MessageSvc.PbSendMsg",
73587
- "OidbSvcTrpcTcp.0x6d9_4",
73588
- "OidbSvcTrpcTcp.0x929b_0",
73589
- "OidbSvcTrpcTcp.0xfe1_2",
73590
- "OidbSvcTrpcTcp.0xfe1_8",
73591
- "OidbSvcTrpcTcp.0x102a_1",
73646
+ "MsgProxy.SendMsg",
73647
+ "NowSummaryCard.NearbyMiniCardReq",
73648
+ "OidbSvc.0x42d",
73649
+ "OidbSvc.0x42d_4",
73650
+ "OidbSvc.0x480_9",
73651
+ "OidbSvc.0x480_9_IMCore",
73652
+ "OidbSvc.0x4ff_9",
73653
+ "OidbSvc.0x4ff_9_IMCore",
73654
+ "OidbSvc.0x515_2",
73655
+ "OidbSvc.0x53c_2",
73656
+ "OidbSvc.0x56c_6",
73657
+ "OidbSvc.0x570_8",
73658
+ "OidbSvc.0x580_1",
73659
+ "OidbSvc.0x587_123",
73660
+ "OidbSvc.0x587_normalNightSet",
73661
+ "OidbSvc.0x58b",
73662
+ "OidbSvc.0x592",
73663
+ "OidbSvc.0x592_1",
73664
+ "OidbSvc.0x592_10",
73665
+ "OidbSvc.0x592_11",
73666
+ "OidbSvc.0x592_12",
73667
+ "OidbSvc.0x592_13",
73668
+ "OidbSvc.0x592_15",
73669
+ "OidbSvc.0x592_16",
73670
+ "OidbSvc.0x592_17",
73671
+ "OidbSvc.0x592_18",
73672
+ "OidbSvc.0x592_19",
73673
+ "OidbSvc.0x592_2",
73674
+ "OidbSvc.0x592_3",
73675
+ "OidbSvc.0x592_4",
73676
+ "OidbSvc.0x592_5",
73677
+ "OidbSvc.0x592_6",
73678
+ "OidbSvc.0x592_7",
73679
+ "OidbSvc.0x592_8",
73680
+ "OidbSvc.0x592_9",
73681
+ "OidbSvc.0x59f",
73682
+ "OidbSvc.0x5d0_1",
73683
+ "OidbSvc.0x5eb_15",
73684
+ "OidbSvc.0x5eb_22",
73685
+ "OidbSvc.0x5eb_42073",
73686
+ "OidbSvc.0x5eb_42261",
73687
+ "OidbSvc.0x5eb_43",
73688
+ "OidbSvc.0x5eb_96",
73689
+ "OidbSvc.0x5eb_99",
73690
+ "OidbSvc.0x5eb_ForTheme",
73691
+ "OidbSvc.0x5eb_cn_switch",
73692
+ "OidbSvc.0x5eb_common",
73693
+ "OidbSvc.0x6d6_0",
73694
+ "OidbSvc.0x6d6_2",
73695
+ "OidbSvc.0x6d6_3",
73696
+ "OidbSvc.0x6d7_0",
73697
+ "OidbSvc.0x6d9_4",
73698
+ "OidbSvc.0x6de",
73699
+ "OidbSvc.0x758",
73700
+ "OidbSvc.0x758_0",
73701
+ "OidbSvc.0x758_1",
73702
+ "OidbSvc.0x787_0",
73703
+ "OidbSvc.0x787_1",
73704
+ "OidbSvc.0x787_11",
73705
+ "OidbSvc.0x7a2_0",
73706
+ "OidbSvc.0x7df_3",
73707
+ "OidbSvc.0x852_35",
73708
+ "OidbSvc.0x852_48",
73709
+ "OidbSvc.0x88d_0",
73710
+ "OidbSvc.0x88d_1",
73711
+ "OidbSvc.0x88d_1_2",
73712
+ "OidbSvc.0x88d_7",
73713
+ "OidbSvc.0x899_0",
73714
+ "OidbSvc.0x899_9",
73715
+ "OidbSvc.0x89a_0",
73716
+ "OidbSvc.0x89b_1",
73717
+ "OidbSvc.0x8a0_0",
73718
+ "OidbSvc.0x8a1_0",
73719
+ "OidbSvc.0x8a1_7",
73720
+ "OidbSvc.0x8a4",
73721
+ "OidbSvc.0x8a8",
73722
+ "OidbSvc.0x8ba",
73723
+ "OidbSvc.0x8f1",
73724
+ "OidbSvc.0x9fa",
73725
+ "OidbSvc.0xb3c",
73726
+ "OidbSvc.0xb3c_1",
73727
+ "OidbSvc.0xb3c_2",
73728
+ "OidbSvc.0xb3c_3",
73729
+ "OidbSvc.0xb3c_4",
73730
+ "OidbSvc.0xb3c_5",
73731
+ "OidbSvc.0xb3c_6",
73732
+ "OidbSvc.0xb3c_7",
73733
+ "OidbSvc.0xb3c_8",
73734
+ "OidbSvc.0xb3c_add",
73735
+ "OidbSvc.0xb3c_delete",
73736
+ "OidbSvc.0xb3c_get_by_id",
73737
+ "OidbSvc.0xb3c_get_done",
73738
+ "OidbSvc.0xb3c_get_done_count",
73739
+ "OidbSvc.0xb3c_get_undone",
73740
+ "OidbSvc.0xb3c_share",
73741
+ "OidbSvc.0xb3c_update",
73742
+ "OidbSvc.0xb3c_update_5",
73743
+ "OidbSvc.0xb77_34",
73744
+ "OidbSvc.0xb77_46",
73745
+ "OidbSvc.0xb77_48",
73746
+ "OidbSvc.0xb77_9",
73747
+ "OidbSvc.0xbbb",
73748
+ "OidbSvc.0xbcb",
73749
+ "OidbSvc.0xbe8",
73750
+ "OidbSvc.0xc26_0",
73751
+ "OidbSvc.0xc33_42220",
73752
+ "OidbSvc.0xc6b",
73753
+ "OidbSvc.0xcd5",
73754
+ "OidbSvc.0xcdd",
73755
+ "OidbSvc.0xd69",
73756
+ "OidbSvc.0xdc2_34",
73757
+ "OidbSvc.0xdc2_9",
73758
+ "OidbSvc.0xe27",
73759
+ "OidbSvc.0xe3e",
73760
+ "OidbSvc.0xe61",
73761
+ "OidbSvc.0xe63_1",
73762
+ "OidbSvc.0xe72",
73763
+ "OidbSvc.0xef0_1",
73764
+ "OidbSvc.0xf7e_1",
73765
+ "OidbSvc.oidb_0x758",
73766
+ "OidbSvcTRPCTcp.0x758_1",
73767
+ "OidbSvcTRPCTcp.0xf67_1",
73768
+ "OidbSvcTcp.0x102a",
73769
+ "OidbSvcTcp.0x88d_0",
73770
+ "OidbSvcTcp.0x88d_1",
73771
+ "OidbSvcTcp.0xef0_1",
73772
+ "OidbSvcTrpcTcp.0x1017_1",
73773
+ "OidbSvcTrpcTcp.0x101b_1",
73774
+ "OidbSvcTrpcTcp.0x101e_1",
73775
+ "OidbSvcTrpcTcp.0x101e_2",
73592
73776
  "OidbSvcTrpcTcp.0x102a_0",
73593
- "OidbSvcTrpcTcp.0xfd4_1",
73594
- "OidbSvcTrpcTcp.0xfe5_2",
73595
- "OidbSvcTrpcTcp.0x5cf_11",
73777
+ "OidbSvcTrpcTcp.0x102a_1",
73778
+ "OidbSvcTrpcTcp.0x102a_3",
73779
+ "OidbSvcTrpcTcp.0x105b_1",
73780
+ "OidbSvcTrpcTcp.0x1092_0",
73596
73781
  "OidbSvcTrpcTcp.0x10c0_1",
73597
73782
  "OidbSvcTrpcTcp.0x10c0_2",
73598
73783
  "OidbSvcTrpcTcp.0x10c8_1",
73599
- "OidbSvcTrpcTcp.0x972_6",
73600
- "OidbSvcTrpcTcp.0x8fc_3",
73601
- "OidbSvcTrpcTcp.0x6d6_2",
73602
- "OidbSvcTrpcTcp.0x6d6_3",
73603
- "OidbSvcTrpcTcp.0xe37_1700",
73604
- "OidbSvcTrpcTcp.0xe37_1200",
73605
- "OidbSvcTrpcTcp.0x11c5_100",
73606
- "OidbSvcTrpcTcp.0x11c5_200",
73784
+ "OidbSvcTrpcTcp.0x10c8_2",
73785
+ "OidbSvcTrpcTcp.0x10d8_1",
73786
+ "OidbSvcTrpcTcp.0x10db_1",
73787
+ "OidbSvcTrpcTcp.0x10e4_1",
73788
+ "OidbSvcTrpcTcp.0x10ed_1",
73789
+ "OidbSvcTrpcTcp.0x10f4_1",
73790
+ "OidbSvcTrpcTcp.0x1100_1",
73791
+ "OidbSvcTrpcTcp.0x1102_1",
73792
+ "OidbSvcTrpcTcp.0x1103_1",
73793
+ "OidbSvcTrpcTcp.0x1105_1",
73794
+ "OidbSvcTrpcTcp.0x1107_1",
73795
+ "OidbSvcTrpcTcp.0x110d_1",
73796
+ "OidbSvcTrpcTcp.0x112a_1",
73797
+ "OidbSvcTrpcTcp.0x112a_2",
73798
+ "OidbSvcTrpcTcp.0x112e_1",
73799
+ "OidbSvcTrpcTcp.0x1130_1",
73800
+ "OidbSvcTrpcTcp.0x116c_1",
73801
+ "OidbSvcTrpcTcp.0x116d_1",
73802
+ "OidbSvcTrpcTcp.0x1194_1",
73607
73803
  "OidbSvcTrpcTcp.0x11c4_100",
73608
73804
  "OidbSvcTrpcTcp.0x11c4_200",
73805
+ "OidbSvcTrpcTcp.0x11c5_100",
73806
+ "OidbSvcTrpcTcp.0x11c5_200",
73609
73807
  "OidbSvcTrpcTcp.0x11e9_100",
73610
73808
  "OidbSvcTrpcTcp.0x11e9_200",
73809
+ "OidbSvcTrpcTcp.0x11ea_200",
73810
+ "OidbSvcTrpcTcp.0x11ec_1",
73811
+ "OidbSvcTrpcTcp.0x121e_0",
73812
+ "OidbSvcTrpcTcp.0x1224_0",
73813
+ "OidbSvcTrpcTcp.0x1225_0",
73814
+ "OidbSvcTrpcTcp.0x123c_1",
73815
+ "OidbSvcTrpcTcp.0x1250_0",
73816
+ "OidbSvcTrpcTcp.0x1258_1",
73817
+ "OidbSvcTrpcTcp.0x125b_500",
73818
+ "OidbSvcTrpcTcp.0x1262_19",
73611
73819
  "OidbSvcTrpcTcp.0x126d_200",
73612
73820
  "OidbSvcTrpcTcp.0x126e_200",
73821
+ "OidbSvcTrpcTcp.0x1277_0",
73822
+ "OidbSvcTrpcTcp.0x127a_0",
73823
+ "OidbSvcTrpcTcp.0x1289_1",
73824
+ "OidbSvcTrpcTcp.0x12a9_200",
73825
+ "OidbSvcTrpcTcp.0x12b1_0",
73826
+ "OidbSvcTrpcTcp.0x55f_0",
73827
+ "OidbSvcTrpcTcp.0x587_74",
73828
+ "OidbSvcTrpcTcp.0x5cf_11",
73829
+ "OidbSvcTrpcTcp.0x644_1",
73830
+ "OidbSvcTrpcTcp.0x6d6_2",
73831
+ "OidbSvcTrpcTcp.0x6d6_3",
73832
+ "OidbSvcTrpcTcp.0x6d8_1",
73833
+ "OidbSvcTrpcTcp.0x6d9_2",
73834
+ "OidbSvcTrpcTcp.0x6d9_4",
73835
+ "OidbSvcTrpcTcp.0x758_1",
73836
+ "OidbSvcTrpcTcp.0x787_1",
73837
+ "OidbSvcTrpcTcp.0x7c1_1",
73838
+ "OidbSvcTrpcTcp.0x7c2_5",
73839
+ "OidbSvcTrpcTcp.0x88d_0",
73840
+ "OidbSvcTrpcTcp.0x88d_111",
73841
+ "OidbSvcTrpcTcp.0x88d_14",
73842
+ "OidbSvcTrpcTcp.0x899_0",
73843
+ "OidbSvcTrpcTcp.0x899_1",
73844
+ "OidbSvcTrpcTcp.0x899_9",
73845
+ "OidbSvcTrpcTcp.0x89a_0",
73846
+ "OidbSvcTrpcTcp.0x89a_15",
73847
+ "OidbSvcTrpcTcp.0x8a0_1",
73848
+ "OidbSvcTrpcTcp.0x8a1_7",
73849
+ "OidbSvcTrpcTcp.0x8f9_14",
73850
+ "OidbSvcTrpcTcp.0x8fc_3",
73851
+ "OidbSvcTrpcTcp.0x901f_1",
73852
+ "OidbSvcTrpcTcp.0x902e_1",
73853
+ "OidbSvcTrpcTcp.0x9076_1",
73854
+ "OidbSvcTrpcTcp.0x9078_1",
73855
+ "OidbSvcTrpcTcp.0x9079_1",
73856
+ "OidbSvcTrpcTcp.0x911a_19",
73857
+ "OidbSvcTrpcTcp.0x911a_22",
73858
+ "OidbSvcTrpcTcp.0x9124_0",
73859
+ "OidbSvcTrpcTcp.0x9127_1",
73860
+ "OidbSvcTrpcTcp.0x9144_1",
73861
+ "OidbSvcTrpcTcp.0x9176_1",
73862
+ "OidbSvcTrpcTcp.0x917b_1",
73863
+ "OidbSvcTrpcTcp.0x91b6_1",
73864
+ "OidbSvcTrpcTcp.0x929b_0",
73865
+ "OidbSvcTrpcTcp.0x92d5_0",
73866
+ "OidbSvcTrpcTcp.0x92e3_0",
73867
+ "OidbSvcTrpcTcp.0x92e4_0",
73868
+ "OidbSvcTrpcTcp.0x92eb_0",
73869
+ "OidbSvcTrpcTcp.0x930d_0",
73870
+ "OidbSvcTrpcTcp.0x930e_0",
73871
+ "OidbSvcTrpcTcp.0x93d7_1",
73872
+ "OidbSvcTrpcTcp.0x9409_10",
73873
+ "OidbSvcTrpcTcp.0x9409_11",
73874
+ "OidbSvcTrpcTcp.0x9409_12",
73875
+ "OidbSvcTrpcTcp.0x9409_13",
73876
+ "OidbSvcTrpcTcp.0x9409_14",
73877
+ "OidbSvcTrpcTcp.0x9409_15",
73878
+ "OidbSvcTrpcTcp.0x9409_16",
73879
+ "OidbSvcTrpcTcp.0x9409_18",
73880
+ "OidbSvcTrpcTcp.0x9409_7",
73881
+ "OidbSvcTrpcTcp.0x9559_0",
73882
+ "OidbSvcTrpcTcp.0x955f_1",
73883
+ "OidbSvcTrpcTcp.0x9560_1",
73884
+ "OidbSvcTrpcTcp.0x962a_1",
73885
+ "OidbSvcTrpcTcp.0x9689_1",
73886
+ "OidbSvcTrpcTcp.0x972_6",
73887
+ "OidbSvcTrpcTcp.0x9a2_12",
73888
+ "OidbSvcTrpcTcp.0x9a2_8",
73889
+ "OidbSvcTrpcTcp.0xa80_1",
73890
+ "OidbSvcTrpcTcp.0xaf6_0",
73891
+ "OidbSvcTrpcTcp.0xb77_57",
73892
+ "OidbSvcTrpcTcp.0xcd5",
73893
+ "OidbSvcTrpcTcp.0xdc2_34",
73894
+ "OidbSvcTrpcTcp.0xe37_1200",
73895
+ "OidbSvcTrpcTcp.0xe37_1700",
73896
+ "OidbSvcTrpcTcp.0xe37_700",
73897
+ "OidbSvcTrpcTcp.0xe37_800",
73898
+ "OidbSvcTrpcTcp.0xf55_1",
73899
+ "OidbSvcTrpcTcp.0xf57_1",
73900
+ "OidbSvcTrpcTcp.0xf57_106",
73901
+ "OidbSvcTrpcTcp.0xf57_9",
73902
+ "OidbSvcTrpcTcp.0xf59_1",
73903
+ "OidbSvcTrpcTcp.0xf59_2",
73904
+ "OidbSvcTrpcTcp.0xf5b_1",
73905
+ "OidbSvcTrpcTcp.0xf5d_1",
73906
+ "OidbSvcTrpcTcp.0xf5d_11",
73907
+ "OidbSvcTrpcTcp.0xf65_1",
73908
+ "OidbSvcTrpcTcp.0xf65_10",
73909
+ "OidbSvcTrpcTcp.0xf67_1",
73910
+ "OidbSvcTrpcTcp.0xf67_5",
73911
+ "OidbSvcTrpcTcp.0xf6e_1",
73912
+ "OidbSvcTrpcTcp.0xf88_1",
73913
+ "OidbSvcTrpcTcp.0xf89_1",
73914
+ "OidbSvcTrpcTcp.0xfa5_1",
73915
+ "OidbSvcTrpcTcp.0xfc9_1",
73916
+ "OidbSvcTrpcTcp.0xfd4_1",
73917
+ "OidbSvcTrpcTcp.0xfe1",
73918
+ "OidbSvcTrpcTcp.0xfe1_2",
73919
+ "OidbSvcTrpcTcp.0xfe1_8",
73920
+ "OidbSvcTrpcTcp.0xfe4_2",
73921
+ "OidbSvcTrpcTcp.0xfe5_2",
73922
+ "OidbSvcTrpcTcp.0xfe7_2",
73923
+ "OidbSvcTrpcTcp.0xfe7_3",
73924
+ "OidbSvcTrpcTcp.0xfe7_4",
73925
+ "OidbSvc_device.0x633",
73926
+ "OidbSvc_device.0x9f5",
73927
+ "PbMessageSvc.PbUnReadMsgSeq",
73928
+ "ProfileService.GetSimpleInfo",
73929
+ "ProfileService.GroupMngReq",
73930
+ "ProfileService.Pb.ReqSystemMsgAction.Group",
73931
+ "ProfileService.Pb.ReqSystemMsgNew.Group",
73932
+ "ProfileService.ReqBatchProcess",
73933
+ "ProfileService.SimpleInfo",
73934
+ "ProfileService.getGroupInfoReq",
73935
+ "PttStore.GroupPttDown",
73936
+ "PubAccountSvc.get_follow_list",
73937
+ "PushService.settoken",
73938
+ "QChannelSvr.trpc.qchannel.commreader.ComReader.BatchGetFeedDetail",
73939
+ "QChannelSvr.trpc.qchannel.commwriter.ComWriter.DoComment",
73940
+ "QChannelSvr.trpc.qchannel.commwriter.ComWriter.DoReply",
73941
+ "QChannelSvr.trpc.qchannel.commwriter.ComWriter.PublishFeed",
73942
+ "QQAIOMediaSvc.share_trans_check",
73943
+ "QQConnectLogin.auth",
73944
+ "QQConnectLogin.auth_emp",
73945
+ "QQConnectLogin.get_promote_page",
73946
+ "QQConnectLogin.get_promote_page_emp",
73947
+ "QQConnectLogin.pre_auth",
73948
+ "QQConnectLogin.pre_auth_emp",
73949
+ "QQConnectLogin.submit_promote_page",
73950
+ "QQConnectLogin.submit_promote_page_emp",
73951
+ "QQLBSShareSvc.room_operation",
73952
+ "QQRTCSvc.RoomManager-GetRoomInfo",
73953
+ "QQStranger.FeedPlazaSvr.SsoFeedPublish",
73954
+ "QQStranger.FeedSvr.SsoFeedPublish",
73955
+ "QQStranger.InteractiveMsgSvr.SsoSendInterMsg",
73956
+ "QQStranger.UserInfo.SsoBatchGetMiniUserInfo",
73957
+ "QQStranger.UserInfo.SsoGetMiniUserInfo",
73958
+ "QQStranger.UserInfo.SsoSetMiniUserInfo",
73959
+ "QQStranger.login_svr.SsoLoginInfoReport",
73960
+ "QSec.AVEng",
73961
+ "RegPrxySvc.infoLogin",
73962
+ "RegPrxySvc.infoSync",
73963
+ "ResourceConfig.ClientReq",
73964
+ "ResourceConfig.GetResourceReq",
73965
+ "SQQzoneSvc.Custom.getFacade",
73966
+ "SQQzoneSvc.GetCate",
73967
+ "SQQzoneSvc.addComment",
73968
+ "SQQzoneSvc.addReply",
73969
+ "SQQzoneSvc.elaborateFeedReport",
73970
+ "SQQzoneSvc.forward",
73971
+ "SQQzoneSvc.get",
73972
+ "SQQzoneSvc.getAIONewestFeeds",
73973
+ "SQQzoneSvc.getActiveFeeds",
73974
+ "SQQzoneSvc.getMainPage",
73975
+ "SQQzoneSvc.getPhotoComment",
73976
+ "SQQzoneSvc.getPhotoWall",
73977
+ "SQQzoneSvc.getProfile",
73978
+ "SQQzoneSvc.getProfileFeeds",
73979
+ "SQQzoneSvc.getUndealCount",
73980
+ "SQQzoneSvc.getVisitorNotify",
73981
+ "SQQzoneSvc.get_all_feedsphoto_ex",
73982
+ "SQQzoneSvc.like",
73983
+ "SQQzoneSvc.mobileqboss.get",
73984
+ "SQQzoneSvc.photo",
73985
+ "SQQzoneSvc.preGetPassiveFeeds",
73986
+ "SQQzoneSvc.publishmood",
73987
+ "SQQzoneSvc.shuoshuo",
73988
+ "SecuritySvc.GetConfig",
73989
+ "SsoSnsSession.Cmd0x3_SubCmd0x1_FuncGetBlockList",
73990
+ "StatSvc.GetDevLoginInfo",
73991
+ "StatSvc.GetOnlineStatus",
73992
+ "StatSvc.SetStatusFromClient",
73993
+ "StatSvc.SimpleGet",
73994
+ "StatSvc.register",
73995
+ "SummaryCard.ReqSummaryCard",
73996
+ "VisitorSvc.ReqDeleteVisitorRecord",
73997
+ "VisitorSvc.ReqFavorite",
73998
+ "WalletGestureSvc.GetPassword",
73999
+ "WalletGestureSvc.GetSignV2",
74000
+ "WalletGestureSvc.SetPassword",
74001
+ "account.RequestQueryQQMobileContactsV3",
74002
+ "friendlist.AddFriendReq",
74003
+ "friendlist.GetFriendListReq",
74004
+ "friendlist.GetLastLoginInfoReq",
74005
+ "friendlist.GetMultiTroopInfoReq",
74006
+ "friendlist.GetSimpleOnlineFriendInfoReq",
74007
+ "friendlist.GetTroopAppointRemarkReq",
74008
+ "friendlist.GetTroopListReqV2",
74009
+ "friendlist.GetTroopMemberList",
74010
+ "friendlist.GetTroopMemberListReq",
74011
+ "friendlist.ModifyGroupInfoReq",
74012
+ "friendlist.addFriend",
74013
+ "friendlist.getFriendGroupList",
74014
+ "friendlist.getTroopMemberList",
74015
+ "gcbindgroupsso.get_appid",
74016
+ "gcbindgroupsso.unbind_group",
74017
+ "group_member_card.get_group_member_card_info",
74018
+ "group_member_statistic.get_group_member_statistic",
74019
+ "miniapp.trpc.minigame.sdk_qgroup_svr.sdk_qgroup_svr.JoinGroup",
74020
+ "oidb_0x42e_3",
74021
+ "oidb_0x43c_4",
74022
+ "oidb_0x43c_5",
74023
+ "oidb_0x5d0_1",
74024
+ "oidb_0x5d6_19",
74025
+ "oidb_0x5d6_21",
74026
+ "oidb_0x7a2_0",
74027
+ "oidb_0x7c4_0",
74028
+ "oidb_0x7df_3",
74029
+ "oidb_0x9045_1",
74030
+ "oidb_0x9072_0",
74031
+ "oidb_0xcf3_0",
74032
+ "oidb_0xcf4_0",
74033
+ "oidb_0xd9c_11",
74034
+ "oidb_0xdc2_34",
74035
+ "oidb_0xe37_1200",
74036
+ "oidb_0xe37_800",
74037
+ "oidb_0xe61_1",
74038
+ "oidb_0xe8c_0",
74039
+ "oidb_0xeb1_1",
74040
+ "oidb_0xf7e_1",
74041
+ "oidb_0xfd4_1",
74042
+ "qidianservice.135",
74043
+ "qidianservice.207",
74044
+ "qidianservice.269",
74045
+ "qidianservice.290",
74046
+ "qzoneh5.h5.wnshtml",
74047
+ "trpc.QQService.CommonLogic.StatusService.SsoGetLikeList",
74048
+ "trpc.commercial.dataworks.UserActionReport_sso.SsoReport",
74049
+ "trpc.down.intercept.Intercept.SsoGetDownloadTips",
74050
+ "trpc.down.intercept.Intercept.SsoGetInterceptFile",
74051
+ "trpc.down.joint_operation_game_intercept.JointOperationGameIntercept.SsoCheck",
74052
+ "trpc.down.joint_operation_game_intercept.JointOperationGameIntercept.SsoQueryConfig",
74053
+ "trpc.ecom.api_gateway.ApiGateway.SsoForward",
74054
+ "trpc.g_qqrtc.qq_mav_room_state_read.GetRoomState.SsoGetInfoByUin",
74055
+ "trpc.gc_indust.device_report.SsoHome.SsoHomeReport",
73613
74056
  "trpc.group.long_msg_interface.MsgService.SsoRecvLongMsg",
73614
- "OidbSvcTrpcTcp.0x88d_0"
74057
+ "trpc.group.long_msg_interface.MsgService.SsoSendLongMsg",
74058
+ "trpc.group_pro.msgproxy.sendmsg",
74059
+ "trpc.group_pro.synclogic.SyncLogic.SyncFirstView",
74060
+ "trpc.login.ecdh.EcdhService.SsoKeyExchange",
74061
+ "trpc.login.ecdh.EcdhService.SsoNTLoginAuthCodeLogin",
74062
+ "trpc.login.ecdh.EcdhService.SsoNTLoginAuthLogin",
74063
+ "trpc.login.ecdh.EcdhService.SsoNTLoginAuthNewDevice",
74064
+ "trpc.login.ecdh.EcdhService.SsoNTLoginCheckA1List",
74065
+ "trpc.login.ecdh.EcdhService.SsoNTLoginCheckGateWayCode",
74066
+ "trpc.login.ecdh.EcdhService.SsoNTLoginCheckSms",
74067
+ "trpc.login.ecdh.EcdhService.SsoNTLoginCheckThirdCode",
74068
+ "trpc.login.ecdh.EcdhService.SsoNTLoginEasyLogin",
74069
+ "trpc.login.ecdh.EcdhService.SsoNTLoginEasyLoginUnusualDevice",
74070
+ "trpc.login.ecdh.EcdhService.SsoNTLoginGetSaltList",
74071
+ "trpc.login.ecdh.EcdhService.SsoNTLoginGetSms",
74072
+ "trpc.login.ecdh.EcdhService.SsoNTLoginOptimusLogin",
74073
+ "trpc.login.ecdh.EcdhService.SsoNTLoginPasswordLogin",
74074
+ "trpc.login.ecdh.EcdhService.SsoNTLoginPasswordLoginNewDevice",
74075
+ "trpc.login.ecdh.EcdhService.SsoNTLoginPasswordLoginUnusualDevice",
74076
+ "trpc.login.ecdh.EcdhService.SsoNTLoginRapidLogin",
74077
+ "trpc.login.ecdh.EcdhService.SsoNTLoginRefreshA2",
74078
+ "trpc.login.ecdh.EcdhService.SsoNTLoginRefreshTicket",
74079
+ "trpc.login.ecdh.EcdhService.SsoNTLoginTGTExchangeFastLogin",
74080
+ "trpc.login.ecdh.EcdhService.SsoOIDB0x916a",
74081
+ "trpc.login.ecdh.EcdhService.SsoOIDB0x916b",
74082
+ "trpc.login.ecdh.EcdhService.SsoOIDB0x916c",
74083
+ "trpc.login.ecdh.EcdhService.SsoOIDB0x916d",
74084
+ "trpc.login.ecdh.EcdhService.SsoQRLoginAuthQr",
74085
+ "trpc.login.ecdh.EcdhService.SsoQRLoginCancleQr",
74086
+ "trpc.login.ecdh.EcdhService.SsoQRLoginGenQr",
74087
+ "trpc.login.ecdh.EcdhService.SsoQRLoginRejectQr",
74088
+ "trpc.login.ecdh.EcdhService.SsoQRLoginScanQr",
74089
+ "trpc.lplan.feed_svr.StatusWrite.SsoComment",
74090
+ "trpc.lplan.feed_svr.StatusWrite.SsoPostStatus",
74091
+ "trpc.lplan.feed_svr.StatusWrite.SsoReply",
74092
+ "trpc.lplan.like_svr.Like.SsoDoLike",
74093
+ "trpc.lplan.map_svr.Map.SsoReportLocation",
74094
+ "trpc.lplan.user_manager_svr.User.SsoLogin",
74095
+ "trpc.lplan.user_manager_svr.User.SsoSetProfile",
74096
+ "trpc.metaverse.mob_proxy_svr.MobProxy.SsoHandle",
74097
+ "trpc.msg.msg_svc.MsgService.SsoC2CRecallMsg",
74098
+ "trpc.msg.msg_svc.MsgService.SsoGetPeerSeq",
74099
+ "trpc.msg.msg_svc.MsgService.SsoReadedReport",
74100
+ "trpc.msg.olpush.OlPushService.SsoPushAck",
74101
+ "trpc.msg.register_proxy.RegisterProxy.PushParams",
74102
+ "trpc.msg.register_proxy.RegisterProxy.SsoInfoSync",
74103
+ "trpc.o3.ecdh_access.EcdhAccess.SsoEstablishShareKey",
74104
+ "trpc.o3.ecdh_access.EcdhAccess.SsoSecureA2Access",
74105
+ "trpc.o3.ecdh_access.EcdhAccess.SsoSecureA2Establish",
74106
+ "trpc.o3.ecdh_access.EcdhAccess.SsoSecureAccess",
74107
+ "trpc.o3.report.Report.SsoReport",
74108
+ "trpc.passwd.manager.PasswdManager.SetPasswd",
74109
+ "trpc.passwd.manager.PasswdManager.VerifyPasswd",
74110
+ "trpc.qlive.qlive_proxy_svr.TrpcProxy.*",
74111
+ "trpc.qlive.relationchain_svr.RelationchainSvr.Follow",
74112
+ "trpc.qlive.word_svr.WordSvr.NewPublicChat",
74113
+ "trpc.qmeta.mob_proxy_svr.MobProxy.SsoHandle",
74114
+ "trpc.qpay.encryptedtransfer.Encryption.SsoUINEncrypt",
74115
+ "trpc.qpay.midas_order.Order.SsoMakeOrder",
74116
+ "trpc.qpay.red_pack_skin.Skin.SsoAddSkin",
74117
+ "trpc.qpay.sso.web.Do",
74118
+ "trpc.qq_new_tech.status_svc.StatusService.Register",
74119
+ "trpc.qq_new_tech.status_svc.StatusService.SetStatus",
74120
+ "trpc.qq_new_tech.status_svc.StatusService.SsoHeartBeat",
74121
+ "trpc.qq_new_tech.status_svc.StatusService.UnRegister",
74122
+ "trpc.qqhb.qqhb_proxy.Handler.sso_handle",
74123
+ "trpc.qqstranger.common_proxy.CommonProxy.SsoHandle",
74124
+ "trpc.qqva.vipdata.Vipdata.SsoGetUserData",
74125
+ "trpc.springfestival.redpacket.LuckyBag.SsoSubmitGrade",
74126
+ "wtlogin.device_lock",
74127
+ "wtlogin.exchange_emp",
74128
+ "wtlogin.log_report",
74129
+ "wtlogin.login",
74130
+ "wtlogin.name2uin",
74131
+ "wtlogin.qrlogin",
74132
+ "wtlogin.register",
74133
+ "wtlogin.trans_emp",
74134
+ "wtlogin_device.login",
74135
+ "wtlogin_device.tran_sim_emp"
73615
74136
  ]);
73616
74137
  async sendCommand(cmd, payload, encryptType, timeout = 15e3) {
73617
74138
  const seq = this.nextSeq();
@@ -74763,7 +75284,7 @@ var QQProtocolBase = class extends Service {
74763
75284
  const { pmhqHost, pmhqPort } = this.getPMHQHostPort();
74764
75285
  this.httpUrl = `http://${pmhqHost}:${pmhqPort}/`;
74765
75286
  this.wsUrl = `ws://${pmhqHost}:${pmhqPort}/ws`;
74766
- if (process.env.QQ_USE_PMHQ) this.connectWebSocket().then();
75287
+ if (isPmhqMode()) this.connectWebSocket().then();
74767
75288
  }
74768
75289
  maybeEmitOnline() {
74769
75290
  if (this.onlineEmitted) return;
@@ -74773,6 +75294,22 @@ var QQProtocolBase = class extends Service {
74773
75294
  this.ctx.parallel("qq/online");
74774
75295
  }
74775
75296
  /**
75297
+ * emit qq/online 之后 ntUserApi 才会随插件加载. 用 ctx.inject 等它 ready 再拉一次 nick;
75298
+ * 拿到就写 selfInfo.nick, 失败就 warn 一下留空。
75299
+ */
75300
+ scheduleFetchSelfNick(myToken) {
75301
+ this.ctx.inject(["ntUserApi"], async (ctx) => {
75302
+ if (this.pmhqProbeToken !== myToken) return;
75303
+ try {
75304
+ const nick = await ctx.ntUserApi.getSelfNick(false);
75305
+ this.logger.info(`getSelfNick -> ${JSON.stringify(nick)}`);
75306
+ if (nick) selfInfo.nick = nick;
75307
+ } catch (e) {
75308
+ this.logger.warn(`getSelfNick threw: ${e.message}`);
75309
+ }
75310
+ });
75311
+ }
75312
+ /**
74776
75313
  * PMHQ 模式下 LLBot 是寄生在 QQ NT 上的,QQ NT 早就登录过了,开机时的 InfoSyncPush 也早处理完。
74777
75314
  * LLBot 想要群最新 seq(拉历史用)就得自己主动触发一次:发 SsoInfoSync,server 看到注册请求就回一发 InfoSyncPush。
74778
75315
  * isFirstRegisterProxyOnline=0 + 派生 guid(基于 uid,每个号固定)尽量避免和 QQ NT 的注册项冲突。
@@ -74794,7 +75331,9 @@ var QQProtocolBase = class extends Service {
74794
75331
  if (wasOnline) this.ctx.parallel("protocol/disconnect");
74795
75332
  }
74796
75333
  /**
74797
- * PMHQ 模式:周期 SsoHeartBeat 探测登录;同时挂 recv listener self uid/uin
75334
+ * PMHQ 模式:轮询 /health self uin/uid(DLL QQ 内存直接读 uin,
75335
+ * injector 侧扫 recv pb 抠 uid, 都写到 /health)。拿到 uin+uid 立即 emit online,
75336
+ * nick 通过 scheduleFetchSelfNick 异步等 ntUserApi 服务 ready 后再拉。
74798
75337
  * 重连后会被 onopen 再次调用,所以必须先 reset 旧状态再启动新一轮。
74799
75338
  */
74800
75339
  startPmhqLoginProbe() {
@@ -74803,20 +75342,27 @@ var QQProtocolBase = class extends Service {
74803
75342
  let warnedNotLoggedIn = false;
74804
75343
  const probe = async () => {
74805
75344
  if (this.pmhqProbeToken !== myToken) return;
74806
- const ntFriendApi = this.ctx.get("ntFriendApi");
74807
- if (ntFriendApi) try {
74808
- const info = (await ntFriendApi.getFriends(true)).friends.find((e) => e.isSelf);
75345
+ try {
75346
+ const resp = await fetch(`${this.httpUrl}health`);
75347
+ if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
75348
+ const health = await resp.json();
74809
75349
  if (this.pmhqProbeToken !== myToken) return;
74810
- selfInfo.uid = info.uid;
74811
- selfInfo.uin = info.uin.toString();
74812
- selfInfo.nick = info.nick;
74813
- if (!selfInfo.online) this.logger.info("QQ 登录成功");
74814
- selfInfo.online = true;
74815
- this.maybeEmitOnline();
75350
+ if (health.uin && health.uid) {
75351
+ selfInfo.uid = health.uid;
75352
+ selfInfo.uin = String(health.uin);
75353
+ this.ctx.logger.info(`Self info ${selfInfo.nick || "<pending>"}(${selfInfo.uin}) uid=${selfInfo.uid}`);
75354
+ if (!selfInfo.online) this.logger.info("QQ 登录成功");
75355
+ selfInfo.online = true;
75356
+ this.maybeEmitOnline();
75357
+ this.scheduleFetchSelfNick(myToken);
75358
+ } else if (!warnedNotLoggedIn) {
75359
+ this.logger.info("QQ 未登录,等待登录中...");
75360
+ warnedNotLoggedIn = true;
75361
+ }
74816
75362
  } catch (e) {
74817
75363
  if (this.pmhqProbeToken !== myToken) return;
74818
- if (!warnedNotLoggedIn && !e.message.includes("(QQ DLL not connected)")) {
74819
- this.logger.info("QQ 未登录,等待登录中...");
75364
+ if (!warnedNotLoggedIn) {
75365
+ this.logger.info("PMHQ /health probe failed (QQ 未启动?), 继续等待: %s", e.message);
74820
75366
  warnedNotLoggedIn = true;
74821
75367
  }
74822
75368
  }
@@ -78040,7 +78586,7 @@ async function onLoad() {
78040
78586
  };
78041
78587
  let lastQrCodeTime = 0;
78042
78588
  isDockerEnvironment();
78043
- const useDirectProtocol = !process.env.QQ_USE_PMHQ;
78589
+ const useDirectProtocol = !isPmhqMode();
78044
78590
  const printLoginQrCode = async () => {
78045
78591
  try {
78046
78592
  const data = await ctx.qqProtocol.getDirectLoginQrCode();