@mtkruto/node 0.0.983 → 0.0.984

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 (141) hide show
  1. package/esm/client/3_client.d.ts +30 -1
  2. package/esm/client/3_client.js +89 -28
  3. package/esm/constants.d.ts +1 -1
  4. package/esm/constants.js +1 -1
  5. package/esm/deps.d.ts +2 -2
  6. package/esm/deps.js +2 -2
  7. package/esm/transport/2_transport_provider.d.ts +0 -4
  8. package/esm/transport/2_transport_provider.js +0 -35
  9. package/package.json +1 -1
  10. package/script/client/3_client.d.ts +30 -1
  11. package/script/client/3_client.js +89 -28
  12. package/script/constants.d.ts +1 -1
  13. package/script/constants.js +1 -1
  14. package/script/deps.d.ts +2 -2
  15. package/script/deps.js +2 -2
  16. package/script/transport/2_transport_provider.d.ts +0 -4
  17. package/script/transport/2_transport_provider.js +1 -37
  18. package/esm/connection/1_connection_http.d.ts +0 -16
  19. package/esm/connection/1_connection_http.js +0 -91
  20. package/esm/transport/1_transport_piped.d.ts +0 -10
  21. package/esm/transport/1_transport_piped.js +0 -23
  22. package/script/connection/1_connection_http.d.ts +0 -16
  23. package/script/connection/1_connection_http.js +0 -95
  24. package/script/transport/1_transport_piped.d.ts +0 -10
  25. package/script/transport/1_transport_piped.js +0 -27
  26. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/_util/diff.d.ts +0 -0
  27. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/_util/diff.js +0 -0
  28. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/_constants.d.ts +0 -0
  29. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/_constants.js +0 -0
  30. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/_format.d.ts +0 -0
  31. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/_format.js +0 -0
  32. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert.d.ts +0 -0
  33. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert.js +0 -0
  34. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_almost_equals.d.ts +0 -0
  35. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_almost_equals.js +0 -0
  36. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_array_includes.d.ts +0 -0
  37. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_array_includes.js +0 -0
  38. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_equals.d.ts +0 -0
  39. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_equals.js +0 -0
  40. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_exists.d.ts +0 -0
  41. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_exists.js +0 -0
  42. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_false.d.ts +0 -0
  43. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_false.js +0 -0
  44. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_instance_of.d.ts +0 -0
  45. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_instance_of.js +0 -0
  46. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_is_error.d.ts +0 -0
  47. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_is_error.js +0 -0
  48. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_match.d.ts +0 -0
  49. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_match.js +0 -0
  50. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_equals.d.ts +0 -0
  51. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_equals.js +0 -0
  52. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_instance_of.d.ts +0 -0
  53. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_instance_of.js +0 -0
  54. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_match.d.ts +0 -0
  55. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_match.js +0 -0
  56. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_strict_equals.d.ts +0 -0
  57. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_strict_equals.js +0 -0
  58. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_object_match.d.ts +0 -0
  59. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_object_match.js +0 -0
  60. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_rejects.d.ts +0 -0
  61. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_rejects.js +0 -0
  62. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_strict_equals.d.ts +0 -0
  63. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_strict_equals.js +0 -0
  64. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_string_includes.d.ts +0 -0
  65. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_string_includes.js +0 -0
  66. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_throws.d.ts +0 -0
  67. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_throws.js +0 -0
  68. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assertion_error.d.ts +0 -0
  69. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assertion_error.js +0 -0
  70. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/equal.d.ts +0 -0
  71. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/equal.js +0 -0
  72. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/fail.d.ts +0 -0
  73. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/fail.js +0 -0
  74. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/mod.d.ts +0 -0
  75. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/mod.js +0 -0
  76. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/unimplemented.d.ts +0 -0
  77. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/unimplemented.js +0 -0
  78. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/unreachable.d.ts +0 -0
  79. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/unreachable.js +0 -0
  80. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/encoding/base64.d.ts +0 -0
  81. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/encoding/base64.js +0 -0
  82. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/fmt/colors.d.ts +0 -0
  83. /package/esm/deps/deno.land/{std@0.198.0 → std@0.199.0}/fmt/colors.js +0 -0
  84. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/_util/diff.d.ts +0 -0
  85. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/_util/diff.js +0 -0
  86. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/_constants.d.ts +0 -0
  87. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/_constants.js +0 -0
  88. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/_format.d.ts +0 -0
  89. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/_format.js +0 -0
  90. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert.d.ts +0 -0
  91. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert.js +0 -0
  92. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_almost_equals.d.ts +0 -0
  93. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_almost_equals.js +0 -0
  94. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_array_includes.d.ts +0 -0
  95. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_array_includes.js +0 -0
  96. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_equals.d.ts +0 -0
  97. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_equals.js +0 -0
  98. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_exists.d.ts +0 -0
  99. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_exists.js +0 -0
  100. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_false.d.ts +0 -0
  101. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_false.js +0 -0
  102. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_instance_of.d.ts +0 -0
  103. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_instance_of.js +0 -0
  104. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_is_error.d.ts +0 -0
  105. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_is_error.js +0 -0
  106. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_match.d.ts +0 -0
  107. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_match.js +0 -0
  108. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_equals.d.ts +0 -0
  109. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_equals.js +0 -0
  110. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_instance_of.d.ts +0 -0
  111. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_instance_of.js +0 -0
  112. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_match.d.ts +0 -0
  113. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_match.js +0 -0
  114. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_strict_equals.d.ts +0 -0
  115. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_not_strict_equals.js +0 -0
  116. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_object_match.d.ts +0 -0
  117. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_object_match.js +0 -0
  118. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_rejects.d.ts +0 -0
  119. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_rejects.js +0 -0
  120. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_strict_equals.d.ts +0 -0
  121. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_strict_equals.js +0 -0
  122. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_string_includes.d.ts +0 -0
  123. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_string_includes.js +0 -0
  124. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_throws.d.ts +0 -0
  125. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assert_throws.js +0 -0
  126. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assertion_error.d.ts +0 -0
  127. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/assertion_error.js +0 -0
  128. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/equal.d.ts +0 -0
  129. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/equal.js +0 -0
  130. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/fail.d.ts +0 -0
  131. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/fail.js +0 -0
  132. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/mod.d.ts +0 -0
  133. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/mod.js +0 -0
  134. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/unimplemented.d.ts +0 -0
  135. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/unimplemented.js +0 -0
  136. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/unreachable.d.ts +0 -0
  137. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/assert/unreachable.js +0 -0
  138. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/encoding/base64.d.ts +0 -0
  139. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/encoding/base64.js +0 -0
  140. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/fmt/colors.d.ts +0 -0
  141. /package/script/deps/deno.land/{std@0.198.0 → std@0.199.0}/fmt/colors.js +0 -0
