teleproto 1.214.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 (222) hide show
  1. package/CryptoFile.d.ts +2 -0
  2. package/CryptoFile.js +37 -0
  3. package/Helpers.d.ts +150 -0
  4. package/Helpers.js +477 -0
  5. package/LICENSE +23 -0
  6. package/Password.d.ts +14 -0
  7. package/Password.js +270 -0
  8. package/README.md +98 -0
  9. package/Utils.d.ts +227 -0
  10. package/Utils.js +1247 -0
  11. package/Version.d.ts +1 -0
  12. package/Version.js +4 -0
  13. package/client/2fa.d.ts +48 -0
  14. package/client/2fa.js +108 -0
  15. package/client/TelegramClient.d.ts +1043 -0
  16. package/client/TelegramClient.js +1181 -0
  17. package/client/account.d.ts +0 -0
  18. package/client/account.js +1 -0
  19. package/client/auth.d.ts +92 -0
  20. package/client/auth.js +388 -0
  21. package/client/bots.d.ts +6 -0
  22. package/client/bots.js +23 -0
  23. package/client/buttons.d.ts +4 -0
  24. package/client/buttons.js +86 -0
  25. package/client/chats.d.ts +45 -0
  26. package/client/chats.js +350 -0
  27. package/client/dialogs.d.ts +52 -0
  28. package/client/dialogs.js +174 -0
  29. package/client/downloads.d.ts +156 -0
  30. package/client/downloads.js +614 -0
  31. package/client/fs.d.ts +1 -0
  32. package/client/fs.js +17 -0
  33. package/client/index.d.ts +15 -0
  34. package/client/index.js +64 -0
  35. package/client/messageParse.d.ts +17 -0
  36. package/client/messageParse.js +191 -0
  37. package/client/messages.d.ts +263 -0
  38. package/client/messages.js +813 -0
  39. package/client/os.d.ts +2 -0
  40. package/client/os.js +37 -0
  41. package/client/path.d.ts +2 -0
  42. package/client/path.js +7 -0
  43. package/client/telegramBaseClient.d.ts +237 -0
  44. package/client/telegramBaseClient.js +368 -0
  45. package/client/updates.d.ts +33 -0
  46. package/client/updates.js +260 -0
  47. package/client/uploads.d.ts +136 -0
  48. package/client/uploads.js +514 -0
  49. package/client/users.d.ts +29 -0
  50. package/client/users.js +490 -0
  51. package/crypto/AuthKey.d.ts +19 -0
  52. package/crypto/AuthKey.js +76 -0
  53. package/crypto/CTR.d.ts +5 -0
  54. package/crypto/CTR.js +16 -0
  55. package/crypto/Factorizator.d.ts +19 -0
  56. package/crypto/Factorizator.js +74 -0
  57. package/crypto/IGE.d.ts +11 -0
  58. package/crypto/IGE.js +115 -0
  59. package/crypto/RSA.d.ts +14 -0
  60. package/crypto/RSA.js +70 -0
  61. package/crypto/converters.d.ts +19 -0
  62. package/crypto/converters.js +52 -0
  63. package/crypto/crypto.d.ts +19 -0
  64. package/crypto/crypto.js +58 -0
  65. package/crypto/words.d.ts +6 -0
  66. package/crypto/words.js +47 -0
  67. package/define.d.ts +77 -0
  68. package/entityCache.d.ts +7 -0
  69. package/entityCache.js +79 -0
  70. package/errors/Common.d.ts +71 -0
  71. package/errors/Common.js +122 -0
  72. package/errors/RPCBaseErrors.d.ts +84 -0
  73. package/errors/RPCBaseErrors.js +134 -0
  74. package/errors/RPCErrorList.d.ts +37 -0
  75. package/errors/RPCErrorList.js +117 -0
  76. package/errors/index.d.ts +11 -0
  77. package/errors/index.js +32 -0
  78. package/events/Album.d.ts +36 -0
  79. package/events/Album.js +104 -0
  80. package/events/CallbackQuery.d.ts +73 -0
  81. package/events/CallbackQuery.js +193 -0
  82. package/events/DeletedMessage.d.ts +45 -0
  83. package/events/DeletedMessage.js +63 -0
  84. package/events/EditedMessage.d.ts +30 -0
  85. package/events/EditedMessage.js +41 -0
  86. package/events/NewMessage.d.ts +89 -0
  87. package/events/NewMessage.js +182 -0
  88. package/events/Raw.d.ts +29 -0
  89. package/events/Raw.js +43 -0
  90. package/events/common.d.ts +66 -0
  91. package/events/common.js +141 -0
  92. package/events/index.d.ts +2 -0
  93. package/events/index.js +8 -0
  94. package/extensions/AsyncQueue.d.ts +10 -0
  95. package/extensions/AsyncQueue.js +32 -0
  96. package/extensions/BinaryReader.d.ts +99 -0
  97. package/extensions/BinaryReader.js +242 -0
  98. package/extensions/BinaryWriter.d.ts +6 -0
  99. package/extensions/BinaryWriter.js +15 -0
  100. package/extensions/Deferred.d.ts +8 -0
  101. package/extensions/Deferred.js +16 -0
  102. package/extensions/Logger.d.ts +54 -0
  103. package/extensions/Logger.js +128 -0
  104. package/extensions/MessagePacker.d.ts +21 -0
  105. package/extensions/MessagePacker.js +154 -0
  106. package/extensions/PendingState.d.ts +12 -0
  107. package/extensions/PendingState.js +29 -0
  108. package/extensions/PromisedNetSockets.d.ts +24 -0
  109. package/extensions/PromisedNetSockets.js +192 -0
  110. package/extensions/PromisedWebSockets.d.ts +18 -0
  111. package/extensions/PromisedWebSockets.js +124 -0
  112. package/extensions/html.d.ts +5 -0
  113. package/extensions/html.js +228 -0
  114. package/extensions/index.d.ts +7 -0
  115. package/extensions/index.js +17 -0
  116. package/extensions/markdown.d.ts +5 -0
  117. package/extensions/markdown.js +76 -0
  118. package/extensions/markdownv2.d.ts +5 -0
  119. package/extensions/markdownv2.js +51 -0
  120. package/extensions/net.d.ts +1 -0
  121. package/extensions/net.js +17 -0
  122. package/extensions/socks.d.ts +1 -0
  123. package/extensions/socks.js +17 -0
  124. package/index.d.ts +14 -0
  125. package/index.js +62 -0
  126. package/inspect.d.ts +1 -0
  127. package/inspect.js +5 -0
  128. package/network/Authenticator.d.ts +12 -0
  129. package/network/Authenticator.js +192 -0
  130. package/network/MTProtoPlainSender.d.ts +19 -0
  131. package/network/MTProtoPlainSender.js +74 -0
  132. package/network/MTProtoSender.d.ts +290 -0
  133. package/network/MTProtoSender.js +873 -0
  134. package/network/MTProtoState.d.ts +102 -0
  135. package/network/MTProtoState.js +267 -0
  136. package/network/RequestState.d.ts +18 -0
  137. package/network/RequestState.js +35 -0
  138. package/network/connection/Connection.d.ts +69 -0
  139. package/network/connection/Connection.js +162 -0
  140. package/network/connection/TCPAbridged.d.ts +19 -0
  141. package/network/connection/TCPAbridged.js +58 -0
  142. package/network/connection/TCPFull.d.ts +16 -0
  143. package/network/connection/TCPFull.js +61 -0
  144. package/network/connection/TCPMTProxy.d.ts +49 -0
  145. package/network/connection/TCPMTProxy.js +121 -0
  146. package/network/connection/TCPObfuscated.d.ts +18 -0
  147. package/network/connection/TCPObfuscated.js +78 -0
  148. package/network/connection/index.d.ts +4 -0
  149. package/network/connection/index.js +11 -0
  150. package/network/index.d.ts +11 -0
  151. package/network/index.js +23 -0
  152. package/package.json +50 -0
  153. package/requestIter.d.ts +24 -0
  154. package/requestIter.js +109 -0
  155. package/sessions/Abstract.d.ts +103 -0
  156. package/sessions/Abstract.js +6 -0
  157. package/sessions/Memory.d.ts +38 -0
  158. package/sessions/Memory.js +272 -0
  159. package/sessions/StoreSession.d.ts +14 -0
  160. package/sessions/StoreSession.js +77 -0
  161. package/sessions/StringSession.d.ts +32 -0
  162. package/sessions/StringSession.js +116 -0
  163. package/sessions/index.d.ts +4 -0
  164. package/sessions/index.js +11 -0
  165. package/sessions/localStorage.d.ts +1 -0
  166. package/sessions/localStorage.js +4 -0
  167. package/tl/AllTLObjects.d.ts +3 -0
  168. package/tl/AllTLObjects.js +17 -0
  169. package/tl/MTProtoRequest.d.ts +18 -0
  170. package/tl/MTProtoRequest.js +38 -0
  171. package/tl/api.d.ts +32488 -0
  172. package/tl/api.js +507 -0
  173. package/tl/apiTl.d.ts +2 -0
  174. package/tl/apiTl.js +2209 -0
  175. package/tl/core/GZIPPacked.d.ts +15 -0
  176. package/tl/core/GZIPPacked.js +51 -0
  177. package/tl/core/MessageContainer.d.ts +12 -0
  178. package/tl/core/MessageContainer.js +42 -0
  179. package/tl/core/RPCResult.d.ts +14 -0
  180. package/tl/core/RPCResult.js +32 -0
  181. package/tl/core/TLMessage.d.ts +10 -0
  182. package/tl/core/TLMessage.js +14 -0
  183. package/tl/core/index.d.ts +6 -0
  184. package/tl/core/index.js +16 -0
  185. package/tl/custom/button.d.ts +24 -0
  186. package/tl/custom/button.js +78 -0
  187. package/tl/custom/chatGetter.d.ts +29 -0
  188. package/tl/custom/chatGetter.js +116 -0
  189. package/tl/custom/dialog.d.ts +30 -0
  190. package/tl/custom/dialog.js +40 -0
  191. package/tl/custom/draft.d.ts +21 -0
  192. package/tl/custom/draft.js +48 -0
  193. package/tl/custom/file.d.ts +21 -0
  194. package/tl/custom/file.js +68 -0
  195. package/tl/custom/forward.d.ts +15 -0
  196. package/tl/custom/forward.js +47 -0
  197. package/tl/custom/index.d.ts +1 -0
  198. package/tl/custom/index.js +5 -0
  199. package/tl/custom/inlineResult.d.ts +32 -0
  200. package/tl/custom/inlineResult.js +87 -0
  201. package/tl/custom/inlineResults.d.ts +20 -0
  202. package/tl/custom/inlineResults.js +26 -0
  203. package/tl/custom/message.d.ts +427 -0
  204. package/tl/custom/message.js +716 -0
  205. package/tl/custom/messageButton.d.ts +54 -0
  206. package/tl/custom/messageButton.js +152 -0
  207. package/tl/custom/senderGetter.d.ts +28 -0
  208. package/tl/custom/senderGetter.js +55 -0
  209. package/tl/generateModule.d.ts +1 -0
  210. package/tl/generateModule.js +17 -0
  211. package/tl/generationHelpers.d.ts +11 -0
  212. package/tl/generationHelpers.js +289 -0
  213. package/tl/index.d.ts +3 -0
  214. package/tl/index.js +10 -0
  215. package/tl/patched/index.d.ts +2 -0
  216. package/tl/patched/index.js +76 -0
  217. package/tl/schemaTl.d.ts +2 -0
  218. package/tl/schemaTl.js +64 -0
  219. package/tl/types-generator/generate.d.ts +1 -0
  220. package/tl/types-generator/generate.js +84 -0
  221. package/tl/types-generator/template.d.ts +6 -0
  222. package/tl/types-generator/template.js +257 -0
