@mtcute/core 0.29.7 → 0.30.0

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.
Files changed (90) hide show
  1. package/highlevel/client.d.cts +4 -6
  2. package/highlevel/client.d.ts +4 -6
  3. package/highlevel/methods/chats/join-chat.cjs +38 -16
  4. package/highlevel/methods/chats/join-chat.d.cts +20 -6
  5. package/highlevel/methods/chats/join-chat.d.ts +20 -6
  6. package/highlevel/methods/chats/join-chat.js +38 -16
  7. package/highlevel/methods/chats/save-draft.d.cts +4 -1
  8. package/highlevel/methods/chats/save-draft.d.ts +4 -1
  9. package/highlevel/methods.d.cts +2 -0
  10. package/highlevel/methods.d.ts +2 -0
  11. package/highlevel/storage/service/peers.cjs +1 -0
  12. package/highlevel/storage/service/peers.js +1 -0
  13. package/highlevel/types/files/utils.d.cts +1 -1
  14. package/highlevel/types/files/utils.d.ts +1 -1
  15. package/highlevel/types/messages/index.d.cts +1 -0
  16. package/highlevel/types/messages/index.d.ts +1 -0
  17. package/highlevel/types/messages/message.cjs +5 -0
  18. package/highlevel/types/messages/message.d.cts +3 -0
  19. package/highlevel/types/messages/message.d.ts +3 -0
  20. package/highlevel/types/messages/message.js +5 -0
  21. package/highlevel/types/messages/rich-message.cjs +50 -0
  22. package/highlevel/types/messages/rich-message.d.cts +18 -0
  23. package/highlevel/types/messages/rich-message.d.ts +18 -0
  24. package/highlevel/types/messages/rich-message.js +45 -0
  25. package/highlevel/types/peers/full-chat.cjs +6 -0
  26. package/highlevel/types/peers/full-chat.d.cts +2 -0
  27. package/highlevel/types/peers/full-chat.d.ts +2 -0
  28. package/highlevel/types/peers/full-chat.js +6 -0
  29. package/highlevel/types/peers/user.cjs +4 -0
  30. package/highlevel/types/peers/user.d.cts +2 -0
  31. package/highlevel/types/peers/user.d.ts +2 -0
  32. package/highlevel/types/peers/user.js +4 -0
  33. package/highlevel/types/updates/user-typing-update.cjs +2 -0
  34. package/highlevel/types/updates/user-typing-update.js +2 -0
  35. package/highlevel/updates/manager.cjs +191 -0
  36. package/highlevel/updates/manager.js +191 -0
  37. package/highlevel/utils/inspectable.cjs +1 -0
  38. package/highlevel/utils/inspectable.d.cts +1 -0
  39. package/highlevel/utils/inspectable.d.ts +1 -0
  40. package/highlevel/utils/inspectable.js +1 -0
  41. package/index.cjs +2 -0
  42. package/index.js +2 -0
  43. package/network/flood-control.cjs +149 -0
  44. package/network/flood-control.d.cts +79 -0
  45. package/network/flood-control.d.ts +79 -0
  46. package/network/flood-control.js +144 -0
  47. package/network/flood-control.test.d.cts +1 -0
  48. package/network/flood-control.test.d.ts +1 -0
  49. package/network/mtproto-session.cjs +1 -21
  50. package/network/mtproto-session.d.cts +1 -5
  51. package/network/mtproto-session.d.ts +1 -5
  52. package/network/mtproto-session.js +2 -22
  53. package/network/multi-session-connection.cjs +26 -16
  54. package/network/multi-session-connection.d.cts +1 -1
  55. package/network/multi-session-connection.d.ts +1 -1
  56. package/network/multi-session-connection.js +26 -16
  57. package/network/multi-session-connection.test.d.cts +1 -0
  58. package/network/multi-session-connection.test.d.ts +1 -0
  59. package/network/network-manager.cjs +3 -2
  60. package/network/network-manager.d.cts +12 -0
  61. package/network/network-manager.d.ts +12 -0
  62. package/network/network-manager.js +3 -2
  63. package/network/persistent-connection.cjs +25 -1
  64. package/network/persistent-connection.d.cts +5 -0
  65. package/network/persistent-connection.d.ts +5 -0
  66. package/network/persistent-connection.js +25 -1
  67. package/network/session-connection.cjs +5 -10
  68. package/network/session-connection.d.cts +0 -2
  69. package/network/session-connection.d.ts +0 -2
  70. package/network/session-connection.js +5 -10
  71. package/package.json +1 -1
  72. package/tl/api-schema.json +1 -1
  73. package/tl/binary/reader.cjs +176 -26
  74. package/tl/binary/reader.js +176 -26
  75. package/tl/binary/writer.cjs +439 -20
  76. package/tl/binary/writer.js +439 -20
  77. package/tl/compat/reader.cjs +23 -0
  78. package/tl/compat/reader.js +23 -0
  79. package/tl/index.d.cts +414 -14
  80. package/tl/index.d.ts +414 -14
  81. package/tl/inner-tl.cjs +20 -8
  82. package/tl/inner-tl.js +20 -8
  83. package/utils/binary/compat.cjs +79 -0
  84. package/utils/binary/compat.js +79 -0
  85. package/utils/index.d.cts +1 -0
  86. package/utils/index.d.ts +1 -0
  87. package/utils/long-utils.cjs +10 -0
  88. package/utils/long-utils.js +10 -0
  89. package/utils.cjs +7 -0
  90. package/utils.js +8 -1