@@ -110,6 +110,24 @@ export interface SendMessagesParams {
110
110
  */
111
111
  replyMarkup?: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply;
112
112
  }
113
+ export interface EditMessageParams {
114
+ /**
115
+ * The parse mode to use. If not provided, the default parse mode will be used.
116
+ */
117
+ parseMode?: ParseMode;
118
+ /**
119
+ * The message's entities.
120
+ */
121
+ entities?: MessageEntity[];
122
+ /**
123
+ * Whether to disable web page previews in the message that is to be edited.
124
+ */
125
+ disableWebPagePreview?: boolean;
126
+ /**
127
+ * The reply markup of the message.
128
+ */
129
+ replyMarkup?: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply;
130
+ }
113
131
  export interface ForwardMessagesParams {
114
132
  messageThreadId?: number;
115
133
  /**
@@ -179,6 +197,9 @@ export declare class Client extends ClientAbstract {
179
197
  connect(): Promise<void>;
180
198
  private fetchState;
181
199
  [handleMigrationError](err: types.RPCError): Promise<void>;
200
+ private connectionInited;
201
+ disconnect(): Promise<void>;
202
+ private initConnection;
182
203
  /**
183
204
  * Calls [initConnection](1) and authorizes the client with one of the following:
184
205
  *
@@ -229,7 +250,7 @@ export declare class Client extends ClientAbstract {
229
250
  private updateGapRecoveryMutex;
230
251
  private recoverUpdateGap;
231
252
  private recoverChannelUpdateGap;
232
- getInputPeer(id: string | number): Promise<types.InputPeerChat | types.InputPeerUser | types.InputPeerChannel>;
253
+ getInputPeer(id: ChatID): Promise<types.InputPeerChat | types.InputPeerUser | types.InputPeerChannel>;
233
254
  [getEntity](peer: types.PeerUser): Promise<types.User | null>;
234
255
  [getEntity](peer: types.PeerChat): Promise<types.Chat | null>;
235
256
  [getEntity](peer: types.PeerChannel): Promise<types.Channel | null>;
@@ -242,6 +263,14 @@ export declare class Client extends ClientAbstract {
242
263
  * @param text The message's text.
243
264
  */
244
265
  sendMessage(chatId: ChatID, text: string, params?: SendMessagesParams): Promise<Message>;
266
+ /**
267
+ * Edit a message's text.
268
+ *
269
+ * @param chatId The chat where the message is.
270
+ * @param messageId The ID of the message.
271
+ * @param text The new text of the message.
272
+ */
273
+ editMessageText(chatId: ChatID, messageId: number, text: string, params?: EditMessageParams): Promise<void>;
245
274
  /**
246
275
  * Retrieve multiple messages.
247
276
  *
@@ -172,6 +172,12 @@ export class Client extends ClientAbstract {
172
172
  writable: true,
173
173
  value: false
174
174
  });
175
+ Object.defineProperty(this, "connectionInited", {
176
+ enumerable: true,
177
+ configurable: true,
178
+ writable: true,
179
+ value: false
180
+ });
175
181
  Object.defineProperty(this, "autoStarted", {
176
182
  enumerable: true,
177
183
  configurable: true,
@@ -293,6 +299,29 @@ export class Client extends ClientAbstract {
293
299
  UNREACHABLE();
294
300
  }
295
301
  }
302
+ disconnect() {
303
+ this.connectionInited = false;
304
+ return super.disconnect();
305
+ }
306
+ async initConnection() {
307
+ if (!this.connectionInited) {
308
+ await this.invoke(new functions.InitConnection({
309
+ apiId: this.apiId,
310
+ appVersion: this.appVersion,
311
+ deviceModel: this.deviceModel,
312
+ langCode: this.langCode,
313
+ langPack: this.langPack,
314
+ query: new functions.InvokeWithLayer({
315
+ layer: LAYER,
316
+ query: new functions.HelpGetConfig(),
317
+ }),
318
+ systemLangCode: this.systemLangCode,
319
+ systemVersion: this.systemVersion,
320
+ }));
321
+ this.connectionInited = true;
322
+ d("connection inited");
323
+ }
324
+ }
296
325
  /**
297
326
  * Calls [initConnection](1) and authorizes the client with one of the following:
298
327
  *
@@ -327,23 +356,7 @@ export class Client extends ClientAbstract {
327
356
  }
328
357
  }
329
358
  dAuth("authorizing with %s", typeof params === "string" ? "bot token" : params instanceof types.AuthExportedAuthorization ? "exported authorization" : "AuthorizeUserParams");
330
- const initConnection = async () => {
331
- await this.invoke(new functions.InitConnection({
332
- apiId: this.apiId,
333
- appVersion: this.appVersion,
334
- deviceModel: this.deviceModel,
335
- langCode: this.langCode,
336
- langPack: this.langPack,
337
- query: new functions.InvokeWithLayer({
338
- layer: LAYER,
339
- query: new functions.HelpGetConfig(),
340
- }),
341
- systemLangCode: this.systemLangCode,
342
- systemVersion: this.systemVersion,
343
- }));
344
- d("connection inited");
345
- };
346
- await initConnection();
359
+ await this.initConnection();
347
360
  try {
348
361
  await this.fetchState("authorize");
349
362
  d("already authorized");
@@ -366,7 +379,7 @@ export class Client extends ClientAbstract {
366
379
  const match = err.errorMessage.match(/MIGRATE_(\d)$/);
367
380
  if (match) {
368
381
  await this[handleMigrationError](err);
369
- await initConnection();
382
+ await this.initConnection();
370
383
  continue;
371
384
  }
372
385
  else {
@@ -406,7 +419,7 @@ export class Client extends ClientAbstract {
406
419
  const match = err.errorMessage.match(/MIGRATE_(\d)$/);
407
420
  if (match) {
408
421
  await this[handleMigrationError](err);
409
- await initConnection();
422
+ await this.initConnection();
410
423
  sentCode = await sendCode();
411
424
  }
412
425
  else {
@@ -485,6 +498,7 @@ export class Client extends ClientAbstract {
485
498
  */
486
499
  async start(params) {
487
500
  await this.connect();
501
+ await this.initConnection();
488
502
  try {
489
503
  await this.fetchState("authorize");
490
504
  d("already authorized");
@@ -566,16 +580,14 @@ export class Client extends ClientAbstract {
566
580
  this.promises.delete(message.body.msgId);
567
581
  }
568
582
  }
569
- else if (message.body instanceof types.TypeBadMsgNotification || message.body instanceof types.BadServerSalt) {
570
- if (message.body instanceof types.BadServerSalt) {
571
- d("server salt reassigned");
572
- this.state.salt = message.body.newServerSalt;
583
+ else if (message.body instanceof types.BadServerSalt) {
584
+ d("server salt reassigned");
585
+ this.state.salt = message.body.newServerSalt;
586
+ const promise = this.promises.get(message.body.badMsgId);
587
+ if (promise) {
588
+ promise.resolve(message.body);
589
+ this.promises.delete(message.body.badMsgId);
573
590
  }
574
- // const promise = this.promises.get(message.body.badMsgId);
575
- // if (promise) {
576
- // promise.resolve(message.body);
577
- // this.promises.delete(message.body.badMsgId);
578
- // }
579
591
  }
580
592
  this.toAcknowledge.add(message.id);
581
593
  }
@@ -1212,6 +1224,55 @@ export class Client extends ClientAbstract {
1212
1224
  }));
1213
1225
  return await this.updatesToMessages(chatId, result).then((v) => v[0]);
1214
1226
  }