@@ -0,0 +1,813 @@
1
+ "use strict";
2
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
3
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
4
+ var m = o[Symbol.asyncIterator], i;
5
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
6
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
7
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
8
+ };
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports._IDsIter = exports._MessagesIter = void 0;
14
+ exports.iterMessages = iterMessages;
15
+ exports.getMessages = getMessages;
16
+ exports.sendMessage = sendMessage;
17
+ exports.forwardMessages = forwardMessages;
18
+ exports.editMessage = editMessage;
19
+ exports.deleteMessages = deleteMessages;
20
+ exports.pinMessage = pinMessage;
21
+ exports.unpinMessage = unpinMessage;
22
+ exports._pin = _pin;
23
+ exports.markAsRead = markAsRead;
24
+ exports.getCommentData = getCommentData;
25
+ const tl_1 = require("../tl");
26
+ const requestIter_1 = require("../requestIter");
27
+ const Helpers_1 = require("../Helpers");
28
+ const Utils_1 = require("../Utils");
29
+ const __1 = require("..");
30
+ const messageParse_1 = require("./messageParse");
31
+ const users_1 = require("./users");
32
+ const big_integer_1 = __importDefault(require("big-integer"));
33
+ const uploads_1 = require("./uploads");
34
+ const _MAX_CHUNK_SIZE = 100;
35
+ class _MessagesIter extends requestIter_1.RequestIter {
36
+ async _init({ entity, offsetId, minId, maxId, fromUser, offsetDate, addOffset, filter, search, replyTo, }) {
37
+ var _a, e_1, _b, _c;
38
+ if (entity) {
39
+ this.entity = await this.client.getInputEntity(entity);
40
+ }
41
+ else {
42
+ this.entity = undefined;
43
+ if (this.reverse) {
44
+ throw new Error("Cannot reverse global search");
45
+ }
46
+ }
47
+ if (this.reverse) {
48
+ offsetId = Math.max(offsetId, minId);
49
+ if (offsetId && maxId) {
50
+ if (maxId - offsetId <= 1) {
51
+ return false;
52
+ }
53
+ }
54
+ if (!maxId) {
55
+ maxId = Number.MAX_SAFE_INTEGER;
56
+ }
57
+ }
58
+ else {
59
+ offsetId = Math.max(offsetId, maxId);
60
+ if (offsetId && minId) {
61
+ if (offsetId - minId <= 1) {
62
+ return false;
63
+ }
64
+ }
65
+ }
66
+ if (this.reverse) {
67
+ if (offsetId) {
68
+ offsetId += 1;
69
+ }
70
+ else if (!offsetDate) {
71
+ offsetId = 1;
72
+ }
73
+ }
74
+ if (fromUser) {
75
+ fromUser = await this.client.getInputEntity(fromUser);
76
+ }
77
+ if (!this.entity && fromUser) {
78
+ this.entity = new tl_1.Api.InputPeerEmpty();
79
+ }
80
+ if (!filter) {
81
+ filter = new tl_1.Api.InputMessagesFilterEmpty();
82
+ }
83
+ if (!this.entity) {
84
+ this.request = new tl_1.Api.messages.SearchGlobal({
85
+ q: search || "",
86
+ filter: filter,
87
+ minDate: undefined,
88
+ // TODO fix this smh
89
+ maxDate: offsetDate,
90
+ offsetRate: undefined,
91
+ offsetPeer: new tl_1.Api.InputPeerEmpty(),
92
+ offsetId: offsetId,
93
+ limit: 1,
94
+ });
95
+ }
96
+ else if (replyTo !== undefined) {
97
+ this.request = new tl_1.Api.messages.GetReplies({
98
+ peer: this.entity,
99
+ msgId: replyTo,
100
+ offsetId: offsetId,
101
+ offsetDate: offsetDate,
102
+ addOffset: addOffset,
103
+ limit: 0,
104
+ maxId: 0,
105
+ minId: 0,
106
+ hash: big_integer_1.default.zero,
107
+ });
108
+ }
109
+ else if (search !== undefined ||
110
+ !(filter instanceof tl_1.Api.InputMessagesFilterEmpty) ||
111
+ fromUser !== undefined) {
112
+ this.request = new tl_1.Api.messages.Search({
113
+ peer: this.entity,
114
+ q: search || "",
115
+ filter: typeof filter === "function" ? new filter() : filter,
116
+ minDate: undefined,
117
+ maxDate: offsetDate,
118
+ offsetId: offsetId,
119
+ addOffset: addOffset,
120
+ limit: 0,
121
+ maxId: 0,
122
+ minId: 0,
123
+ hash: (0, Helpers_1.generateRandomBigInt)(),
124
+ fromId: fromUser,
125
+ });
126
+ if (!(filter instanceof tl_1.Api.InputMessagesFilterEmpty) &&
127
+ offsetDate &&
128
+ !search &&
129
+ !offsetId) {
130
+ try {
131
+ for (var _d = true, _e = __asyncValues(this.client.iterMessages(this.entity, {
132
+ limit: 1,
133
+ offsetDate: offsetDate,
134
+ })), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
135
+ _c = _f.value;
136
+ _d = false;
137
+ const m = _c;
138
+ this.request.offsetId = m.id + 1;
139
+ }
140
+ }
141
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
142
+ finally {
143
+ try {
144
+ if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
145
+ }
146
+ finally { if (e_1) throw e_1.error; }
147
+ }
148
+ }
149
+ }
150
+ else {
151
+ this.request = new tl_1.Api.messages.GetHistory({
152
+ peer: this.entity,
153
+ limit: 1,
154
+ offsetDate: offsetDate,
155
+ offsetId: offsetId,
156
+ minId: 0,
157
+ maxId: 0,
158
+ addOffset: addOffset,
159
+ hash: big_integer_1.default.zero,
160
+ });
161
+ }
162
+ if (this.limit <= 0) {
163
+ const result = await this.client.invoke(this.request);
164
+ if (result instanceof tl_1.Api.messages.MessagesNotModified) {
165
+ this.total = result.count;
166
+ }
167
+ else {
168
+ if ("count" in result) {
169
+ this.total = result.count;
170
+ }
171
+ else {
172
+ this.total = result.messages.length;
173
+ }
174
+ }
175
+ return false;
176
+ }
177
+ if (!this.waitTime) {
178
+ this.waitTime = this.limit > 3000 ? 1 : 0;
179
+ }
180
+ if (this.reverse &&
181
+ !(this.request instanceof tl_1.Api.messages.SearchGlobal)) {
182
+ this.request.addOffset -= _MAX_CHUNK_SIZE;
183
+ }
184
+ this.addOffset = addOffset;
185
+ this.maxId = maxId;
186
+ this.minId = minId;
187
+ this.lastId = this.reverse ? 0 : Number.MAX_SAFE_INTEGER;
188
+ }
189
+ async _loadNextChunk() {
190
+ var _a;
191
+ if (!this.request) {
192
+ throw new Error("Request not set yet");
193
+ }
194
+ this.request.limit = Math.min(this.left, _MAX_CHUNK_SIZE);
195
+ if (this.reverse && this.request.limit != _MAX_CHUNK_SIZE) {
196
+ if (!(this.request instanceof tl_1.Api.messages.SearchGlobal)) {
197
+ this.request.addOffset = this.addOffset - this.request.limit;
198
+ }
199
+ }
200
+ const r = await this.client.invoke(this.request);
201
+ if (r instanceof tl_1.Api.messages.MessagesNotModified) {
202
+ return true;
203
+ }
204
+ if ("count" in r) {
205
+ this.total = r.count;
206
+ }
207
+ else {
208
+ this.total = r.messages.length;
209
+ }
210
+ const entities = new Map();
211
+ for (const x of [...r.users, ...r.chats]) {
212
+ entities.set((0, Utils_1.getPeerId)(x), x);
213
+ }
214
+ const messages = this.reverse
215
+ ? r.messages.reverse()
216
+ : r.messages;
217
+ for (const message of messages) {
218
+ if (!this._messageInRange(message)) {
219
+ return true;
220
+ }
221
+ this.lastId = message.id;
222
+ try {
223
+ // if this fails it shouldn't be a big problem
224
+ message._finishInit(this.client, entities, this.entity);
225
+ }
226
+ catch (e) { }
227
+ message._entities = entities;
228
+ (_a = this.buffer) === null || _a === void 0 ? void 0 : _a.push(message);
229
+ }
230
+ if (r.messages.length < this.request.limit) {
231
+ return true;
232
+ }
233
+ if (this.buffer) {
234
+ this._updateOffset(this.buffer[this.buffer.length - 1], r);
235
+ }
236
+ else {
237
+ return true;
238
+ }
239
+ }
240
+ _messageInRange(message) {
241
+ if (this.entity) {
242
+ if (this.reverse) {
243
+ if (message.id <= this.lastId || message.id >= this.maxId) {
244
+ return false;
245
+ }
246
+ }
247
+ else {
248
+ if (message.id >= this.lastId || message.id <= this.minId) {
249
+ return false;
250
+ }
251
+ }
252
+ }
253
+ return true;
254
+ }
255
+ [Symbol.asyncIterator]() {
256
+ return super[Symbol.asyncIterator]();
257
+ }
258
+ _updateOffset(lastMessage, response) {
259
+ if (!this.request) {
260
+ throw new Error("Request not set yet");
261
+ }
262
+ this.request.offsetId = Number(lastMessage.id);
263
+ if (this.reverse) {
264
+ this.request.offsetId += 1;
265
+ }
266
+ if (this.request instanceof tl_1.Api.messages.Search) {
267
+ this.request.maxDate = -1;
268
+ }
269
+ else {
270
+ if (!(this.request instanceof tl_1.Api.messages.SearchGlobal)) {
271
+ this.request.offsetDate = lastMessage.date;
272
+ }
273
+ }
274
+ if (this.request instanceof tl_1.Api.messages.SearchGlobal) {
275
+ if (lastMessage.inputChat) {
276
+ this.request.offsetPeer = lastMessage.inputChat;
277
+ }
278
+ else {
279
+ this.request.offsetPeer = new tl_1.Api.InputPeerEmpty();
280
+ }
281
+ this.request.offsetRate = response.nextRate;
282
+ }
283
+ }
284
+ }
285
+ exports._MessagesIter = _MessagesIter;
286
+ class _IDsIter extends requestIter_1.RequestIter {
287
+ async _init({ entity, ids }) {
288
+ this.total = ids.length;
289
+ this._ids = this.reverse ? ids.reverse() : ids;
290
+ this._offset = 0;
291
+ this._entity = entity
292
+ ? await this.client.getInputEntity(entity)
293
+ : undefined;
294
+ this._ty = this._entity ? (0, Helpers_1._entityType)(this._entity) : undefined;
295
+ if (!this.waitTime) {
296
+ this.waitTime = this.limit > 300 ? 10 : 0;
297
+ }
298
+ }
299
+ [Symbol.asyncIterator]() {
300
+ return super[Symbol.asyncIterator]();
301
+ }
302
+ async _loadNextChunk() {
303
+ var _a, _b, _c;
304
+ const ids = this._ids.slice(this._offset, this._offset + _MAX_CHUNK_SIZE);
305
+ if (!ids.length) {
306
+ return false;
307
+ }
308
+ this._offset += _MAX_CHUNK_SIZE;
309
+ let fromId;
310
+ let r;
311
+ if (this._ty == Helpers_1._EntityType.CHANNEL) {
312
+ try {
313
+ r = await this.client.invoke(new tl_1.Api.channels.GetMessages({
314
+ channel: this._entity,
315
+ id: ids,
316
+ }));
317
+ }
318
+ catch (e) {
319
+ if (e.errorMessage == "MESSAGE_IDS_EMPTY") {
320
+ r = new tl_1.Api.messages.MessagesNotModified({
321
+ count: ids.length,
322
+ });
323
+ }
324
+ else {
325
+ throw e;
326
+ }
327
+ }
328
+ }
329
+ else {
330
+ r = await this.client.invoke(new tl_1.Api.messages.GetMessages({
331
+ id: ids,
332
+ }));
333
+ if (this._entity) {
334
+ fromId = await (0, users_1._getPeer)(this.client, this._entity);
335
+ }
336
+ }
337
+ if (r instanceof tl_1.Api.messages.MessagesNotModified) {
338
+ (_a = this.buffer) === null || _a === void 0 ? void 0 : _a.push(...Array(ids.length));
339
+ return;
340
+ }
341
+ const entities = new Map();
342
+ for (const entity of [...r.users, ...r.chats]) {
343
+ entities.set(__1.utils.getPeerId(entity), entity);
344
+ }
345
+ let message;
346
+ for (message of r.messages) {
347
+ if (message instanceof tl_1.Api.MessageEmpty ||
348
+ (fromId &&
349
+ __1.utils.getPeerId(message.peerId) != __1.utils.getPeerId(fromId))) {
350
+ (_b = this.buffer) === null || _b === void 0 ? void 0 : _b.push(undefined);
351
+ }
352
+ else {
353
+ const temp = message;
354
+ temp._finishInit(this.client, entities, this._entity);
355
+ temp._entities = entities;
356
+ (_c = this.buffer) === null || _c === void 0 ? void 0 : _c.push(temp);
357
+ }
358
+ }
359
+ }
360
+ }
361
+ exports._IDsIter = _IDsIter;
362
+ const IterMessagesDefaults = {
363
+ limit: undefined,
364
+ offsetDate: undefined,
365
+ offsetId: 0,
366
+ maxId: 0,
367
+ minId: 0,
368
+ addOffset: 0,
369
+ search: undefined,
370
+ filter: undefined,
371
+ fromUser: undefined,
372
+ waitTime: undefined,
373
+ ids: undefined,
374
+ reverse: false,
375
+ replyTo: undefined,
376
+ scheduled: false,
377
+ };
378
+ /** @hidden */
379
+ function iterMessages(client, entity, options) {
380
+ const { limit, offsetDate, offsetId, maxId, minId, addOffset, search, filter, fromUser, waitTime, ids, reverse, replyTo, } = Object.assign(Object.assign({}, IterMessagesDefaults), options);
381
+ if (ids) {
382
+ let idsArray;
383
+ if (!(0, Helpers_1.isArrayLike)(ids)) {
384
+ idsArray = [ids];
385
+ }
386
+ else {
387
+ idsArray = ids;
388
+ }
389
+ return new _IDsIter(client, idsArray.length, {
390
+ reverse: reverse,
391
+ waitTime: waitTime,
392
+ }, {
393
+ entity: entity,
394
+ ids: idsArray,
395
+ });
396
+ }
397
+ return new _MessagesIter(client, limit, {
398
+ waitTime: waitTime,
399
+ reverse: reverse,
400
+ }, {
401
+ entity: entity,
402
+ offsetId: offsetId,
403
+ minId: minId,
404
+ maxId: maxId,
405
+ fromUser: fromUser,
406
+ offsetDate: offsetDate,
407
+ addOffset: addOffset,
408
+ filter: filter,
409
+ search: search,
410
+ replyTo: replyTo,
411
+ });
412
+ }
413
+ /** @hidden */
414
+ async function getMessages(client, entity, params) {
415
+ var _a, e_2, _b, _c;
416
+ if (Object.keys(params).length == 1 && params.limit === undefined) {
417
+ if (params.minId === undefined && params.maxId === undefined) {
418
+ params.limit = undefined;
419
+ }
420
+ else {
421
+ params.limit = 1;
422
+ }
423
+ }
424
+ const it = client.iterMessages(entity, params);
425
+ const ids = params.ids;
426
+ if (ids && !(0, Helpers_1.isArrayLike)(ids)) {
427
+ try {
428
+ for (var _d = true, it_1 = __asyncValues(it), it_1_1; it_1_1 = await it_1.next(), _a = it_1_1.done, !_a; _d = true) {
429
+ _c = it_1_1.value;
430
+ _d = false;
431
+ const message = _c;
432
+ return [message];
433
+ }
434
+ }
435
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
436
+ finally {
437
+ try {
438
+ if (!_d && !_a && (_b = it_1.return)) await _b.call(it_1);
439
+ }
440
+ finally { if (e_2) throw e_2.error; }
441
+ }
442
+ return [];
443
+ }
444
+ return (await it.collect());
445
+ }
446
+ // region Message
447
+ /** @hidden */
448
+ async function sendMessage(client,
449
+ /** To who will it be sent. */
450
+ entity,
451
+ /** The message to be sent, or another message object to resend as a copy.<br/>
452
+ * The maximum length for a message is 35,000 bytes or 4,096 characters.<br/>
453
+ * Longer messages will not be sliced automatically, and you should slice them manually if the text to send is longer than said length. */
454
+ { message, replyTo, attributes, parseMode, formattingEntities, linkPreview = true, file, thumb, forceDocument, clearDraft, buttons, silent, supportStreaming, schedule, noforwards, commentTo, topMsgId, } = {}) {
455
+ if (file) {
456
+ return client.sendFile(entity, {
457
+ file: file,
458
+ caption: message
459
+ ? typeof message == "string"
460
+ ? message
461
+ : message.message
462
+ : "",
463
+ forceDocument: forceDocument,
464
+ clearDraft: clearDraft,
465
+ replyTo: replyTo,
466
+ attributes: attributes,
467
+ thumb: thumb,
468
+ supportsStreaming: supportStreaming,
469
+ parseMode: parseMode,
470
+ formattingEntities: formattingEntities,
471
+ silent: silent,
472
+ scheduleDate: schedule,
473
+ buttons: buttons,
474
+ noforwards: noforwards,
475
+ commentTo: commentTo,
476
+ topMsgId: topMsgId,
477
+ });
478
+ }
479
+ entity = await client.getInputEntity(entity);
480
+ if (commentTo != undefined) {
481
+ const discussionData = await getCommentData(client, entity, commentTo);
482
+ entity = discussionData.entity;
483
+ replyTo = discussionData.replyTo;
484
+ }
485
+ let markup, request;
486
+ let replyObject = undefined;
487
+ if (replyTo != undefined) {
488
+ replyObject = new tl_1.Api.InputReplyToMessage({
489
+ replyToMsgId: (0, Utils_1.getMessageId)(replyTo),
490
+ topMsgId: (0, Utils_1.getMessageId)(topMsgId),
491
+ });
492
+ }
493
+ else if (topMsgId != undefined) {
494
+ replyObject = new tl_1.Api.InputReplyToMessage({
495
+ replyToMsgId: (0, Utils_1.getMessageId)(topMsgId),
496
+ });
497
+ }
498
+ if (message && message instanceof tl_1.Api.Message) {
499
+ if (buttons == undefined) {
500
+ markup = message.replyMarkup;
501
+ }
502
+ else {
503
+ markup = client.buildReplyMarkup(buttons);
504
+ }
505
+ if (silent == undefined) {
506
+ silent = message.silent;
507
+ }
508
+ if (message.media &&
509
+ !(message.media instanceof tl_1.Api.MessageMediaWebPage)) {
510
+ return client.sendFile(entity, {
511
+ file: message.media,
512
+ caption: message.message,
513
+ silent: silent,
514
+ replyTo: replyTo,
515
+ buttons: markup,
516
+ formattingEntities: message.entities,
517
+ scheduleDate: schedule,
518
+ });
519
+ }
520
+ request = new tl_1.Api.messages.SendMessage({
521
+ peer: entity,
522
+ message: message.message || "",
523
+ silent: silent,
524
+ replyTo: replyObject,
525
+ replyMarkup: markup,
526
+ entities: message.entities,
527
+ clearDraft: clearDraft,
528
+ noWebpage: !(message.media instanceof tl_1.Api.MessageMediaWebPage),
529
+ scheduleDate: schedule,
530
+ noforwards: noforwards,
531
+ });
532
+ message = message.message;
533
+ }
534
+ else {
535
+ if (formattingEntities == undefined) {
536
+ [message, formattingEntities] = await (0, messageParse_1._parseMessageText)(client, message || "", parseMode);
537
+ }
538
+ if (!message) {
539
+ throw new Error("The message cannot be empty unless a file is provided");
540
+ }
541
+ request = new tl_1.Api.messages.SendMessage({
542
+ peer: entity,
543
+ message: message.toString(),
544
+ entities: formattingEntities,
545
+ noWebpage: !linkPreview,
546
+ replyTo: replyObject,
547
+ clearDraft: clearDraft,
548
+ silent: silent,
549
+ replyMarkup: client.buildReplyMarkup(buttons),
550
+ scheduleDate: schedule,
551
+ noforwards: noforwards,
552
+ });
553
+ }
554
+ const result = await client.invoke(request);
555
+ if (result instanceof tl_1.Api.UpdateShortSentMessage) {
556
+ const msg = new tl_1.Api.Message({
557
+ id: result.id,
558
+ peerId: await (0, users_1._getPeer)(client, entity),
559
+ message: message,
560
+ date: result.date,
561
+ out: result.out,
562
+ media: result.media,
563
+ entities: result.entities,
564
+ replyMarkup: request.replyMarkup,
565
+ ttlPeriod: result.ttlPeriod,
566
+ });
567
+ msg._finishInit(client, new Map(), entity);
568
+ return msg;
569
+ }
570
+ return client._getResponseMessage(request, result, entity);
571
+ }
572
+ /** @hidden */
573
+ async function forwardMessages(client, entity, { messages, fromPeer, silent, schedule, noforwards, dropAuthor, topMsgId, } // или свой тип ID
574
+ ) {
575
+ if (!(0, Helpers_1.isArrayLike)(messages)) {
576
+ messages = [messages];
577
+ }
578
+ entity = await client.getInputEntity(entity);
579
+ let fromPeerId;
580
+ if (fromPeer) {
581
+ fromPeer = await client.getInputEntity(fromPeer);
582
+ fromPeerId = await client.getPeerId(fromPeer);
583
+ }
584
+ const getKey = (m) => {
585
+ if (m instanceof tl_1.Api.Message) {
586
+ return m.chatId;
587
+ }
588
+ let msgId = (0, Utils_1.parseID)(m);
589
+ if (msgId) {
590
+ if (fromPeerId !== undefined)
591
+ return fromPeerId;
592
+ throw new Error("fromPeer must be given if integer IDs are used");
593
+ }
594
+ else {
595
+ throw new Error(`Cannot forward ${m}`);
596
+ }
597
+ };
598
+ const sent = [];
599
+ for (let [chatId, chunk] of (0, Helpers_1.groupBy)(messages, getKey)) {
600
+ let chat;
601
+ let numbers = [];
602
+ if (typeof chunk[0] == "number") {
603
+ chat = fromPeer;
604
+ numbers = chunk;
605
+ }
606
+ else {
607
+ chat = await chunk[0].getInputChat();
608
+ numbers = chunk.map((m) => m.id);
609
+ }
610
+ const request = new tl_1.Api.messages.ForwardMessages({
611
+ fromPeer: chat,
612
+ id: numbers,
613
+ toPeer: entity,
614
+ silent: silent,
615
+ scheduleDate: schedule,
616
+ noforwards: noforwards,
617
+ dropAuthor: dropAuthor,
618
+ topMsgId: topMsgId ? (0, Utils_1.getMessageId)(topMsgId) : undefined,
619
+ });
620
+ const result = await client.invoke(request);
621
+ sent.push(client._getResponseMessage(request, result, entity));
622
+ }
623
+ return sent;
624
+ }
625
+ /** @hidden */
626
+ async function editMessage(client, entity, { message, text, parseMode, formattingEntities, linkPreview = true, file, forceDocument, buttons, schedule, }) {
627
+ if (typeof message === "number" &&
628
+ typeof text === "undefined" &&
629
+ !file &&
630
+ !schedule) {
631
+ throw Error("You have to provide either file or text or schedule property.");
632
+ }
633
+ entity = await client.getInputEntity(entity);
634
+ let id;
635
+ let markup;
636
+ let entities;
637
+ let inputMedia;
638
+ if (file) {
639
+ const { fileHandle, media, image } = await (0, uploads_1._fileToMedia)(client, {
640
+ file,
641
+ forceDocument,
642
+ });
643
+ inputMedia = media;
644
+ }
645
+ if (message instanceof tl_1.Api.Message) {
646
+ id = (0, Utils_1.getMessageId)(message);
647
+ text = message.message;
648
+ entities = message.entities;
649
+ if (buttons == undefined) {
650
+ markup = message.replyMarkup;
651
+ }
652
+ else {
653
+ markup = client.buildReplyMarkup(buttons);
654
+ }
655
+ if (message.media) {
656
+ inputMedia = (0, Utils_1.getInputMedia)(message.media, { forceDocument });
657
+ }
658
+ }
659
+ else {
660
+ if (typeof message !== "number") {
661
+ throw Error("editMessageParams.message must be either a number or a Api.Message type");
662
+ }
663
+ id = message;
664
+ if (formattingEntities == undefined) {
665
+ [text, entities] = await (0, messageParse_1._parseMessageText)(client, text || "", parseMode);
666
+ }
667
+ else {
668
+ entities = formattingEntities;
669
+ }
670
+ markup = client.buildReplyMarkup(buttons);
671
+ }
672
+ const request = new tl_1.Api.messages.EditMessage({
673
+ peer: entity,
674
+ id,
675
+ message: text,
676
+ noWebpage: !linkPreview,
677
+ entities,
678
+ media: inputMedia,
679
+ replyMarkup: markup,
680
+ scheduleDate: schedule,
681
+ });
682
+ const result = await client.invoke(request);
683
+ return client._getResponseMessage(request, result, entity);
684
+ }
685
+ /** @hidden */
686
+ async function deleteMessages(client, entity, messageIds, { revoke = false }) {
687
+ let ty = Helpers_1._EntityType.USER;
688
+ if (entity) {
689
+ entity = await client.getInputEntity(entity);
690
+ ty = (0, Helpers_1._entityType)(entity);
691
+ }
692
+ const ids = [];
693
+ for (const messageId of messageIds) {
694
+ if (messageId instanceof tl_1.Api.Message ||
695
+ messageId instanceof tl_1.Api.MessageService ||
696
+ messageId instanceof tl_1.Api.MessageEmpty) {
697
+ ids.push(messageId.id);
698
+ }
699
+ else if (typeof messageId === "number") {
700
+ ids.push(messageId);
701
+ }
702
+ else {
703
+ throw new Error(`Cannot convert ${messageId} to an integer`);
704
+ }
705
+ }
706
+ const results = [];
707
+ if (ty == Helpers_1._EntityType.CHANNEL) {
708
+ for (const chunk of __1.utils.chunks(ids)) {
709
+ results.push(client.invoke(new tl_1.Api.channels.DeleteMessages({
710
+ channel: entity,
711
+ id: chunk,
712
+ })));
713
+ }
714
+ }
715
+ else {
716
+ for (const chunk of __1.utils.chunks(ids)) {
717
+ results.push(client.invoke(new tl_1.Api.messages.DeleteMessages({
718
+ id: chunk,
719
+ revoke: revoke,
720
+ })));
721
+ }
722
+ }
723
+ return Promise.all(results);
724
+ }
725
+ /** @hidden */
726
+ async function pinMessage(client, entity, message, pinMessageParams) {
727
+ return await _pin(client, entity, message, false, pinMessageParams === null || pinMessageParams === void 0 ? void 0 : pinMessageParams.notify, pinMessageParams === null || pinMessageParams === void 0 ? void 0 : pinMessageParams.pmOneSide);
728
+ }
729
+ /** @hidden */
730
+ async function unpinMessage(client, entity, message, unpinMessageParams) {
731
+ return await _pin(client, entity, message, true, unpinMessageParams === null || unpinMessageParams === void 0 ? void 0 : unpinMessageParams.notify, unpinMessageParams === null || unpinMessageParams === void 0 ? void 0 : unpinMessageParams.pmOneSide);
732
+ }
733
+ /** @hidden */
734
+ async function _pin(client, entity, message, unpin, notify = false, pmOneSide = false) {
735
+ message = __1.utils.getMessageId(message) || 0;
736
+ if (message === 0) {
737
+ return await client.invoke(new tl_1.Api.messages.UnpinAllMessages({
738
+ peer: entity,
739
+ }));
740
+ }
741
+ entity = await client.getInputEntity(entity);
742
+ const request = new tl_1.Api.messages.UpdatePinnedMessage({
743
+ silent: !notify,
744
+ unpin,
745
+ pmOneside: pmOneSide,
746
+ peer: entity,
747
+ id: message,
748
+ });
749
+ const result = await client.invoke(request);
750
+ /**
751
+ * Unpinning does not produce a service message.
752
+ * Pinning a message that was already pinned also produces no service message.
753
+ * Pinning a message in your own chat does not produce a service message,
754
+ * but pinning on a private conversation with someone else does.
755
+ */
756
+ if (unpin ||
757
+ !("updates" in result) ||
758
+ ("updates" in result && !result.updates)) {
759
+ return;
760
+ }
761
+ // Pinning a message that doesn't exist would RPC-error earlier
762
+ return client._getResponseMessage(request, result, entity);
763
+ }
764
+ /** @hidden */
765
+ async function markAsRead(client, entity, message, markAsReadParams) {
766
+ let maxId = (markAsReadParams === null || markAsReadParams === void 0 ? void 0 : markAsReadParams.maxId) || 0;
767
+ const maxIdIsUndefined = (markAsReadParams === null || markAsReadParams === void 0 ? void 0 : markAsReadParams.maxId) === undefined;
768
+ if (maxIdIsUndefined) {
769
+ if (message) {
770
+ if (Array.isArray(message)) {
771
+ maxId = Math.max(...message.map((v) => __1.utils.getMessageId(v)));
772
+ }
773
+ else {
774
+ maxId = __1.utils.getMessageId(message);
775
+ }
776
+ }
777
+ }
778
+ entity = await client.getInputEntity(entity);
779
+ if (markAsReadParams && !markAsReadParams.clearMentions) {
780
+ await client.invoke(new tl_1.Api.messages.ReadMentions({ peer: entity }));
781
+ if (maxIdIsUndefined && message === undefined) {
782
+ return true;
783
+ }
784
+ }
785
+ if ((0, Helpers_1._entityType)(entity) === Helpers_1._EntityType.CHANNEL) {
786
+ return await client.invoke(new tl_1.Api.channels.ReadHistory({ channel: entity, maxId }));
787
+ }
788
+ else {
789
+ await client.invoke(new tl_1.Api.messages.ReadHistory({ peer: entity, maxId }));
790
+ return true;
791
+ }
792
+ }
793
+ /** @hidden */
794
+ async function getCommentData(client, entity, message) {
795
+ const result = await client.invoke(new tl_1.Api.messages.GetDiscussionMessage({
796
+ peer: entity,
797
+ msgId: __1.utils.getMessageId(message),
798
+ }));
799
+ const relevantMessage = result.messages.reduce((p, c) => (p && p.id < c.id ? p : c));
800
+ let chat;
801
+ for (const c of result.chats) {
802
+ if (relevantMessage.peerId instanceof tl_1.Api.PeerChannel &&
803
+ c.id.eq(relevantMessage.peerId.channelId)) {
804
+ chat = c;
805
+ break;
806
+ }
807
+ }
808
+ return {
809
+ entity: __1.utils.getInputPeer(chat),
810
+ replyTo: relevantMessage.id,
811
+ };
812
+ }
813
+ // TODO do the rest