@@ -117,6 +117,8 @@ export declare class FullChat extends Chat {
117
117
  get notificationsSettings(): tl.TypePeerNotifySettings | null;
118
118
  /** Information about bots in this chat */
119
119
  get botInfo(): BotInfo[];
120
+ /** Bot that approves join requests in this chat, if any */
121
+ get guardBot(): User | null;
120
122
  /**
121
123
  * For supergroups, ID of the basic group from which this supergroup was upgraded,
122
124
  * and the identifier of the last message from the original group.
@@ -210,6 +210,11 @@ class FullChat extends Chat$2 {
210
210
  get botInfo() {
211
211
  return this.full._ === "channelFull" ? this.full.botInfo.map((it) => new BotInfo$2(it)) : [];
212
212
  }
213
+ /** Bot that approves join requests in this chat, if any */
214
+ get guardBot() {
215
+ if (this.full._ !== "channelFull" || !this.full.guardBotId) return null;
216
+ return new User$2(this.peers.user(this.full.guardBotId));
217
+ }
213
218
  /**
214
219
  * For supergroups, ID of the basic group from which this supergroup was upgraded,
215
220
  * and the identifier of the last message from the original group.
@@ -314,6 +319,7 @@ const FullChat$1 = /* @__PURE__ */ memoizeGetters(FullChat, [
314
319
  "stickerSet",
315
320
  "emojiSet",
316
321
  "botInfo",
322
+ "guardBot",
317
323
  "linkedChat",
318
324
  "recentRequesters",
319
325
  "stories",
@@ -83,6 +83,10 @@ class User {
83
83
  get isBusinessBot() {
84
84
  return this.raw.botBusiness;
85
85
  }
86
+ /** Whether this bot can approve join requests */
87
+ get isBotGuard() {
88
+ return this.raw.botGuard;
89
+ }
86
90
  /** Whether this user is a bot that has access to all messages */
87
91
  get isBotWithHistory() {
88
92
  return this.raw.botChatHistory;
@@ -70,6 +70,8 @@ export declare class User {
70
70
  * Telegram Business account to receive its messages
71
71
  */
72
72
  get isBusinessBot(): boolean;
73
+ /** Whether this bot can approve join requests */
74
+ get isBotGuard(): boolean;
73
75
  /** Whether this user is a bot that has access to all messages */
74
76
  get isBotWithHistory(): boolean;
75
77
  /** Whether this user is a bot that can't be added to chats */
@@ -70,6 +70,8 @@ export declare class User {
70
70
  * Telegram Business account to receive its messages
71
71
  */
72
72
  get isBusinessBot(): boolean;
73
+ /** Whether this bot can approve join requests */
74
+ get isBotGuard(): boolean;
73
75
  /** Whether this user is a bot that has access to all messages */
74
76
  get isBotWithHistory(): boolean;
75
77
  /** Whether this user is a bot that can't be added to chats */
@@ -76,6 +76,10 @@ class User {
76
76
  get isBusinessBot() {
77
77
  return this.raw.botBusiness;
78
78
  }
79
+ /** Whether this bot can approve join requests */
80
+ get isBotGuard() {
81
+ return this.raw.botGuard;
82
+ }
79
83
  /** Whether this user is a bot that has access to all messages */
80
84
  get isBotWithHistory() {
81
85
  return this.raw.botChatHistory;
@@ -65,6 +65,8 @@ class UserTypingUpdate {
65
65
  switch (this.raw.action._) {
66
66
  case "sendMessageTypingAction":
67
67
  case "sendMessageTextDraftAction":
68
+ case "inputSendMessageRichMessageDraftAction":
69
+ case "sendMessageRichMessageDraftAction":
68
70
  return "typing";
69
71
  case "sendMessageCancelAction":
70
72
  return "cancel";
@@ -58,6 +58,8 @@ class UserTypingUpdate {
58
58
  switch (this.raw.action._) {
59
59
  case "sendMessageTypingAction":
60
60
  case "sendMessageTextDraftAction":
61
+ case "inputSendMessageRichMessageDraftAction":
62
+ case "sendMessageRichMessageDraftAction":
61
63
  return "typing";
62
64
  case "sendMessageCancelAction":
63
65
  return "cancel";
@@ -21,6 +21,178 @@ const innerTl = require("../../tl/inner-tl.cjs");
21
21
  const WARN_EVERY = 100;
22
22
  const KEEP_ALIVE_INTERVAL = 15 * 60 * 1e3;
23
23
  const UPDATES_TOO_LONG = { _: "updatesTooLong" };
24
+ function collectRichTextPeerIds(text, peers) {
25
+ if (!text) return;
26
+ switch (text._) {
27
+ case "textEmpty":
28
+ case "textPlain":
29
+ case "textEmail":
30
+ case "textPhone":
31
+ case "textImage":
32
+ case "textMath":
33
+ case "textCustomEmoji":
34
+ break;
35
+ case "textBold":
36
+ case "textItalic":
37
+ case "textUnderline":
38
+ case "textStrike":
39
+ case "textFixed":
40
+ case "textUrl":
41
+ case "textSubscript":
42
+ case "textSuperscript":
43
+ case "textMarked":
44
+ case "textAnchor":
45
+ case "textSpoiler":
46
+ case "textMention":
47
+ case "textHashtag":
48
+ case "textBotCommand":
49
+ case "textCashtag":
50
+ case "textAutoUrl":
51
+ case "textAutoEmail":
52
+ case "textAutoPhone":
53
+ case "textBankCard":
54
+ case "textDate":
55
+ collectRichTextPeerIds(text.text, peers);
56
+ break;
57
+ case "textConcat":
58
+ for (const child of text.texts) collectRichTextPeerIds(child, peers);
59
+ break;
60
+ case "textMentionName":
61
+ peers.add(text.userId);
62
+ collectRichTextPeerIds(text.text, peers);
63
+ break;
64
+ default:
65
+ utils$1.assertNever();
66
+ }
67
+ }
68
+ function collectPageCaptionPeerIds(caption, peers) {
69
+ if (!caption) return;
70
+ collectRichTextPeerIds(caption.text, peers);
71
+ collectRichTextPeerIds(caption.credit, peers);
72
+ }
73
+ function collectPageBlockPeerIds(block, peers) {
74
+ if (!block) return;
75
+ switch (block._) {
76
+ case "pageBlockUnsupported":
77
+ case "pageBlockDivider":
78
+ case "pageBlockAnchor":
79
+ case "pageBlockMath":
80
+ break;
81
+ case "pageBlockTitle":
82
+ case "pageBlockSubtitle":
83
+ case "pageBlockHeader":
84
+ case "pageBlockSubheader":
85
+ case "pageBlockParagraph":
86
+ case "pageBlockPreformatted":
87
+ case "pageBlockFooter":
88
+ case "pageBlockKicker":
89
+ case "pageBlockThinking":
90
+ case "pageBlockHeading1":
91
+ case "pageBlockHeading2":
92
+ case "pageBlockHeading3":
93
+ case "pageBlockHeading4":
94
+ case "pageBlockHeading5":
95
+ case "pageBlockHeading6":
96
+ collectRichTextPeerIds(block.text, peers);
97
+ break;
98
+ case "pageBlockAuthorDate":
99
+ collectRichTextPeerIds(block.author, peers);
100
+ break;
101
+ case "pageBlockList":
102
+ for (const item of block.items) collectPageListItemPeerIds(item, peers);
103
+ break;
104
+ case "pageBlockOrderedList":
105
+ for (const item of block.items) collectPageListOrderedItemPeerIds(item, peers);
106
+ break;
107
+ case "pageBlockBlockquote":
108
+ case "pageBlockPullquote":
109
+ collectRichTextPeerIds(block.text, peers);
110
+ collectRichTextPeerIds(block.caption, peers);
111
+ break;
112
+ case "pageBlockPhoto":
113
+ case "pageBlockVideo":
114
+ case "pageBlockEmbed":
115
+ case "pageBlockAudio":
116
+ case "pageBlockMap":
117
+ case "inputPageBlockMap":
118
+ collectPageCaptionPeerIds(block.caption, peers);
119
+ break;
120
+ case "pageBlockCover":
121
+ collectPageBlockPeerIds(block.cover, peers);
122
+ break;
123
+ case "pageBlockEmbedPost":
124
+ for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
125
+ collectPageCaptionPeerIds(block.caption, peers);
126
+ break;
127
+ case "pageBlockCollage":
128
+ case "pageBlockSlideshow":
129
+ for (const child of block.items) collectPageBlockPeerIds(child, peers);
130
+ collectPageCaptionPeerIds(block.caption, peers);
131
+ break;
132
+ case "pageBlockChannel":
133
+ switch (block.channel._) {
134
+ case "chatEmpty":
135
+ case "chat":
136
+ case "chatForbidden":
137
+ peers.add(peerUtils.getMarkedPeerId(block.channel.id, "chat"));
138
+ break;
139
+ case "channel":
140
+ case "channelForbidden":
141
+ peers.add(peerUtils.getMarkedPeerId(block.channel.id, "channel"));
142
+ break;
143
+ default:
144
+ utils$1.assertNever(block.channel);
145
+ }
146
+ break;
147
+ case "pageBlockTable":
148
+ collectRichTextPeerIds(block.title, peers);
149
+ for (const row of block.rows) {
150
+ for (const cell of row.cells) collectRichTextPeerIds(cell.text, peers);
151
+ }
152
+ break;
153
+ case "pageBlockDetails":
154
+ for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
155
+ collectRichTextPeerIds(block.title, peers);
156
+ break;
157
+ case "pageBlockRelatedArticles":
158
+ collectRichTextPeerIds(block.title, peers);
159
+ break;
160
+ case "pageBlockBlockquoteBlocks":
161
+ for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
162
+ collectRichTextPeerIds(block.caption, peers);
163
+ break;
164
+ default:
165
+ utils$1.assertNever();
166
+ }
167
+ }
168
+ function collectPageListItemPeerIds(item, peers) {
169
+ switch (item._) {
170
+ case "pageListItemText":
171
+ collectRichTextPeerIds(item.text, peers);
172
+ break;
173
+ case "pageListItemBlocks":
174
+ for (const block of item.blocks) collectPageBlockPeerIds(block, peers);
175
+ break;
176
+ default:
177
+ utils$1.assertNever();
178
+ }
179
+ }
180
+ function collectPageListOrderedItemPeerIds(item, peers) {
181
+ switch (item._) {
182
+ case "pageListOrderedItemText":
183
+ collectRichTextPeerIds(item.text, peers);
184
+ break;
185
+ case "pageListOrderedItemBlocks":
186
+ for (const block of item.blocks) collectPageBlockPeerIds(block, peers);
187
+ break;
188
+ default:
189
+ utils$1.assertNever();
190
+ }
191
+ }
192
+ function collectRichMessagePeerIds(richMessage, peers) {
193
+ if (!richMessage) return;
194
+ for (const block of richMessage.blocks) collectPageBlockPeerIds(block, peers);
195
+ }
24
196
  class UpdatesManager {
25
197
  constructor(client, params = {}) {
26
198
  this.client = client;
@@ -501,6 +673,13 @@ class UpdatesManager {
501
673
  }
502
674
  }
503
675
  }
676
+ if (msg.richMessage) {
677
+ const richMessagePeers = /* @__PURE__ */ new Set();
678
+ collectRichMessagePeerIds(msg.richMessage, richMessagePeers);
679
+ for (const peer of richMessagePeers) {
680
+ if (!await fetchPeer(peer)) return missing;
681
+ }
682
+ }
504
683
  if (msg.media) {
505
684
  switch (msg.media._) {
506
685
  case "messageMediaContact":
@@ -550,6 +729,13 @@ class UpdatesManager {
550
729
  }
551
730
  }
552
731
  }
732
+ if ("richMessage" in upd.draft && upd.draft.richMessage) {
733
+ const richMessagePeers = /* @__PURE__ */ new Set();
734
+ collectRichMessagePeerIds(upd.draft.richMessage, richMessagePeers);
735
+ for (const peer of richMessagePeers) {
736
+ if (!await fetchPeer(peer)) return missing;
737
+ }
738
+ }
553
739
  }
554
740
  return missing;
555
741
  }
@@ -574,6 +760,11 @@ class UpdatesManager {
574
760
  store(msg.viaBotId);
575
761
  store(msg.guestchatViaFrom);
576
762
  store(msg.fwdFrom?.fromId);
763
+ if (msg.richMessage) {
764
+ const richMessagePeers = /* @__PURE__ */ new Set();
765
+ collectRichMessagePeerIds(msg.richMessage, richMessagePeers);
766
+ store([...richMessagePeers]);
767
+ }
577
768
  if (msg.media) {
578
769
  switch (msg.media._) {
579
770
  case "messageMediaWebPage":
@@ -14,6 +14,178 @@ import { RpcError } from "../../tl/inner-tl.js";
14
14
  const WARN_EVERY = 100;
15
15
  const KEEP_ALIVE_INTERVAL = 15 * 60 * 1e3;
16
16
  const UPDATES_TOO_LONG = { _: "updatesTooLong" };
17
+ function collectRichTextPeerIds(text, peers) {
18
+ if (!text) return;
19
+ switch (text._) {
20
+ case "textEmpty":
21
+ case "textPlain":
22
+ case "textEmail":
23
+ case "textPhone":
24
+ case "textImage":
25
+ case "textMath":
26
+ case "textCustomEmoji":
27
+ break;
28
+ case "textBold":
29
+ case "textItalic":
30
+ case "textUnderline":
31
+ case "textStrike":
32
+ case "textFixed":
33
+ case "textUrl":
34
+ case "textSubscript":
35
+ case "textSuperscript":
36
+ case "textMarked":
37
+ case "textAnchor":
38
+ case "textSpoiler":
39
+ case "textMention":
40
+ case "textHashtag":
41
+ case "textBotCommand":
42
+ case "textCashtag":
43
+ case "textAutoUrl":
44
+ case "textAutoEmail":
45
+ case "textAutoPhone":
46
+ case "textBankCard":
47
+ case "textDate":
48
+ collectRichTextPeerIds(text.text, peers);
49
+ break;
50
+ case "textConcat":
51
+ for (const child of text.texts) collectRichTextPeerIds(child, peers);
52
+ break;
53
+ case "textMentionName":
54
+ peers.add(text.userId);
55
+ collectRichTextPeerIds(text.text, peers);
56
+ break;
57
+ default:
58
+ assertNever();
59
+ }
60
+ }
61
+ function collectPageCaptionPeerIds(caption, peers) {
62
+ if (!caption) return;
63
+ collectRichTextPeerIds(caption.text, peers);
64
+ collectRichTextPeerIds(caption.credit, peers);
65
+ }
66
+ function collectPageBlockPeerIds(block, peers) {
67
+ if (!block) return;
68
+ switch (block._) {
69
+ case "pageBlockUnsupported":
70
+ case "pageBlockDivider":
71
+ case "pageBlockAnchor":
72
+ case "pageBlockMath":
73
+ break;
74
+ case "pageBlockTitle":
75
+ case "pageBlockSubtitle":
76
+ case "pageBlockHeader":
77
+ case "pageBlockSubheader":
78
+ case "pageBlockParagraph":
79
+ case "pageBlockPreformatted":
80
+ case "pageBlockFooter":
81
+ case "pageBlockKicker":
82
+ case "pageBlockThinking":
83
+ case "pageBlockHeading1":
84
+ case "pageBlockHeading2":
85
+ case "pageBlockHeading3":
86
+ case "pageBlockHeading4":
87
+ case "pageBlockHeading5":
88
+ case "pageBlockHeading6":
89
+ collectRichTextPeerIds(block.text, peers);
90
+ break;
91
+ case "pageBlockAuthorDate":
92
+ collectRichTextPeerIds(block.author, peers);
93
+ break;
94
+ case "pageBlockList":
95
+ for (const item of block.items) collectPageListItemPeerIds(item, peers);
96
+ break;
97
+ case "pageBlockOrderedList":
98
+ for (const item of block.items) collectPageListOrderedItemPeerIds(item, peers);
99
+ break;
100
+ case "pageBlockBlockquote":
101
+ case "pageBlockPullquote":
102
+ collectRichTextPeerIds(block.text, peers);
103
+ collectRichTextPeerIds(block.caption, peers);
104
+ break;
105
+ case "pageBlockPhoto":
106
+ case "pageBlockVideo":
107
+ case "pageBlockEmbed":
108
+ case "pageBlockAudio":
109
+ case "pageBlockMap":
110
+ case "inputPageBlockMap":
111
+ collectPageCaptionPeerIds(block.caption, peers);
112
+ break;
113
+ case "pageBlockCover":
114
+ collectPageBlockPeerIds(block.cover, peers);
115
+ break;
116
+ case "pageBlockEmbedPost":
117
+ for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
118
+ collectPageCaptionPeerIds(block.caption, peers);
119
+ break;
120
+ case "pageBlockCollage":
121
+ case "pageBlockSlideshow":
122
+ for (const child of block.items) collectPageBlockPeerIds(child, peers);
123
+ collectPageCaptionPeerIds(block.caption, peers);
124
+ break;
125
+ case "pageBlockChannel":
126
+ switch (block.channel._) {
127
+ case "chatEmpty":
128
+ case "chat":
129
+ case "chatForbidden":
130
+ peers.add(getMarkedPeerId(block.channel.id, "chat"));
131
+ break;
132
+ case "channel":
133
+ case "channelForbidden":
134
+ peers.add(getMarkedPeerId(block.channel.id, "channel"));
135
+ break;
136
+ default:
137
+ assertNever(block.channel);
138
+ }
139
+ break;
140
+ case "pageBlockTable":
141
+ collectRichTextPeerIds(block.title, peers);
142
+ for (const row of block.rows) {
143
+ for (const cell of row.cells) collectRichTextPeerIds(cell.text, peers);
144
+ }
145
+ break;
146
+ case "pageBlockDetails":
147
+ for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
148
+ collectRichTextPeerIds(block.title, peers);
149
+ break;
150
+ case "pageBlockRelatedArticles":
151
+ collectRichTextPeerIds(block.title, peers);
152
+ break;
153
+ case "pageBlockBlockquoteBlocks":
154
+ for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
155
+ collectRichTextPeerIds(block.caption, peers);
156
+ break;
157
+ default:
158
+ assertNever();
159
+ }
160
+ }
161
+ function collectPageListItemPeerIds(item, peers) {
162
+ switch (item._) {
163
+ case "pageListItemText":
164
+ collectRichTextPeerIds(item.text, peers);
165
+ break;
166
+ case "pageListItemBlocks":
167
+ for (const block of item.blocks) collectPageBlockPeerIds(block, peers);
168
+ break;
169
+ default:
170
+ assertNever();
171
+ }
172
+ }
173
+ function collectPageListOrderedItemPeerIds(item, peers) {
174
+ switch (item._) {
175
+ case "pageListOrderedItemText":
176
+ collectRichTextPeerIds(item.text, peers);
177
+ break;
178
+ case "pageListOrderedItemBlocks":
179
+ for (const block of item.blocks) collectPageBlockPeerIds(block, peers);
180
+ break;
181
+ default:
182
+ assertNever();
183
+ }
184
+ }
185
+ function collectRichMessagePeerIds(richMessage, peers) {
186
+ if (!richMessage) return;
187
+ for (const block of richMessage.blocks) collectPageBlockPeerIds(block, peers);
188
+ }
17
189
  class UpdatesManager {
18
190
  constructor(client, params = {}) {
19
191
  this.client = client;
@@ -494,6 +666,13 @@ class UpdatesManager {
494
666
  }
495
667
  }
496
668
  }
669
+ if (msg.richMessage) {
670
+ const richMessagePeers = /* @__PURE__ */ new Set();
671
+ collectRichMessagePeerIds(msg.richMessage, richMessagePeers);
672
+ for (const peer of richMessagePeers) {
673
+ if (!await fetchPeer(peer)) return missing;
674
+ }
675
+ }
497
676
  if (msg.media) {
498
677
  switch (msg.media._) {
499
678
  case "messageMediaContact":
@@ -543,6 +722,13 @@ class UpdatesManager {
543
722
  }
544
723
  }
545
724
  }
725
+ if ("richMessage" in upd.draft && upd.draft.richMessage) {
726
+ const richMessagePeers = /* @__PURE__ */ new Set();
727
+ collectRichMessagePeerIds(upd.draft.richMessage, richMessagePeers);
728
+ for (const peer of richMessagePeers) {
729
+ if (!await fetchPeer(peer)) return missing;
730
+ }
731
+ }
546
732
  }
547
733
  return missing;
548
734
  }
@@ -567,6 +753,11 @@ class UpdatesManager {
567
753
  store(msg.viaBotId);
568
754
  store(msg.guestchatViaFrom);
569
755
  store(msg.fwdFrom?.fromId);
756
+ if (msg.richMessage) {
757
+ const richMessagePeers = /* @__PURE__ */ new Set();
758
+ collectRichMessagePeerIds(msg.richMessage, richMessagePeers);
759
+ store([...richMessagePeers]);
760
+ }
570
761
  if (msg.media) {
571
762
  switch (msg.media._) {
572
763
  case "messageMediaWebPage":
@@ -50,4 +50,5 @@ function makeInspectable(obj, props, hide) {
50
50
  obj.prototype[customInspectSymbol] = obj.prototype.toJSON;
51
51
  return obj;
52
52
  }
53
+ exports.customInspectSymbol = customInspectSymbol;
53
54
  exports.makeInspectable = makeInspectable;
@@ -1,3 +1,4 @@
1
+ export declare const customInspectSymbol: symbol;
1
2
  /**
2
3
  * Small helper function that adds `toJSON` and `util.custom.inspect`
3
4
  * methods to a given class based on its getters
@@ -1,3 +1,4 @@
1
+ export declare const customInspectSymbol: symbol;
1
2
  /**
2
3
  * Small helper function that adds `toJSON` and `util.custom.inspect`
3
4
  * methods to a given class based on its getters
@@ -44,5 +44,6 @@ function makeInspectable(obj, props, hide) {
44
44
  return obj;
45
45
  }
46
46
  export {
47
+ customInspectSymbol,
47
48
  makeInspectable
48
49
  };
package/index.cjs CHANGED
@@ -56,6 +56,7 @@ const messageReactions = require("./highlevel/types/messages/message-reactions.c
56
56
  const messageReplies = require("./highlevel/types/messages/message-replies.cjs");
57
57
  const message = require("./highlevel/types/messages/message.cjs");
58
58
  const repliedMessage = require("./highlevel/types/messages/replied-message.cjs");
59
+ const richMessage = require("./highlevel/types/messages/rich-message.cjs");
59
60
  const searchFilters = require("./highlevel/types/messages/search-filters.cjs");
60
61
  const suggestedPost = require("./highlevel/types/messages/suggested-post.cjs");
61
62
  const collectibleInfo = require("./highlevel/types/misc/collectible-info.cjs");
@@ -225,6 +226,7 @@ exports.MessageReactions = messageReactions.MessageReactions;
225
226
  exports.MessageRepliesInfo = messageReplies.MessageRepliesInfo;
226
227
  exports.Message = message.Message;
227
228
  exports.RepliedMessageInfo = repliedMessage.RepliedMessageInfo;
229
+ exports.RichMessage = richMessage.RichMessage;
228
230
  exports.SearchFilters = searchFilters.SearchFilters;
229
231
  exports.SuggestedPostInfo = suggestedPost.SuggestedPostInfo;
230
232
  exports.CollectibleInfo = collectibleInfo.CollectibleInfo;
package/index.js CHANGED
@@ -49,6 +49,7 @@ import { MessageReactions } from "./highlevel/types/messages/message-reactions.j
49
49
  import { MessageRepliesInfo } from "./highlevel/types/messages/message-replies.js";
50
50
  import { Message } from "./highlevel/types/messages/message.js";
51
51
  import { RepliedMessageInfo } from "./highlevel/types/messages/replied-message.js";
52
+ import { RichMessage } from "./highlevel/types/messages/rich-message.js";
52
53
  import { SearchFilters } from "./highlevel/types/messages/search-filters.js";
53
54
  import { SuggestedPostInfo } from "./highlevel/types/messages/suggested-post.js";
54
55
  import { CollectibleInfo } from "./highlevel/types/misc/collectible-info.js";
@@ -271,6 +272,7 @@ export {
271
272
  RawUpdateInfo,
272
273
  ReactionCount,
273
274
  RepliedMessageInfo,
275
+ RichMessage,
274
276
  SavedStarGift,
275
277
  SearchFilters,
276
278
  SentCode,