1227
+ /**
1228
+ * Edit a message's text.
1229
+ *
1230
+ * @param chatId The chat where the message is.
1231
+ * @param messageId The ID of the message.
1232
+ * @param text The new text of the message.
1233
+ */
1234
+ async editMessageText(chatId, messageId, text, params) {
1235
+ const entities_ = params?.entities ?? [];
1236
+ const parseMode = params?.parseMode ?? this.parseMode;
1237
+ switch (parseMode) {
1238
+ case ParseMode.None:
1239
+ break;
1240
+ case ParseMode.HTML: {
1241
+ const [newText, entitiesToPush] = parseHtml(text);
1242
+ text = newText;
1243
+ for (const entity of entitiesToPush) {
1244
+ entities_.push(entity);
1245
+ }
1246
+ }
1247
+ }
1248
+ let replyMarkup = undefined;
1249
+ if (params?.replyMarkup) {
1250
+ if ("inlineKeyboard" in params.replyMarkup) {
1251
+ replyMarkup = await inlineKeyboardMarkupToTlObject(params.replyMarkup, async (v) => {
1252
+ const inputPeer = await this.getInputPeer(v).then((v) => v[as](types.InputPeerUser));
1253
+ return new types.InputUser({ userId: inputPeer.userId, accessHash: inputPeer.accessHash });
1254
+ });
1255
+ }
1256
+ else if ("keyboard" in params.replyMarkup) {
1257
+ replyMarkup = replyKeyboardMarkupToTlObject(params.replyMarkup);
1258
+ }
1259
+ else if ("removeKeyboard" in params.replyMarkup) {
1260
+ replyMarkup = replyKeyboardRemoveToTlObject(params.replyMarkup);
1261
+ }
1262
+ else if ("forceReply" in params.replyMarkup) {
1263
+ replyMarkup = forceReplyToTlObject(params.replyMarkup);
1264
+ }
1265
+ else {
1266
+ throw new Error("The replyMarkup parameter has an unexpected type");
1267
+ }
1268
+ }
1269
+ const id = messageId;
1270
+ const peer = await this.getInputPeer(chatId);
1271
+ const entities = entities_?.length > 0 ? entities_.map((v) => messageEntityToTlObject(v)) : undefined;
1272
+ const message = text;
1273
+ const noWebpage = params?.disableWebPagePreview ? true : undefined;
1274
+ await this.invoke(new functions.MessagesEditMessage({ id, peer, entities, message, noWebpage, replyMarkup }));
1275
+ }
1215
1276
  /**
1216
1277
  * Retrieve multiple messages.
1217
1278
  *
@@ -5,7 +5,7 @@ export declare const PUBLIC_KEYS: PublicKeys;
5
5
  export declare const VECTOR_CONSTRUCTOR = 481674261;
6
6
  export declare const INITIAL_DC: DC;
7
7
  export declare const LAYER = 161;
8
- export declare const APP_VERSION = "MTKruto 0.0.983";
8
+ export declare const APP_VERSION = "MTKruto 0.0.984";
9
9
  export declare const DEVICE_MODEL: string;
10
10
  export declare const LANG_CODE: string;
11
11
  export declare const LANG_PACK = "";
package/esm/constants.js CHANGED
@@ -54,7 +54,7 @@ export const PUBLIC_KEYS = Object.freeze([
54
54
  export const VECTOR_CONSTRUCTOR = 0x1CB5C415;
55
55
  export const INITIAL_DC = "2-test";
56
56
  export const LAYER = 161;
57
- export const APP_VERSION = "MTKruto 0.0.983";
57
+ export const APP_VERSION = "MTKruto 0.0.984";
58
58
  // @ts-ignore: lib
59
59
  export const DEVICE_MODEL = typeof dntShim.Deno === "undefined" ? typeof navigator === "undefined" ? typeof process === "undefined" ? "Unknown" : process.platform + "-" + process.arch : navigator.userAgent.split(" ")[0] : dntShim.Deno.build.os + "-" + dntShim.Deno.build.arch;
60
60
  export const LANG_CODE = typeof navigator === "undefined" ? "en" : navigator.language.split("-")[0];
package/esm/deps.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- export * from "./deps/deno.land/std@0.198.0/assert/mod.js";
1
+ export * from "./deps/deno.land/std@0.199.0/assert/mod.js";
2
2
  export { ctr256Decrypt, ctr256Encrypt, factorize, ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/deno.land/x/tgcrypto@0.1.3/mod.js";
3
3
  export { gunzip, gzip } from "./deps/raw.githubusercontent.com/MTKruto/compress/master/gzip/gzip.js";
4
4
  export { Mutex, type MutexInterface } from "async-mutex";
5
5
  export { Parser } from "./deps/deno.land/x/html_parser@v0.1.3/src/mod.js";
6
6
  import { debug as debug_ } from "./deps/raw.githubusercontent.com/MTKruto/debug/master/mod.js";
7
7
  export declare const debug: typeof debug_;
8
- export { decode as base64Decode, encode as base64Encode } from "./deps/deno.land/std@0.198.0/encoding/base64.js";
8
+ export { decode as base64Decode, encode as base64Encode } from "./deps/deno.land/std@0.199.0/encoding/base64.js";
package/esm/deps.js CHANGED
@@ -1,8 +1,8 @@
1
- export * from "./deps/deno.land/std@0.198.0/assert/mod.js";
1
+ export * from "./deps/deno.land/std@0.199.0/assert/mod.js";
2
2
  export { ctr256Decrypt, ctr256Encrypt, factorize, ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/deno.land/x/tgcrypto@0.1.3/mod.js";
3
3
  export { gunzip, gzip } from "./deps/raw.githubusercontent.com/MTKruto/compress/master/gzip/gzip.js";
4
4
  export { Mutex } from "async-mutex";
5
5
  export { Parser } from "./deps/deno.land/x/html_parser@v0.1.3/src/mod.js";
6
6
  import { debug as debug_ } from "./deps/raw.githubusercontent.com/MTKruto/debug/master/mod.js";
7
7
  export const debug = (v) => debug_(`mtkruto/${v}`);
8
- export { decode as base64Decode, encode as base64Encode } from "./deps/deno.land/std@0.198.0/encoding/base64.js";
8
+ export { decode as base64Decode, encode as base64Encode } from "./deps/deno.land/std@0.199.0/encoding/base64.js";
@@ -20,7 +20,3 @@ export type TransportProviderCreator<E = Record<never, never>> = (params: Transp
20
20
  export declare const webSocketTransportProvider: TransportProviderCreator<{
21
21
  wss?: boolean;
22
22
  }>;
23
- export declare const httpTransportProvider: TransportProviderCreator<{
24
- secure?: boolean;
25
- v6?: boolean;
26
- }>;
@@ -1,6 +1,4 @@
1
- import { ConnectionHTTP } from "../connection/1_connection_http.js";
2
1
  import { ConnectionWebSocket } from "../connection/1_connection_web_socket.js";
3
- import { TransportPiped } from "./1_transport_piped.js";
4
2
  import { TransportIntermediate } from "./1_transport_intermediate.js";
5
3
  const dcToNameMap = {
6
4
  "1": "pluto",
@@ -29,36 +27,3 @@ export const webSocketTransportProvider = ({ initialDc, wss }) => {
29
27
  },
30
28
  };
31
29
  };
32
- const dcToIPv4Map = {
33
- "1": "149.154.175.50",
34
- "1-test": "149.154.175.10",
35
- "2": "149.154.167.51",
36
- "2-test": "149.154.167.40",
37
- "3": "149.154.175.100",
38
- "3-test": "149.154.175.117",
39
- "4": "149.154.167.91",
40
- "5": "149.154.171.5",
41
- };
42
- const dcToIPv6Map = {
43
- "1": "[2001:b28:f23d:f001::a]",
44
- "1-test": "[2001:b28:f23d:f001::e]",
45
- "2": "[2001:67c:4e8:f002::a]",
46
- "2-test": "[2001:67c:4e8:f002::e]",
47
- "3": "[2001:b28:f23d:f003::a]",
48
- "3-test": "[2001:b28:f23d:f003::e]",
49
- "4": "[2001:67c:4e8:f004::a]",
50
- "5": "[2001:b28:f23f:f005::a]",
51
- };
52
- export const httpTransportProvider = ({ initialDc, secure, v6 }) => {
53
- return {
54
- initialDc,
55
- createTransport({ dc, cdn }) {
56
- dc ??= initialDc;
57
- const url = secure ? `https://${dcToNameMap[dc]}${cdn ? "-1" : ""}.web.telegram.org/${dc.endsWith("-test") ? "apiw1_test" : "apiw1"}` : `http://${(v6 ? dcToIPv6Map : dcToIPv4Map)[dc]}/${dc.endsWith("-test") ? "api_test" : "api"}`;
58
- const connection = new ConnectionHTTP(url);
59
- const transport = new TransportPiped(connection);
60
- const dcId = getDcId(dc, cdn);
61
- return { connection, transport, dcId };
62
- },
63
- };
64
- };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "module": "./esm/mod.js",
3
3
  "main": "./script/mod.js",
4
4
  "name": "@mtkruto/node",
5
- "version": "0.0.983",
5
+ "version": "0.0.984",
6
6
  "description": "MTKruto for Node.js",
7
7
  "author": "Roj <rojvv@icloud.com>",
8
8
  "license": "LGPL-3.0-or-later",
@@ -110,6 +110,24 @@ export interface SendMessagesParams {
110
110
  */
111
111
  replyMarkup?: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply;
112
112
  }
113
+ export interface EditMessageParams {
114
+ /**
115
+ * The parse mode to use. If not provided, the default parse mode will be used.
116
+ */
117
+ parseMode?: ParseMode;
118
+ /**
119
+ * The message's entities.
120
+ */
121
+ entities?: MessageEntity[];
122
+ /**
123
+ * Whether to disable web page previews in the message that is to be edited.
124
+ */
125
+ disableWebPagePreview?: boolean;
126
+ /**
127
+ * The reply markup of the message.
128
+ */
129
+ replyMarkup?: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply;
130
+ }
113
131
  export interface ForwardMessagesParams {
114
132
  messageThreadId?: number;
115
133
  /**
@@ -179,6 +197,9 @@ export declare class Client extends ClientAbstract {
179
197
  connect(): Promise<void>;
180
198
  private fetchState;
181
199
  [handleMigrationError](err: types.RPCError): Promise<void>;
200
+ private connectionInited;
201
+ disconnect(): Promise<void>;
202
+ private initConnection;
182
203
  /**
183
204
  * Calls [initConnection](1) and authorizes the client with one of the following:
184
205
  *
@@ -229,7 +250,7 @@ export declare class Client extends ClientAbstract {
229
250
  private updateGapRecoveryMutex;
230
251
  private recoverUpdateGap;
231
252
  private recoverChannelUpdateGap;
232
- getInputPeer(id: string | number): Promise<types.InputPeerChat | types.InputPeerUser | types.InputPeerChannel>;
253
+ getInputPeer(id: ChatID): Promise<types.InputPeerChat | types.InputPeerUser | types.InputPeerChannel>;
233
254
  [getEntity](peer: types.PeerUser): Promise<types.User | null>;
234
255
  [getEntity](peer: types.PeerChat): Promise<types.Chat | null>;
235
256
  [getEntity](peer: types.PeerChannel): Promise<types.Channel | null>;
@@ -242,6 +263,14 @@ export declare class Client extends ClientAbstract {
242
263
  * @param text The message's text.
243
264
  */
244
265
  sendMessage(chatId: ChatID, text: string, params?: SendMessagesParams): Promise<Message>;
266
+ /**
267
+ * Edit a message's text.
268
+ *
269
+ * @param chatId The chat where the message is.
270
+ * @param messageId The ID of the message.
271
+ * @param text The new text of the message.
272
+ */
273
+ editMessageText(chatId: ChatID, messageId: number, text: string, params?: EditMessageParams): Promise<void>;
245
274
  /**
246
275
  * Retrieve multiple messages.
247
276
  *
@@ -198,6 +198,12 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
198
198
  writable: true,
199
199
  value: false
200
200
  });
201
+ Object.defineProperty(this, "connectionInited", {
202
+ enumerable: true,
203
+ configurable: true,
204
+ writable: true,
205
+ value: false
206
+ });
201
207
  Object.defineProperty(this, "autoStarted", {
202
208
  enumerable: true,
203
209
  configurable: true,
@@ -319,6 +325,29 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
319
325
  (0, _0_control_js_1.UNREACHABLE)();
320
326
  }
321
327
  }
328
+ disconnect() {
329
+ this.connectionInited = false;
330
+ return super.disconnect();
331
+ }
332
+ async initConnection() {
333
+ if (!this.connectionInited) {
334
+ await this.invoke(new functions.InitConnection({
335
+ apiId: this.apiId,
336
+ appVersion: this.appVersion,
337
+ deviceModel: this.deviceModel,
338
+ langCode: this.langCode,
339
+ langPack: this.langPack,
340
+ query: new functions.InvokeWithLayer({
341
+ layer: constants_js_1.LAYER,
342
+ query: new functions.HelpGetConfig(),
343
+ }),
344
+ systemLangCode: this.systemLangCode,
345
+ systemVersion: this.systemVersion,
346
+ }));
347
+ this.connectionInited = true;
348
+ d("connection inited");
349
+ }
350
+ }
322
351
  /**
323
352
  * Calls [initConnection](1) and authorizes the client with one of the following:
324
353
  *
@@ -353,23 +382,7 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
353
382
  }
354
383
  }
355
384
  dAuth("authorizing with %s", typeof params === "string" ? "bot token" : params instanceof types.AuthExportedAuthorization ? "exported authorization" : "AuthorizeUserParams");
356
- const initConnection = async () => {
357
- await this.invoke(new functions.InitConnection({
358
- apiId: this.apiId,
359
- appVersion: this.appVersion,
360
- deviceModel: this.deviceModel,
361
- langCode: this.langCode,
362
- langPack: this.langPack,
363
- query: new functions.InvokeWithLayer({
364
- layer: constants_js_1.LAYER,
365
- query: new functions.HelpGetConfig(),
366
- }),
367
- systemLangCode: this.systemLangCode,
368
- systemVersion: this.systemVersion,
369
- }));
370
- d("connection inited");
371
- };
372
- await initConnection();
385
+ await this.initConnection();
373
386
  try {
374
387
  await this.fetchState("authorize");
375
388
  d("already authorized");
@@ -392,7 +405,7 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
392
405
  const match = err.errorMessage.match(/MIGRATE_(\d)$/);
393
406
  if (match) {
394
407
  await this[exports.handleMigrationError](err);
395
- await initConnection();
408
+ await this.initConnection();
396
409
  continue;
397
410
  }
398
411
  else {
@@ -432,7 +445,7 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
432
445
  const match = err.errorMessage.match(/MIGRATE_(\d)$/);
433
446
  if (match) {
434
447
  await this[exports.handleMigrationError](err);
435
- await initConnection();
448
+ await this.initConnection();
436
449
  sentCode = await sendCode();
437
450
  }
438
451
  else {
@@ -511,6 +524,7 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
511
524
  */
512
525
  async start(params) {
513
526
  await this.connect();
527
+ await this.initConnection();
514
528
  try {
515
529
  await this.fetchState("authorize");
516
530
  d("already authorized");
@@ -592,16 +606,14 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
592
606
  this.promises.delete(message.body.msgId);
593
607
  }
594
608
  }
595
- else if (message.body instanceof types.TypeBadMsgNotification || message.body instanceof types.BadServerSalt) {
596
- if (message.body instanceof types.BadServerSalt) {
597
- d("server salt reassigned");
598
- this.state.salt = message.body.newServerSalt;
609
+ else if (message.body instanceof types.BadServerSalt) {
610
+ d("server salt reassigned");
611
+ this.state.salt = message.body.newServerSalt;
612
+ const promise = this.promises.get(message.body.badMsgId);
613
+ if (promise) {
614
+ promise.resolve(message.body);
615
+ this.promises.delete(message.body.badMsgId);
599
616
  }
600
- // const promise = this.promises.get(message.body.badMsgId);
601
- // if (promise) {
602
- // promise.resolve(message.body);
603
- // this.promises.delete(message.body.badMsgId);
604
- // }
605
617
  }
606
618
  this.toAcknowledge.add(message.id);
607
619
  }
@@ -1238,6 +1250,55 @@ class Client extends _1_client_abstract_js_1.ClientAbstract {
1238
1250
  }));
1239
1251
  return await this.updatesToMessages(chatId, result).then((v) => v[0]);
1240
1252
  }
1253
+ /**
1254
+ * Edit a message's text.
1255
+ *
1256
+ * @param chatId The chat where the message is.
1257
+ * @param messageId The ID of the message.
1258
+ * @param text The new text of the message.
1259
+ */
1260
+ async editMessageText(chatId, messageId, text, params) {
1261
+ const entities_ = params?.entities ?? [];
1262
+ const parseMode = params?.parseMode ?? this.parseMode;
1263
+ switch (parseMode) {
1264
+ case ParseMode.None:
1265
+ break;
1266
+ case ParseMode.HTML: {
1267
+ const [newText, entitiesToPush] = (0, _0_html_js_1.parseHtml)(text);
1268
+ text = newText;
1269
+ for (const entity of entitiesToPush) {
1270
+ entities_.push(entity);
1271
+ }
1272
+ }
1273
+ }
1274
+ let replyMarkup = undefined;
1275
+ if (params?.replyMarkup) {
1276
+ if ("inlineKeyboard" in params.replyMarkup) {
1277
+ replyMarkup = await (0, _2_inline_keyboard_markup_js_1.inlineKeyboardMarkupToTlObject)(params.replyMarkup, async (v) => {
1278
+ const inputPeer = await this.getInputPeer(v).then((v) => v[_1_tl_object_js_1.as](types.InputPeerUser));
1279
+ return new types.InputUser({ userId: inputPeer.userId, accessHash: inputPeer.accessHash });
1280
+ });
1281
+ }
1282
+ else if ("keyboard" in params.replyMarkup) {
1283
+ replyMarkup = (0, _2_reply_keyboard_markup_js_1.replyKeyboardMarkupToTlObject)(params.replyMarkup);
1284
+ }
1285
+ else if ("removeKeyboard" in params.replyMarkup) {
1286
+ replyMarkup = (0, _0_reply_keyboard_remove_js_1.replyKeyboardRemoveToTlObject)(params.replyMarkup);
1287
+ }
1288
+ else if ("forceReply" in params.replyMarkup) {
1289
+ replyMarkup = (0, _0_force_reply_js_1.forceReplyToTlObject)(params.replyMarkup);
1290
+ }
1291
+ else {
1292
+ throw new Error("The replyMarkup parameter has an unexpected type");
1293
+ }
1294
+ }
1295
+ const id = messageId;
1296
+ const peer = await this.getInputPeer(chatId);
1297
+ const entities = entities_?.length > 0 ? entities_.map((v) => (0, _0_message_entity_js_1.messageEntityToTlObject)(v)) : undefined;
1298
+ const message = text;
1299
+ const noWebpage = params?.disableWebPagePreview ? true : undefined;
1300
+ await this.invoke(new functions.MessagesEditMessage({ id, peer, entities, message, noWebpage, replyMarkup }));
1301
+ }
1241
1302
  /**
1242
1303
  * Retrieve multiple messages.
1243
1304
  *
@@ -5,7 +5,7 @@ export declare const PUBLIC_KEYS: PublicKeys;
5
5
  export declare const VECTOR_CONSTRUCTOR = 481674261;
6
6
  export declare const INITIAL_DC: DC;
7
7
  export declare const LAYER = 161;
8
- export declare const APP_VERSION = "MTKruto 0.0.983";
8
+ export declare const APP_VERSION = "MTKruto 0.0.984";
9
9
  export declare const DEVICE_MODEL: string;
10
10
  export declare const LANG_CODE: string;
11
11
  export declare const LANG_PACK = "";
@@ -80,7 +80,7 @@ exports.PUBLIC_KEYS = Object.freeze([
80
80
  exports.VECTOR_CONSTRUCTOR = 0x1CB5C415;
81
81
  exports.INITIAL_DC = "2-test";
82
82
  exports.LAYER = 161;
83
- exports.APP_VERSION = "MTKruto 0.0.983";
83
+ exports.APP_VERSION = "MTKruto 0.0.984";
84
84
  // @ts-ignore: lib
85
85
  exports.DEVICE_MODEL = typeof dntShim.Deno === "undefined" ? typeof navigator === "undefined" ? typeof process === "undefined" ? "Unknown" : process.platform + "-" + process.arch : navigator.userAgent.split(" ")[0] : dntShim.Deno.build.os + "-" + dntShim.Deno.build.arch;
86
86
  exports.LANG_CODE = typeof navigator === "undefined" ? "en" : navigator.language.split("-")[0];
package/script/deps.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- export * from "./deps/deno.land/std@0.198.0/assert/mod.js";
1
+ export * from "./deps/deno.land/std@0.199.0/assert/mod.js";
2
2
  export { ctr256Decrypt, ctr256Encrypt, factorize, ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/deno.land/x/tgcrypto@0.1.3/mod.js";
3
3
  export { gunzip, gzip } from "./deps/raw.githubusercontent.com/MTKruto/compress/master/gzip/gzip.js";
4
4
  export { Mutex, type MutexInterface } from "async-mutex";
5
5
  export { Parser } from "./deps/deno.land/x/html_parser@v0.1.3/src/mod.js";
6
6
  import { debug as debug_ } from "./deps/raw.githubusercontent.com/MTKruto/debug/master/mod.js";
7
7
  export declare const debug: typeof debug_;
8
- export { decode as base64Decode, encode as base64Encode } from "./deps/deno.land/std@0.198.0/encoding/base64.js";
8
+ export { decode as base64Decode, encode as base64Encode } from "./deps/deno.land/std@0.199.0/encoding/base64.js";
package/script/deps.js CHANGED
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.base64Encode = exports.base64Decode = exports.debug = exports.Parser = exports.Mutex = exports.gzip = exports.gunzip = exports.initTgCrypto = exports.ige256Encrypt = exports.ige256Decrypt = exports.factorize = exports.ctr256Encrypt = exports.ctr256Decrypt = void 0;
18
- __exportStar(require("./deps/deno.land/std@0.198.0/assert/mod.js"), exports);
18
+ __exportStar(require("./deps/deno.land/std@0.199.0/assert/mod.js"), exports);
19
19
  var mod_js_1 = require("./deps/deno.land/x/tgcrypto@0.1.3/mod.js");
20
20
  Object.defineProperty(exports, "ctr256Decrypt", { enumerable: true, get: function () { return mod_js_1.ctr256Decrypt; } });
21
21
  Object.defineProperty(exports, "ctr256Encrypt", { enumerable: true, get: function () { return mod_js_1.ctr256Encrypt; } });
@@ -33,6 +33,6 @@ Object.defineProperty(exports, "Parser", { enumerable: true, get: function () {
33
33
  const mod_js_3 = require("./deps/raw.githubusercontent.com/MTKruto/debug/master/mod.js");
34
34
  const debug = (v) => (0, mod_js_3.debug)(`mtkruto/${v}`);
35
35
  exports.debug = debug;
36
- var base64_js_1 = require("./deps/deno.land/std@0.198.0/encoding/base64.js");
36
+ var base64_js_1 = require("./deps/deno.land/std@0.199.0/encoding/base64.js");
37
37
  Object.defineProperty(exports, "base64Decode", { enumerable: true, get: function () { return base64_js_1.decode; } });
38
38
  Object.defineProperty(exports, "base64Encode", { enumerable: true, get: function () { return base64_js_1.encode; } });
@@ -20,7 +20,3 @@ export type TransportProviderCreator<E = Record<never, never>> = (params: Transp
20
20
  export declare const webSocketTransportProvider: TransportProviderCreator<{
21
21
  wss?: boolean;
22
22
  }>;
23
- export declare const httpTransportProvider: TransportProviderCreator<{
24
- secure?: boolean;
25
- v6?: boolean;
26
- }>;