@mtcute/core 0.16.0 → 0.16.3

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 (110) hide show
  1. package/README.md +2 -3
  2. package/cjs/highlevel/client.d.ts +30 -2
  3. package/cjs/highlevel/client.js.map +1 -1
  4. package/cjs/highlevel/methods/auth/run.d.ts +1 -0
  5. package/cjs/highlevel/methods/auth/run.js +1 -0
  6. package/cjs/highlevel/methods/auth/run.js.map +1 -1
  7. package/cjs/highlevel/methods/chats/delete-user-history.d.ts +5 -0
  8. package/cjs/highlevel/methods/chats/delete-user-history.js +4 -2
  9. package/cjs/highlevel/methods/chats/delete-user-history.js.map +1 -1
  10. package/cjs/highlevel/methods/files/normalize-input-media.js +1 -1
  11. package/cjs/highlevel/methods/files/normalize-input-media.js.map +1 -1
  12. package/cjs/highlevel/methods/forums/delete-forum-topic-history.d.ts +7 -1
  13. package/cjs/highlevel/methods/forums/delete-forum-topic-history.js +5 -2
  14. package/cjs/highlevel/methods/forums/delete-forum-topic-history.js.map +1 -1
  15. package/cjs/highlevel/methods/messages/delete-messages.d.ts +5 -0
  16. package/cjs/highlevel/methods/messages/delete-messages.js +4 -2
  17. package/cjs/highlevel/methods/messages/delete-messages.js.map +1 -1
  18. package/cjs/highlevel/methods/messages/read-history.d.ts +5 -0
  19. package/cjs/highlevel/methods/messages/read-history.js +11 -7
  20. package/cjs/highlevel/methods/messages/read-history.js.map +1 -1
  21. package/cjs/highlevel/methods/messages/read-reactions.d.ts +7 -1
  22. package/cjs/highlevel/methods/messages/read-reactions.js +5 -2
  23. package/cjs/highlevel/methods/messages/read-reactions.js.map +1 -1
  24. package/cjs/highlevel/methods/messages/send-common.d.ts +2 -2
  25. package/cjs/highlevel/methods/messages/send-common.js.map +1 -1
  26. package/cjs/highlevel/methods/messages/send-text.js +3 -3
  27. package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
  28. package/cjs/highlevel/methods/messages/unpin-all-messages.d.ts +5 -0
  29. package/cjs/highlevel/methods/messages/unpin-all-messages.js +8 -6
  30. package/cjs/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
  31. package/cjs/highlevel/types/media/video.d.ts +1 -0
  32. package/cjs/highlevel/types/media/video.js +3 -0
  33. package/cjs/highlevel/types/media/video.js.map +1 -1
  34. package/cjs/highlevel/types/messages/message-action.d.ts +15 -1
  35. package/cjs/highlevel/types/messages/message-action.js +9 -0
  36. package/cjs/highlevel/types/messages/message-action.js.map +1 -1
  37. package/cjs/highlevel/types/peers/user.d.ts +4 -0
  38. package/cjs/highlevel/types/peers/user.js +8 -0
  39. package/cjs/highlevel/types/peers/user.js.map +1 -1
  40. package/cjs/highlevel/types/stories/interactive/index.d.ts +3 -2
  41. package/cjs/highlevel/types/stories/interactive/index.js +5 -1
  42. package/cjs/highlevel/types/stories/interactive/index.js.map +1 -1
  43. package/cjs/highlevel/types/stories/interactive/weather.d.ts +15 -0
  44. package/cjs/highlevel/types/stories/interactive/weather.js +30 -0
  45. package/cjs/highlevel/types/stories/interactive/weather.js.map +1 -0
  46. package/cjs/highlevel/updates/types.d.ts +2 -0
  47. package/cjs/highlevel/updates/types.js.map +1 -1
  48. package/cjs/highlevel/worker/invoker.js +1 -1
  49. package/cjs/highlevel/worker/invoker.js.map +1 -1
  50. package/cjs/highlevel/worker/protocol.d.ts +1 -1
  51. package/cjs/highlevel/worker/protocol.js +9 -6
  52. package/cjs/highlevel/worker/protocol.js.map +1 -1
  53. package/cjs/highlevel/worker/worker.js +6 -3
  54. package/cjs/highlevel/worker/worker.js.map +1 -1
  55. package/cjs/network/network-manager.js +1 -1
  56. package/esm/highlevel/client.d.ts +30 -2
  57. package/esm/highlevel/client.js.map +1 -1
  58. package/esm/highlevel/methods/auth/run.d.ts +1 -0
  59. package/esm/highlevel/methods/auth/run.js +1 -0
  60. package/esm/highlevel/methods/auth/run.js.map +1 -1
  61. package/esm/highlevel/methods/chats/delete-user-history.d.ts +5 -0
  62. package/esm/highlevel/methods/chats/delete-user-history.js +4 -2
  63. package/esm/highlevel/methods/chats/delete-user-history.js.map +1 -1
  64. package/esm/highlevel/methods/files/normalize-input-media.js +1 -1
  65. package/esm/highlevel/methods/files/normalize-input-media.js.map +1 -1
  66. package/esm/highlevel/methods/forums/delete-forum-topic-history.d.ts +7 -1
  67. package/esm/highlevel/methods/forums/delete-forum-topic-history.js +5 -2
  68. package/esm/highlevel/methods/forums/delete-forum-topic-history.js.map +1 -1
  69. package/esm/highlevel/methods/messages/delete-messages.d.ts +5 -0
  70. package/esm/highlevel/methods/messages/delete-messages.js +4 -2
  71. package/esm/highlevel/methods/messages/delete-messages.js.map +1 -1
  72. package/esm/highlevel/methods/messages/read-history.d.ts +5 -0
  73. package/esm/highlevel/methods/messages/read-history.js +11 -7
  74. package/esm/highlevel/methods/messages/read-history.js.map +1 -1
  75. package/esm/highlevel/methods/messages/read-reactions.d.ts +7 -1
  76. package/esm/highlevel/methods/messages/read-reactions.js +5 -2
  77. package/esm/highlevel/methods/messages/read-reactions.js.map +1 -1
  78. package/esm/highlevel/methods/messages/send-common.d.ts +2 -2
  79. package/esm/highlevel/methods/messages/send-common.js.map +1 -1
  80. package/esm/highlevel/methods/messages/send-text.js +3 -3
  81. package/esm/highlevel/methods/messages/send-text.js.map +1 -1
  82. package/esm/highlevel/methods/messages/unpin-all-messages.d.ts +5 -0
  83. package/esm/highlevel/methods/messages/unpin-all-messages.js +8 -6
  84. package/esm/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
  85. package/esm/highlevel/types/media/video.d.ts +1 -0
  86. package/esm/highlevel/types/media/video.js +3 -0
  87. package/esm/highlevel/types/media/video.js.map +1 -1
  88. package/esm/highlevel/types/messages/message-action.d.ts +15 -1
  89. package/esm/highlevel/types/messages/message-action.js +9 -0
  90. package/esm/highlevel/types/messages/message-action.js.map +1 -1
  91. package/esm/highlevel/types/peers/user.d.ts +4 -0
  92. package/esm/highlevel/types/peers/user.js +8 -0
  93. package/esm/highlevel/types/peers/user.js.map +1 -1
  94. package/esm/highlevel/types/stories/interactive/index.d.ts +3 -2
  95. package/esm/highlevel/types/stories/interactive/index.js +4 -1
  96. package/esm/highlevel/types/stories/interactive/index.js.map +1 -1
  97. package/esm/highlevel/types/stories/interactive/weather.d.ts +15 -0
  98. package/esm/highlevel/types/stories/interactive/weather.js +27 -0
  99. package/esm/highlevel/types/stories/interactive/weather.js.map +1 -0
  100. package/esm/highlevel/updates/types.d.ts +2 -0
  101. package/esm/highlevel/updates/types.js.map +1 -1
  102. package/esm/highlevel/worker/invoker.js +2 -2
  103. package/esm/highlevel/worker/invoker.js.map +1 -1
  104. package/esm/highlevel/worker/protocol.d.ts +1 -1
  105. package/esm/highlevel/worker/protocol.js +9 -6
  106. package/esm/highlevel/worker/protocol.js.map +1 -1
  107. package/esm/highlevel/worker/worker.js +7 -4
  108. package/esm/highlevel/worker/worker.js.map +1 -1
  109. package/esm/network/network-manager.js +1 -1
  110. package/package.json +2 -2
@@ -11,5 +11,6 @@ import { start } from './start.js';
11
11
  *
12
12
  * @param params Parameters to be passed to {@link start}
13
13
  * @param then Function to be called after {@link start} returns
14
+ * @deprecated This method provides no real value over {@link start}, please use it instead
14
15
  */
15
16
  export declare function run(client: ITelegramClient, params: Parameters<typeof start>[1], then?: (user: User) => void | Promise<void>): void;
@@ -12,6 +12,7 @@ const start_js_1 = require("./start.js");
12
12
  *
13
13
  * @param params Parameters to be passed to {@link start}
14
14
  * @param then Function to be called after {@link start} returns
15
+ * @deprecated This method provides no real value over {@link start}, please use it instead
15
16
  */
16
17
  function run(client, params, then) {
17
18
  (0, start_js_1.start)(client, params)
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/auth/run.ts"],"names":[],"mappings":";;;AAEA,yCAAkC;AAElC;;;;;;;;;;GAUG;AACH,SAAgB,GAAG,CACf,MAAuB,EACvB,MAAmC,EACnC,IAA2C;IAE3C,IAAA,gBAAK,EAAC,MAAM,EAAE,MAAM,CAAC;SAChB,IAAI,CAAC,IAAI,CAAC;SACV,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9C,CAAC;AARD,kBAQC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { User } from '../../types/index.js'\nimport { start } from './start.js'\n\n/**\n * Simple wrapper that calls {@link start} and then\n * provided callback function (if any) without the\n * need to introduce a `main()` function manually.\n *\n * Errors that were encountered while calling {@link start}\n * and `then` will be emitted as usual, and can be caught with {@link onError}\n *\n * @param params Parameters to be passed to {@link start}\n * @param then Function to be called after {@link start} returns\n */\nexport function run(\n client: ITelegramClient,\n params: Parameters<typeof start>[1],\n then?: (user: User) => void | Promise<void>,\n): void {\n start(client, params)\n .then(then)\n .catch((err) => client.emitError(err))\n}\n"]}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/auth/run.ts"],"names":[],"mappings":";;;AAEA,yCAAkC;AAElC;;;;;;;;;;;GAWG;AACH,SAAgB,GAAG,CACf,MAAuB,EACvB,MAAmC,EACnC,IAA2C;IAE3C,IAAA,gBAAK,EAAC,MAAM,EAAE,MAAM,CAAC;SAChB,IAAI,CAAC,IAAI,CAAC;SACV,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9C,CAAC;AARD,kBAQC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { User } from '../../types/index.js'\nimport { start } from './start.js'\n\n/**\n * Simple wrapper that calls {@link start} and then\n * provided callback function (if any) without the\n * need to introduce a `main()` function manually.\n *\n * Errors that were encountered while calling {@link start}\n * and `then` will be emitted as usual, and can be caught with {@link onError}\n *\n * @param params Parameters to be passed to {@link start}\n * @param then Function to be called after {@link start} returns\n * @deprecated This method provides no real value over {@link start}, please use it instead\n */\nexport function run(\n client: ITelegramClient,\n params: Parameters<typeof start>[1],\n then?: (user: User) => void | Promise<void>,\n): void {\n start(client, params)\n .then(then)\n .catch((err) => client.emitError(err))\n}\n"]}
@@ -8,4 +8,9 @@ export declare function deleteUserHistory(client: ITelegramClient, params: {
8
8
  chatId: InputPeerLike;
9
9
  /** User/channel ID whose messages to delete */
10
10
  participantId: InputPeerLike;
11
+ /**
12
+ * Whether to dispatch the updates that will be generated by this call.
13
+ * Doesn't follow `disableNoDispatch`
14
+ */
15
+ shouldDispatch?: true;
11
16
  }): Promise<void>;
@@ -7,7 +7,7 @@ const resolve_peer_js_1 = require("../users/resolve-peer.js");
7
7
  * Delete all messages of a user (or channel) in a supergroup
8
8
  */
9
9
  async function deleteUserHistory(client, params) {
10
- const { chatId, participantId } = params;
10
+ const { chatId, participantId, shouldDispatch } = params;
11
11
  const channel = await (0, resolve_peer_js_1.resolveChannel)(client, chatId);
12
12
  const peer = await (0, resolve_peer_js_1.resolvePeer)(client, participantId);
13
13
  const res = await client.call({
@@ -15,7 +15,9 @@ async function deleteUserHistory(client, params) {
15
15
  channel,
16
16
  participant: peer,
17
17
  });
18
- client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount, channel.channelId));
18
+ if (!shouldDispatch) {
19
+ client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount, channel.channelId));
20
+ }
19
21
  }
20
22
  exports.deleteUserHistory = deleteUserHistory;
21
23
  //# sourceMappingURL=delete-user-history.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete-user-history.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/chats/delete-user-history.ts"],"names":[],"mappings":";;;AAIA,qDAA0D;AAC1D,8DAAsE;AAEtE;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACnC,MAAuB,EACvB,MAKC;IAED,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAExC,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAc,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEpD,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAErD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,mCAAmC;QACtC,OAAO;QACP,WAAW,EAAE,IAAI;KACpB,CAAC,CAAA;IAEF,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAG,OAA8B,CAAC,SAAS,CAAC,CAAC,CAAA;AAClH,CAAC;AAtBD,8CAsBC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { resolveChannel, resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Delete all messages of a user (or channel) in a supergroup\n */\nexport async function deleteUserHistory(\n client: ITelegramClient,\n params: {\n /** Chat ID */\n chatId: InputPeerLike\n /** User/channel ID whose messages to delete */\n participantId: InputPeerLike\n },\n): Promise<void> {\n const { chatId, participantId } = params\n\n const channel = await resolveChannel(client, chatId)\n\n const peer = await resolvePeer(client, participantId)\n\n const res = await client.call({\n _: 'channels.deleteParticipantHistory',\n channel,\n participant: peer,\n })\n\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount, (channel as tl.RawInputChannel).channelId))\n}\n"]}
1
+ {"version":3,"file":"delete-user-history.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/chats/delete-user-history.ts"],"names":[],"mappings":";;;AAIA,qDAA0D;AAC1D,8DAAsE;AAEtE;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACnC,MAAuB,EACvB,MAWC;IAED,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,MAAM,CAAA;IAExD,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAc,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEpD,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAErD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,mCAAmC;QACtC,OAAO;QACP,WAAW,EAAE,IAAI;KACpB,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAG,OAA8B,CAAC,SAAS,CAAC,CAAC,CAAA;IAClH,CAAC;AACL,CAAC;AA9BD,8CA8BC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { resolveChannel, resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Delete all messages of a user (or channel) in a supergroup\n */\nexport async function deleteUserHistory(\n client: ITelegramClient,\n params: {\n /** Chat ID */\n chatId: InputPeerLike\n /** User/channel ID whose messages to delete */\n participantId: InputPeerLike\n\n /**\n * Whether to dispatch the updates that will be generated by this call.\n * Doesn't follow `disableNoDispatch`\n */\n shouldDispatch?: true\n },\n): Promise<void> {\n const { chatId, participantId, shouldDispatch } = params\n\n const channel = await resolveChannel(client, chatId)\n\n const peer = await resolvePeer(client, participantId)\n\n const res = await client.call({\n _: 'channels.deleteParticipantHistory',\n channel,\n participant: peer,\n })\n\n if (!shouldDispatch) {\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount, (channel as tl.RawInputChannel).channelId))\n }\n}\n"]}
@@ -330,7 +330,7 @@ async function _normalizeInputMedia(client, media, params = {}, uploadMedia = fa
330
330
  if (media.type !== 'voice') {
331
331
  attributes.push({
332
332
  _: 'documentAttributeFilename',
333
- fileName: media.fileName || inputFile.name,
333
+ fileName: media.fileName || (inputFile._ === 'inputFileStoryDocument' ? 'story' : inputFile.name),
334
334
  });
335
335
  }
336
336
  if (media.type === 'video') {
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-input-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-input-media.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { parseFileId, tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { isUploadedFile } from '../../types/files/uploaded-file.js'\nimport { UploadFileLike } from '../../types/files/utils.js'\nimport { InputMediaLike } from '../../types/media/input-media/types.js'\nimport { inputTextToTl } from '../../types/misc/entities.js'\nimport { fileIdToInputDocument, fileIdToInputPhoto } from '../../utils/convert-file-id.js'\nimport { normalizeDate } from '../../utils/misc-utils.js'\nimport { encodeWaveform } from '../../utils/voice-utils.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _normalizeInputFile } from './normalize-input-file.js'\nimport { uploadFile } from './upload-file.js'\n\n/**\n * Normalize an {@link InputMediaLike} to `InputMedia`,\n * uploading the file if needed.\n */\nexport async function _normalizeInputMedia(\n client: ITelegramClient,\n media: InputMediaLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n uploadPeer?: tl.TypeInputPeer\n businessConnectionId?: string\n } = {},\n uploadMedia = false,\n): Promise<tl.TypeInputMedia> {\n // my condolences to those poor souls who are going to maintain this (myself included)\n\n // thanks to @pacificescape for pointing out messages.uploadMedia method\n\n if (tl.isAnyInputMedia(media)) {\n // make sure the peers in the media are correctly resolved (i.e. mtcute.* ones are replaced with proper ones)\n switch (media._) {\n case 'inputMediaStory':\n return {\n ...media,\n peer: await resolvePeer(client, media.peer),\n }\n }\n\n return media\n }\n\n if (media.type === 'venue') {\n return {\n _: 'inputMediaVenue',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n title: media.title,\n address: media.address,\n provider: media.source?.provider ?? '',\n venueId: media.source?.id ?? '',\n venueType: media.source?.type ?? '',\n }\n }\n\n if (media.type === 'geo') {\n return {\n _: 'inputMediaGeoPoint',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n }\n }\n\n if (media.type === 'geo_live') {\n return {\n _: 'inputMediaGeoLive',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n stopped: media.stopped,\n heading: media.heading,\n period: media.period,\n proximityNotificationRadius: media.proximityNotificationRadius,\n }\n }\n\n if (media.type === 'dice') {\n return {\n _: 'inputMediaDice',\n emoticon: media.emoji,\n }\n }\n\n if (media.type === 'contact') {\n return {\n _: 'inputMediaContact',\n phoneNumber: media.phone,\n firstName: media.firstName,\n lastName: media.lastName ?? '',\n vcard: media.vcard ?? '',\n }\n }\n\n if (media.type === 'game') {\n return {\n _: 'inputMediaGame',\n id:\n typeof media.game === 'string' ?\n {\n _: 'inputGameShortName',\n botId: { _: 'inputUserSelf' },\n shortName: media.game,\n } :\n media.game,\n }\n }\n\n if (media.type === 'invoice') {\n return {\n _: 'inputMediaInvoice',\n title: media.title,\n description: media.description,\n photo:\n typeof media.photo === 'string' ?\n {\n _: 'inputWebDocument',\n url: media.photo,\n mimeType: 'image/jpeg',\n size: 0,\n attributes: [],\n } :\n media.photo,\n invoice: media.invoice,\n payload: media.payload,\n provider: media.token,\n providerData: {\n _: 'dataJSON',\n data: JSON.stringify(media.providerData),\n },\n startParam: media.startParam,\n extendedMedia: media.extendedMedia ?\n await _normalizeInputMedia(client, media.extendedMedia, params) :\n undefined,\n }\n }\n\n if (media.type === 'poll' || media.type === 'quiz') {\n const answers: tl.TypePollAnswer[] = media.answers.map((ans, idx) => {\n if (typeof ans === 'object' && tl.isAnyPollAnswer(ans)) return ans\n\n return {\n _: 'pollAnswer',\n text: inputTextToTl(ans),\n // emulate the behaviour of most implementations\n option: new Uint8Array([48 /* '0' */ + idx]),\n }\n })\n\n let correct: Uint8Array[] | undefined = undefined\n let solution: string | undefined = undefined\n let solutionEntities: tl.TypeMessageEntity[] | undefined = undefined\n\n if (media.type === 'quiz') {\n let input = media.correct\n if (!Array.isArray(input)) input = [input]\n correct = input.map((it) => {\n if (typeof it === 'number') {\n return answers[it].option\n }\n\n return it\n })\n\n if (media.solution) {\n [solution, solutionEntities] = await _normalizeInputText(client, media.solution)\n }\n }\n\n return {\n _: 'inputMediaPoll',\n poll: {\n _: 'poll',\n closed: media.closed,\n id: Long.ZERO,\n publicVoters: media.public,\n multipleChoice: media.multiple,\n quiz: media.type === 'quiz',\n question: inputTextToTl(media.question),\n answers,\n closePeriod: media.closePeriod,\n closeDate: normalizeDate(media.closeDate),\n },\n correctAnswers: correct,\n solution,\n solutionEntities,\n }\n }\n\n if (media.type === 'story') {\n return {\n _: 'inputMediaStory',\n peer: await resolvePeer(client, media.peer),\n id: media.id,\n }\n }\n\n if (media.type === 'webpage') {\n return {\n _: 'inputMediaWebPage',\n forceLargeMedia: media.size === 'large',\n forceSmallMedia: media.size === 'small',\n optional: !media.required,\n url: media.url,\n }\n }\n\n if (media.type === 'paid') {\n let medias: tl.TypeInputMedia[]\n\n if (Array.isArray(media.media)) {\n medias = await Promise.all(media.media.map((m) => _normalizeInputMedia(client, m, params)))\n } else {\n medias = [await _normalizeInputMedia(client, media.media, params)]\n }\n\n return {\n _: 'inputMediaPaidMedia',\n starsAmount: Long.isLong(media.starsAmount) ? media.starsAmount : Long.fromNumber(media.starsAmount),\n extendedMedia: medias,\n }\n }\n\n let inputFile: tl.TypeInputFile | undefined = undefined\n let thumb: tl.TypeInputFile | undefined = undefined\n let mime = 'application/octet-stream'\n\n const upload = async (file: UploadFileLike): Promise<void> => {\n let sendMime\n\n if (media.type === 'sticker') {\n sendMime = media.isAnimated ? 'application/x-tgsticker' : 'image/webp'\n } else {\n sendMime = media.fileMime\n }\n\n const uploaded = await uploadFile(client, {\n file,\n progressCallback: params.progressCallback,\n fileName: media.fileName,\n fileMime: sendMime,\n fileSize: media.fileSize,\n requireFileSize: media.type === 'photo',\n })\n inputFile = uploaded.inputFile\n mime = uploaded.mime\n }\n\n const uploadPeer = params.uploadPeer ?? { _: 'inputPeerSelf' }\n\n const uploadMediaIfNeeded = async (inputMedia: tl.TypeInputMedia, photo: boolean): Promise<tl.TypeInputMedia> => {\n if (!uploadMedia) return inputMedia\n\n const res = await client.call({\n _: 'messages.uploadMedia',\n peer: uploadPeer,\n media: inputMedia,\n businessConnectionId: params.businessConnectionId,\n })\n\n if (photo) {\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaPhoto')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.photo!, 'photo')\n\n return {\n _: 'inputMediaPhoto',\n id: {\n _: 'inputPhoto',\n id: res.photo.id,\n accessHash: res.photo.accessHash,\n fileReference: res.photo.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaDocument')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.document!, 'document')\n\n return {\n _: 'inputMediaDocument',\n id: {\n _: 'inputDocument',\n id: res.document.id,\n accessHash: res.document.accessHash,\n fileReference: res.document.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n\n const input = media.file\n\n if (tdFileId.isFileIdLike(input)) {\n if (typeof input === 'string' && input.match(/^https?:\\/\\//)) {\n return uploadMediaIfNeeded(\n {\n _: media.type === 'photo' ? 'inputMediaPhotoExternal' : 'inputMediaDocumentExternal',\n url: input,\n },\n media.type === 'photo',\n )\n } else if (typeof input === 'string' && input.match(/^file:/)) {\n await upload(input.substring(5))\n } else {\n const parsed = typeof input === 'string' ? parseFileId(getPlatform(), input) : input\n\n if (parsed.location._ === 'photo') {\n return {\n _: 'inputMediaPhoto',\n id: fileIdToInputPhoto(parsed),\n }\n } else if (parsed.location._ === 'web') {\n return uploadMediaIfNeeded(\n {\n _:\n parsed.type === tdFileId.FileType.Photo ?\n 'inputMediaPhotoExternal' :\n 'inputMediaDocumentExternal',\n url: parsed.location.url,\n },\n parsed.type === tdFileId.FileType.Photo,\n )\n }\n\n return {\n _: 'inputMediaDocument',\n id: fileIdToInputDocument(parsed),\n }\n }\n } else if (typeof input === 'object' && tl.isAnyInputMedia(input)) {\n return input\n } else if (isUploadedFile(input)) {\n inputFile = input.inputFile\n mime = input.mime\n } else if (typeof input === 'object' && tl.isAnyInputFile(input)) {\n inputFile = input\n } else {\n await upload(input)\n }\n\n if (!inputFile) throw new Error('should not happen')\n\n if (media.type === 'photo') {\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedPhoto',\n file: inputFile,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.spoiler,\n },\n true,\n )\n }\n\n if ('thumb' in media && media.thumb) {\n thumb = await _normalizeInputFile(client, media.thumb, {})\n }\n\n const attributes: tl.TypeDocumentAttribute[] = []\n\n if (media.type !== 'voice') {\n attributes.push({\n _: 'documentAttributeFilename',\n fileName: media.fileName || inputFile.name,\n })\n }\n\n if (media.type === 'video') {\n attributes.push({\n _: 'documentAttributeVideo',\n duration: media.duration || 0,\n w: media.width || 0,\n h: media.height || 0,\n supportsStreaming: media.supportsStreaming,\n roundMessage: media.isRound,\n })\n\n if (media.isAnimated) {\n attributes.push({ _: 'documentAttributeAnimated' })\n }\n }\n\n if (media.type === 'audio' || media.type === 'voice') {\n attributes.push({\n _: 'documentAttributeAudio',\n voice: media.type === 'voice',\n duration: media.duration || 0,\n title: media.type === 'audio' ? media.title : undefined,\n performer: media.type === 'audio' ? media.performer : undefined,\n waveform: media.type === 'voice' && media.waveform ? encodeWaveform(media.waveform) : undefined,\n })\n }\n\n if (media.type === 'sticker') {\n attributes.push({\n _: 'documentAttributeSticker',\n stickerset: {\n _: 'inputStickerSetEmpty',\n },\n alt: media.alt ?? '',\n })\n }\n\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedDocument',\n nosoundVideo: media.type === 'video' && media.isAnimated,\n forceFile: media.type === 'document',\n file: inputFile,\n thumb,\n mimeType: mime,\n attributes,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n },\n false,\n )\n}\n"]}
1
+ {"version":3,"file":"normalize-input-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-input-media.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { parseFileId, tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { isUploadedFile } from '../../types/files/uploaded-file.js'\nimport { UploadFileLike } from '../../types/files/utils.js'\nimport { InputMediaLike } from '../../types/media/input-media/types.js'\nimport { inputTextToTl } from '../../types/misc/entities.js'\nimport { fileIdToInputDocument, fileIdToInputPhoto } from '../../utils/convert-file-id.js'\nimport { normalizeDate } from '../../utils/misc-utils.js'\nimport { encodeWaveform } from '../../utils/voice-utils.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _normalizeInputFile } from './normalize-input-file.js'\nimport { uploadFile } from './upload-file.js'\n\n/**\n * Normalize an {@link InputMediaLike} to `InputMedia`,\n * uploading the file if needed.\n */\nexport async function _normalizeInputMedia(\n client: ITelegramClient,\n media: InputMediaLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n uploadPeer?: tl.TypeInputPeer\n businessConnectionId?: string\n } = {},\n uploadMedia = false,\n): Promise<tl.TypeInputMedia> {\n // my condolences to those poor souls who are going to maintain this (myself included)\n\n // thanks to @pacificescape for pointing out messages.uploadMedia method\n\n if (tl.isAnyInputMedia(media)) {\n // make sure the peers in the media are correctly resolved (i.e. mtcute.* ones are replaced with proper ones)\n switch (media._) {\n case 'inputMediaStory':\n return {\n ...media,\n peer: await resolvePeer(client, media.peer),\n }\n }\n\n return media\n }\n\n if (media.type === 'venue') {\n return {\n _: 'inputMediaVenue',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n title: media.title,\n address: media.address,\n provider: media.source?.provider ?? '',\n venueId: media.source?.id ?? '',\n venueType: media.source?.type ?? '',\n }\n }\n\n if (media.type === 'geo') {\n return {\n _: 'inputMediaGeoPoint',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n }\n }\n\n if (media.type === 'geo_live') {\n return {\n _: 'inputMediaGeoLive',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n stopped: media.stopped,\n heading: media.heading,\n period: media.period,\n proximityNotificationRadius: media.proximityNotificationRadius,\n }\n }\n\n if (media.type === 'dice') {\n return {\n _: 'inputMediaDice',\n emoticon: media.emoji,\n }\n }\n\n if (media.type === 'contact') {\n return {\n _: 'inputMediaContact',\n phoneNumber: media.phone,\n firstName: media.firstName,\n lastName: media.lastName ?? '',\n vcard: media.vcard ?? '',\n }\n }\n\n if (media.type === 'game') {\n return {\n _: 'inputMediaGame',\n id:\n typeof media.game === 'string' ?\n {\n _: 'inputGameShortName',\n botId: { _: 'inputUserSelf' },\n shortName: media.game,\n } :\n media.game,\n }\n }\n\n if (media.type === 'invoice') {\n return {\n _: 'inputMediaInvoice',\n title: media.title,\n description: media.description,\n photo:\n typeof media.photo === 'string' ?\n {\n _: 'inputWebDocument',\n url: media.photo,\n mimeType: 'image/jpeg',\n size: 0,\n attributes: [],\n } :\n media.photo,\n invoice: media.invoice,\n payload: media.payload,\n provider: media.token,\n providerData: {\n _: 'dataJSON',\n data: JSON.stringify(media.providerData),\n },\n startParam: media.startParam,\n extendedMedia: media.extendedMedia ?\n await _normalizeInputMedia(client, media.extendedMedia, params) :\n undefined,\n }\n }\n\n if (media.type === 'poll' || media.type === 'quiz') {\n const answers: tl.TypePollAnswer[] = media.answers.map((ans, idx) => {\n if (typeof ans === 'object' && tl.isAnyPollAnswer(ans)) return ans\n\n return {\n _: 'pollAnswer',\n text: inputTextToTl(ans),\n // emulate the behaviour of most implementations\n option: new Uint8Array([48 /* '0' */ + idx]),\n }\n })\n\n let correct: Uint8Array[] | undefined = undefined\n let solution: string | undefined = undefined\n let solutionEntities: tl.TypeMessageEntity[] | undefined = undefined\n\n if (media.type === 'quiz') {\n let input = media.correct\n if (!Array.isArray(input)) input = [input]\n correct = input.map((it) => {\n if (typeof it === 'number') {\n return answers[it].option\n }\n\n return it\n })\n\n if (media.solution) {\n [solution, solutionEntities] = await _normalizeInputText(client, media.solution)\n }\n }\n\n return {\n _: 'inputMediaPoll',\n poll: {\n _: 'poll',\n closed: media.closed,\n id: Long.ZERO,\n publicVoters: media.public,\n multipleChoice: media.multiple,\n quiz: media.type === 'quiz',\n question: inputTextToTl(media.question),\n answers,\n closePeriod: media.closePeriod,\n closeDate: normalizeDate(media.closeDate),\n },\n correctAnswers: correct,\n solution,\n solutionEntities,\n }\n }\n\n if (media.type === 'story') {\n return {\n _: 'inputMediaStory',\n peer: await resolvePeer(client, media.peer),\n id: media.id,\n }\n }\n\n if (media.type === 'webpage') {\n return {\n _: 'inputMediaWebPage',\n forceLargeMedia: media.size === 'large',\n forceSmallMedia: media.size === 'small',\n optional: !media.required,\n url: media.url,\n }\n }\n\n if (media.type === 'paid') {\n let medias: tl.TypeInputMedia[]\n\n if (Array.isArray(media.media)) {\n medias = await Promise.all(media.media.map((m) => _normalizeInputMedia(client, m, params)))\n } else {\n medias = [await _normalizeInputMedia(client, media.media, params)]\n }\n\n return {\n _: 'inputMediaPaidMedia',\n starsAmount: Long.isLong(media.starsAmount) ? media.starsAmount : Long.fromNumber(media.starsAmount),\n extendedMedia: medias,\n }\n }\n\n let inputFile: tl.TypeInputFile | undefined = undefined\n let thumb: tl.TypeInputFile | undefined = undefined\n let mime = 'application/octet-stream'\n\n const upload = async (file: UploadFileLike): Promise<void> => {\n let sendMime\n\n if (media.type === 'sticker') {\n sendMime = media.isAnimated ? 'application/x-tgsticker' : 'image/webp'\n } else {\n sendMime = media.fileMime\n }\n\n const uploaded = await uploadFile(client, {\n file,\n progressCallback: params.progressCallback,\n fileName: media.fileName,\n fileMime: sendMime,\n fileSize: media.fileSize,\n requireFileSize: media.type === 'photo',\n })\n inputFile = uploaded.inputFile\n mime = uploaded.mime\n }\n\n const uploadPeer = params.uploadPeer ?? { _: 'inputPeerSelf' }\n\n const uploadMediaIfNeeded = async (inputMedia: tl.TypeInputMedia, photo: boolean): Promise<tl.TypeInputMedia> => {\n if (!uploadMedia) return inputMedia\n\n const res = await client.call({\n _: 'messages.uploadMedia',\n peer: uploadPeer,\n media: inputMedia,\n businessConnectionId: params.businessConnectionId,\n })\n\n if (photo) {\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaPhoto')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.photo!, 'photo')\n\n return {\n _: 'inputMediaPhoto',\n id: {\n _: 'inputPhoto',\n id: res.photo.id,\n accessHash: res.photo.accessHash,\n fileReference: res.photo.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaDocument')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.document!, 'document')\n\n return {\n _: 'inputMediaDocument',\n id: {\n _: 'inputDocument',\n id: res.document.id,\n accessHash: res.document.accessHash,\n fileReference: res.document.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n\n const input = media.file\n\n if (tdFileId.isFileIdLike(input)) {\n if (typeof input === 'string' && input.match(/^https?:\\/\\//)) {\n return uploadMediaIfNeeded(\n {\n _: media.type === 'photo' ? 'inputMediaPhotoExternal' : 'inputMediaDocumentExternal',\n url: input,\n },\n media.type === 'photo',\n )\n } else if (typeof input === 'string' && input.match(/^file:/)) {\n await upload(input.substring(5))\n } else {\n const parsed = typeof input === 'string' ? parseFileId(getPlatform(), input) : input\n\n if (parsed.location._ === 'photo') {\n return {\n _: 'inputMediaPhoto',\n id: fileIdToInputPhoto(parsed),\n }\n } else if (parsed.location._ === 'web') {\n return uploadMediaIfNeeded(\n {\n _:\n parsed.type === tdFileId.FileType.Photo ?\n 'inputMediaPhotoExternal' :\n 'inputMediaDocumentExternal',\n url: parsed.location.url,\n },\n parsed.type === tdFileId.FileType.Photo,\n )\n }\n\n return {\n _: 'inputMediaDocument',\n id: fileIdToInputDocument(parsed),\n }\n }\n } else if (typeof input === 'object' && tl.isAnyInputMedia(input)) {\n return input\n } else if (isUploadedFile(input)) {\n inputFile = input.inputFile\n mime = input.mime\n } else if (typeof input === 'object' && tl.isAnyInputFile(input)) {\n inputFile = input\n } else {\n await upload(input)\n }\n\n if (!inputFile) throw new Error('should not happen')\n\n if (media.type === 'photo') {\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedPhoto',\n file: inputFile,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.spoiler,\n },\n true,\n )\n }\n\n if ('thumb' in media && media.thumb) {\n thumb = await _normalizeInputFile(client, media.thumb, {})\n }\n\n const attributes: tl.TypeDocumentAttribute[] = []\n\n if (media.type !== 'voice') {\n attributes.push({\n _: 'documentAttributeFilename',\n fileName: media.fileName || (inputFile._ === 'inputFileStoryDocument' ? 'story' : inputFile.name),\n })\n }\n\n if (media.type === 'video') {\n attributes.push({\n _: 'documentAttributeVideo',\n duration: media.duration || 0,\n w: media.width || 0,\n h: media.height || 0,\n supportsStreaming: media.supportsStreaming,\n roundMessage: media.isRound,\n })\n\n if (media.isAnimated) {\n attributes.push({ _: 'documentAttributeAnimated' })\n }\n }\n\n if (media.type === 'audio' || media.type === 'voice') {\n attributes.push({\n _: 'documentAttributeAudio',\n voice: media.type === 'voice',\n duration: media.duration || 0,\n title: media.type === 'audio' ? media.title : undefined,\n performer: media.type === 'audio' ? media.performer : undefined,\n waveform: media.type === 'voice' && media.waveform ? encodeWaveform(media.waveform) : undefined,\n })\n }\n\n if (media.type === 'sticker') {\n attributes.push({\n _: 'documentAttributeSticker',\n stickerset: {\n _: 'inputStickerSetEmpty',\n },\n alt: media.alt ?? '',\n })\n }\n\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedDocument',\n nosoundVideo: media.type === 'video' && media.isAnimated,\n forceFile: media.type === 'document',\n file: inputFile,\n thumb,\n mimeType: mime,\n attributes,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n },\n false,\n )\n}\n"]}
@@ -6,4 +6,10 @@ import type { ForumTopic, InputPeerLike } from '../../types/index.js';
6
6
  * @param chat Chat or user ID, username, phone number, `"me"` or `"self"`
7
7
  * @param topicId ID of the topic (i.e. its top message ID)
8
8
  */
9
- export declare function deleteForumTopicHistory(client: ITelegramClient, chat: InputPeerLike, topicId: number | ForumTopic): Promise<void>;
9
+ export declare function deleteForumTopicHistory(client: ITelegramClient, chat: InputPeerLike, topicId: number | ForumTopic, params?: {
10
+ /**
11
+ * Whether to dispatch updates that will be generated by this call.
12
+ * Doesn't follow `disableNoDispatch`
13
+ */
14
+ shouldDispatch?: true;
15
+ }): Promise<void>;
@@ -10,7 +10,8 @@ const resolve_peer_js_1 = require("../users/resolve-peer.js");
10
10
  * @param chat Chat or user ID, username, phone number, `"me"` or `"self"`
11
11
  * @param topicId ID of the topic (i.e. its top message ID)
12
12
  */
13
- async function deleteForumTopicHistory(client, chat, topicId) {
13
+ async function deleteForumTopicHistory(client, chat, topicId, params) {
14
+ const { shouldDispatch } = params ?? {};
14
15
  const channel = await (0, resolve_peer_js_1.resolveChannel)(client, chat);
15
16
  (0, type_assertions_js_1.assertTypeIsNot)('deleteForumTopicHistory', channel, 'inputChannelEmpty');
16
17
  const res = await client.call({
@@ -18,7 +19,9 @@ async function deleteForumTopicHistory(client, chat, topicId) {
18
19
  channel,
19
20
  topMsgId: typeof topicId === 'number' ? topicId : topicId.id,
20
21
  });
21
- client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount, channel.channelId));
22
+ if (!shouldDispatch) {
23
+ client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount, channel.channelId));
24
+ }
22
25
  }
23
26
  exports.deleteForumTopicHistory = deleteForumTopicHistory;
24
27
  //# sourceMappingURL=delete-forum-topic-history.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete-forum-topic-history.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/forums/delete-forum-topic-history.ts"],"names":[],"mappings":";;;AAAA,0EAAmE;AAGnE,qDAA0D;AAC1D,8DAAyD;AAEzD;;;;;GAKG;AACI,KAAK,UAAU,uBAAuB,CACzC,MAAuB,EACvB,IAAmB,EACnB,OAA4B;IAE5B,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAc,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClD,IAAA,oCAAe,EAAC,yBAAyB,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAA;IAExE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,6BAA6B;QAChC,OAAO;QACP,QAAQ,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;KAC/D,CAAC,CAAA;IAEF,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;AAC1F,CAAC;AAfD,0DAeC","sourcesContent":["import { assertTypeIsNot } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport type { ForumTopic, InputPeerLike } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { resolveChannel } from '../users/resolve-peer.js'\n\n/**\n * Delete a forum topic and all its history\n *\n * @param chat Chat or user ID, username, phone number, `\"me\"` or `\"self\"`\n * @param topicId ID of the topic (i.e. its top message ID)\n */\nexport async function deleteForumTopicHistory(\n client: ITelegramClient,\n chat: InputPeerLike,\n topicId: number | ForumTopic,\n): Promise<void> {\n const channel = await resolveChannel(client, chat)\n assertTypeIsNot('deleteForumTopicHistory', channel, 'inputChannelEmpty')\n\n const res = await client.call({\n _: 'channels.deleteTopicHistory',\n channel,\n topMsgId: typeof topicId === 'number' ? topicId : topicId.id,\n })\n\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount, channel.channelId))\n}\n"]}
1
+ {"version":3,"file":"delete-forum-topic-history.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/forums/delete-forum-topic-history.ts"],"names":[],"mappings":";;;AAAA,0EAAmE;AAGnE,qDAA0D;AAC1D,8DAAyD;AAEzD;;;;;GAKG;AACI,KAAK,UAAU,uBAAuB,CACzC,MAAuB,EACvB,IAAmB,EACnB,OAA4B,EAC5B,MAMC;IAED,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAEvC,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAc,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAClD,IAAA,oCAAe,EAAC,yBAAyB,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAA;IAExE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,6BAA6B;QAChC,OAAO;QACP,QAAQ,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;KAC/D,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAC1F,CAAC;AACL,CAAC;AA1BD,0DA0BC","sourcesContent":["import { assertTypeIsNot } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport type { ForumTopic, InputPeerLike } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { resolveChannel } from '../users/resolve-peer.js'\n\n/**\n * Delete a forum topic and all its history\n *\n * @param chat Chat or user ID, username, phone number, `\"me\"` or `\"self\"`\n * @param topicId ID of the topic (i.e. its top message ID)\n */\nexport async function deleteForumTopicHistory(\n client: ITelegramClient,\n chat: InputPeerLike,\n topicId: number | ForumTopic,\n params?: {\n /**\n * Whether to dispatch updates that will be generated by this call.\n * Doesn't follow `disableNoDispatch`\n */\n shouldDispatch?: true\n },\n): Promise<void> {\n const { shouldDispatch } = params ?? {}\n\n const channel = await resolveChannel(client, chat)\n assertTypeIsNot('deleteForumTopicHistory', channel, 'inputChannelEmpty')\n\n const res = await client.call({\n _: 'channels.deleteTopicHistory',\n channel,\n topMsgId: typeof topicId === 'number' ? topicId : topicId.id,\n })\n\n if (!shouldDispatch) {\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount, channel.channelId))\n }\n}\n"]}
@@ -8,6 +8,11 @@ export interface DeleteMessagesParams {
8
8
  * @default true
9
9
  */
10
10
  revoke?: boolean;
11
+ /**
12
+ * Whether to dispatch updates that will be generated by this call.
13
+ * Doesn't follow `disableNoDispatch`
14
+ */
15
+ shouldDispatch?: true;
11
16
  }
12
17
  /**
13
18
  * Delete messages by their IDs
@@ -12,7 +12,7 @@ const delete_scheduled_messages_js_1 = require("./delete-scheduled-messages.js")
12
12
  * @param ids Message(s) ID(s) to delete.
13
13
  */
14
14
  async function deleteMessagesById(client, chatId, ids, params) {
15
- const { revoke = true } = params ?? {};
15
+ const { revoke = true, shouldDispatch } = params ?? {};
16
16
  const peer = await (0, resolve_peer_js_1.resolvePeer)(client, chatId);
17
17
  let upd;
18
18
  if ((0, peer_utils_js_1.isInputPeerChannel)(peer)) {
@@ -32,7 +32,9 @@ async function deleteMessagesById(client, chatId, ids, params) {
32
32
  });
33
33
  upd = (0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount);
34
34
  }
35
- client.handleClientUpdate(upd);
35
+ if (!shouldDispatch) {
36
+ client.handleClientUpdate(upd);
37
+ }
36
38
  }
37
39
  exports.deleteMessagesById = deleteMessagesById;
38
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"delete-messages.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/delete-messages.ts"],"names":[],"mappings":";;;AAIA,qDAA0D;AAC1D,6DAA8E;AAC9E,8DAAsD;AACtD,iFAAwE;AAaxE;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CACpC,MAAuB,EACvB,MAAqB,EACrB,GAAa,EACb,MAA6B;IAE7B,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAEtC,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE9C,IAAI,GAAG,CAAA;IAEP,IAAI,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAA,8BAAc,EAAC,IAAI,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC,EAAE,yBAAyB;YAC5B,OAAO;YACP,EAAE,EAAE,GAAG;SACV,CAAC,CAAA;QACF,GAAG,GAAG,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAClE,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC,EAAE,yBAAyB;YAC5B,EAAE,EAAE,GAAG;YACP,MAAM;SACT,CAAC,CAAA;QACF,GAAG,GAAG,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC;AA9BD,gDA8BC;AAED;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAChC,MAAuB,EACvB,QAAmB,EACnB,MAA6B;IAE7B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;IAC3F,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwC,CAAA;IAC9D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAwC,CAAA;IAEvE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAA;QAEtD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;QAClD,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,MAAM,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;QACjD,MAAM,IAAA,sDAAuB,EAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IACpD,CAAC;AACL,CAAC;AA5BD,wCA4BC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike, Message } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { isInputPeerChannel, toInputChannel } from '../../utils/peer-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { deleteScheduledMessages } from './delete-scheduled-messages.js'\n\n// @exported\nexport interface DeleteMessagesParams {\n /**\n * Whether to \"revoke\" (i.e. delete for both sides).\n * Only used for chats and private chats.\n *\n * @default true\n */\n revoke?: boolean\n}\n\n/**\n * Delete messages by their IDs\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param ids Message(s) ID(s) to delete.\n */\nexport async function deleteMessagesById(\n client: ITelegramClient,\n chatId: InputPeerLike,\n ids: number[],\n params?: DeleteMessagesParams,\n): Promise<void> {\n const { revoke = true } = params ?? {}\n\n const peer = await resolvePeer(client, chatId)\n\n let upd\n\n if (isInputPeerChannel(peer)) {\n const channel = toInputChannel(peer)\n const res = await client.call({\n _: 'channels.deleteMessages',\n channel,\n id: ids,\n })\n upd = createDummyUpdate(res.pts, res.ptsCount, peer.channelId)\n } else {\n const res = await client.call({\n _: 'messages.deleteMessages',\n id: ids,\n revoke,\n })\n upd = createDummyUpdate(res.pts, res.ptsCount)\n }\n\n client.handleClientUpdate(upd)\n}\n\n/**\n * Delete one or more {@link Message}\n *\n * @param messages Message(s) to delete\n */\nexport async function deleteMessages(\n client: ITelegramClient,\n messages: Message[],\n params?: DeleteMessagesParams,\n): Promise<void> {\n if (messages.length === 1) {\n return deleteMessagesById(client, messages[0].chat.inputPeer, [messages[0].id], params)\n }\n\n const byChat = new Map<number, [tl.TypeInputPeer, number[]]>()\n const byChatScheduled = new Map<number, [tl.TypeInputPeer, number[]]>()\n\n for (const msg of messages) {\n const map = msg.isScheduled ? byChatScheduled : byChat\n\n if (!map.has(msg.chat.id)) {\n map.set(msg.chat.id, [msg.chat.inputPeer, []])\n }\n map.get(msg.chat.id)![1].push(msg.id)\n }\n\n for (const [peer, ids] of byChat.values()) {\n await deleteMessagesById(client, peer, ids, params)\n }\n\n for (const [peer, ids] of byChatScheduled.values()) {\n await deleteScheduledMessages(client, peer, ids)\n }\n}\n"]}
1
+ {"version":3,"file":"delete-messages.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/delete-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike, Message } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { isInputPeerChannel, toInputChannel } from '../../utils/peer-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { deleteScheduledMessages } from './delete-scheduled-messages.js'\n\n// @exported\nexport interface DeleteMessagesParams {\n /**\n * Whether to \"revoke\" (i.e. delete for both sides).\n * Only used for chats and private chats.\n *\n * @default true\n */\n revoke?: boolean\n\n /**\n * Whether to dispatch updates that will be generated by this call.\n * Doesn't follow `disableNoDispatch`\n */\n shouldDispatch?: true\n}\n\n/**\n * Delete messages by their IDs\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param ids Message(s) ID(s) to delete.\n */\nexport async function deleteMessagesById(\n client: ITelegramClient,\n chatId: InputPeerLike,\n ids: number[],\n params?: DeleteMessagesParams,\n): Promise<void> {\n const { revoke = true, shouldDispatch } = params ?? {}\n\n const peer = await resolvePeer(client, chatId)\n\n let upd\n\n if (isInputPeerChannel(peer)) {\n const channel = toInputChannel(peer)\n const res = await client.call({\n _: 'channels.deleteMessages',\n channel,\n id: ids,\n })\n upd = createDummyUpdate(res.pts, res.ptsCount, peer.channelId)\n } else {\n const res = await client.call({\n _: 'messages.deleteMessages',\n id: ids,\n revoke,\n })\n upd = createDummyUpdate(res.pts, res.ptsCount)\n }\n\n if (!shouldDispatch) {\n client.handleClientUpdate(upd)\n }\n}\n\n/**\n * Delete one or more {@link Message}\n *\n * @param messages Message(s) to delete\n */\nexport async function deleteMessages(\n client: ITelegramClient,\n messages: Message[],\n params?: DeleteMessagesParams,\n): Promise<void> {\n if (messages.length === 1) {\n return deleteMessagesById(client, messages[0].chat.inputPeer, [messages[0].id], params)\n }\n\n const byChat = new Map<number, [tl.TypeInputPeer, number[]]>()\n const byChatScheduled = new Map<number, [tl.TypeInputPeer, number[]]>()\n\n for (const msg of messages) {\n const map = msg.isScheduled ? byChatScheduled : byChat\n\n if (!map.has(msg.chat.id)) {\n map.set(msg.chat.id, [msg.chat.inputPeer, []])\n }\n map.get(msg.chat.id)![1].push(msg.id)\n }\n\n for (const [peer, ids] of byChat.values()) {\n await deleteMessagesById(client, peer, ids, params)\n }\n\n for (const [peer, ids] of byChatScheduled.values()) {\n await deleteScheduledMessages(client, peer, ids)\n }\n}\n"]}
@@ -16,4 +16,9 @@ export declare function readHistory(client: ITelegramClient, chatId: InputPeerLi
16
16
  * Whether to also clear all mentions in the chat
17
17
  */
18
18
  clearMentions?: boolean;
19
+ /**
20
+ * Whether to dispatch updates that will be generated by this call.
21
+ * Doesn't follow `disableNoDispatch`
22
+ */
23
+ shouldDispatch?: true;
19
24
  }): Promise<void>;
@@ -11,18 +11,20 @@ const resolve_peer_js_1 = require("../users/resolve-peer.js");
11
11
  * @param chatId Chat ID
12
12
  */
13
13
  async function readHistory(client, chatId, params) {
14
- const { maxId = 0, clearMentions } = params ?? {};
14
+ const { maxId = 0, clearMentions, shouldDispatch } = params ?? {};
15
15
  const peer = await (0, resolve_peer_js_1.resolvePeer)(client, chatId);
16
16
  if (clearMentions) {
17
17
  const res = await client.call({
18
18
  _: 'messages.readMentions',
19
19
  peer,
20
20
  });
21
- if ((0, peer_utils_js_1.isInputPeerChannel)(peer)) {
22
- client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount, peer.channelId));
23
- }
24
- else {
25
- client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount));
21
+ if (!shouldDispatch) {
22
+ if ((0, peer_utils_js_1.isInputPeerChannel)(peer)) {
23
+ client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount, peer.channelId));
24
+ }
25
+ else {
26
+ client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount));
27
+ }
26
28
  }
27
29
  }
28
30
  if ((0, peer_utils_js_1.isInputPeerChannel)(peer)) {
@@ -39,7 +41,9 @@ async function readHistory(client, chatId, params) {
39
41
  peer,
40
42
  maxId,
41
43
  });
42
- client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount));
44
+ if (!shouldDispatch) {
45
+ client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount));
46
+ }
43
47
  }
44
48
  }
45
49
  exports.readHistory = readHistory;
@@ -1 +1 @@
1
- {"version":3,"file":"read-history.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/read-history.ts"],"names":[],"mappings":";;;AAAA,0EAA8D;AAG9D,qDAA0D;AAC1D,6DAA8E;AAC9E,8DAAsD;AAEtD;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAC7B,MAAuB,EACvB,MAAqB,EACrB,MAYC;IAED,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAEjD,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE9C,IAAI,aAAa,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC,EAAE,uBAAuB;YAC1B,IAAI;SACP,CAAC,CAAA;QAEF,IAAI,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QACvF,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QACvE,CAAC;IACL,CAAC;IAED,IAAI,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YACxB,CAAC,EAAE,sBAAsB;YACzB,OAAO,EAAE,IAAA,8BAAc,EAAC,IAAI,CAAC;YAC7B,KAAK;SACR,CAAC,CAAA;QAEF,IAAA,+BAAU,EAAC,sBAAsB,EAAE,CAAC,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC,EAAE,sBAAsB;YACzB,IAAI;YACJ,KAAK;SACR,CAAC,CAAA;QACF,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACvE,CAAC;AACL,CAAC;AAlDD,kCAkDC","sourcesContent":["import { assertTrue } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { isInputPeerChannel, toInputChannel } from '../../utils/peer-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Mark chat history as read.\n *\n * @param chatId Chat ID\n */\nexport async function readHistory(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: {\n /**\n * Message up until which to read history\n *\n * @default 0, i.e. read everything\n */\n maxId?: number\n\n /**\n * Whether to also clear all mentions in the chat\n */\n clearMentions?: boolean\n },\n): Promise<void> {\n const { maxId = 0, clearMentions } = params ?? {}\n\n const peer = await resolvePeer(client, chatId)\n\n if (clearMentions) {\n const res = await client.call({\n _: 'messages.readMentions',\n peer,\n })\n\n if (isInputPeerChannel(peer)) {\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount, peer.channelId))\n } else {\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount))\n }\n }\n\n if (isInputPeerChannel(peer)) {\n const r = await client.call({\n _: 'channels.readHistory',\n channel: toInputChannel(peer),\n maxId,\n })\n\n assertTrue('channels.readHistory', r)\n } else {\n const res = await client.call({\n _: 'messages.readHistory',\n peer,\n maxId,\n })\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount))\n }\n}\n"]}
1
+ {"version":3,"file":"read-history.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/read-history.ts"],"names":[],"mappings":";;;AAAA,0EAA8D;AAG9D,qDAA0D;AAC1D,6DAA8E;AAC9E,8DAAsD;AAEtD;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAC7B,MAAuB,EACvB,MAAqB,EACrB,MAkBC;IAED,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAEjE,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE9C,IAAI,aAAa,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC,EAAE,uBAAuB;YAC1B,IAAI;SACP,CAAC,CAAA;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,IAAI,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;YACvF,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;YACvE,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YACxB,CAAC,EAAE,sBAAsB;YACzB,OAAO,EAAE,IAAA,8BAAc,EAAC,IAAI,CAAC;YAC7B,KAAK;SACR,CAAC,CAAA;QAEF,IAAA,+BAAU,EAAC,sBAAsB,EAAE,CAAC,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC,EAAE,sBAAsB;YACzB,IAAI;YACJ,KAAK;SACR,CAAC,CAAA;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QACvE,CAAC;IACL,CAAC;AACL,CAAC;AA7DD,kCA6DC","sourcesContent":["import { assertTrue } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { isInputPeerChannel, toInputChannel } from '../../utils/peer-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Mark chat history as read.\n *\n * @param chatId Chat ID\n */\nexport async function readHistory(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: {\n /**\n * Message up until which to read history\n *\n * @default 0, i.e. read everything\n */\n maxId?: number\n\n /**\n * Whether to also clear all mentions in the chat\n */\n clearMentions?: boolean\n\n /**\n * Whether to dispatch updates that will be generated by this call.\n * Doesn't follow `disableNoDispatch`\n */\n shouldDispatch?: true\n },\n): Promise<void> {\n const { maxId = 0, clearMentions, shouldDispatch } = params ?? {}\n\n const peer = await resolvePeer(client, chatId)\n\n if (clearMentions) {\n const res = await client.call({\n _: 'messages.readMentions',\n peer,\n })\n\n if (!shouldDispatch) {\n if (isInputPeerChannel(peer)) {\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount, peer.channelId))\n } else {\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount))\n }\n }\n }\n\n if (isInputPeerChannel(peer)) {\n const r = await client.call({\n _: 'channels.readHistory',\n channel: toInputChannel(peer),\n maxId,\n })\n\n assertTrue('channels.readHistory', r)\n } else {\n const res = await client.call({\n _: 'messages.readHistory',\n peer,\n maxId,\n })\n\n if (!shouldDispatch) {\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount))\n }\n }\n}\n"]}
@@ -5,4 +5,10 @@ import { InputPeerLike } from '../../types/index.js';
5
5
  *
6
6
  * @param chatId Chat ID
7
7
  */
8
- export declare function readReactions(client: ITelegramClient, chatId: InputPeerLike): Promise<void>;
8
+ export declare function readReactions(client: ITelegramClient, chatId: InputPeerLike, params?: {
9
+ /**
10
+ * Whether to dispatch updates that will be generated by this call.
11
+ * Doesn't follow `disableNoDispatch`
12
+ */
13
+ shouldDispatch?: true;
14
+ }): Promise<void>;
@@ -8,12 +8,15 @@ const resolve_peer_js_1 = require("../users/resolve-peer.js");
8
8
  *
9
9
  * @param chatId Chat ID
10
10
  */
11
- async function readReactions(client, chatId) {
11
+ async function readReactions(client, chatId, params) {
12
+ const { shouldDispatch } = params ?? {};
12
13
  const res = await client.call({
13
14
  _: 'messages.readReactions',
14
15
  peer: await (0, resolve_peer_js_1.resolvePeer)(client, chatId),
15
16
  });
16
- client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount));
17
+ if (!shouldDispatch) {
18
+ client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount));
19
+ }
17
20
  }
18
21
  exports.readReactions = readReactions;
19
22
  //# sourceMappingURL=read-reactions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read-reactions.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/read-reactions.ts"],"names":[],"mappings":";;;AAEA,qDAA0D;AAC1D,8DAAsD;AAEtD;;;;GAIG;AACI,KAAK,UAAU,aAAa,CAAC,MAAuB,EAAE,MAAqB;IAC9E,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,wBAAwB;QAC3B,IAAI,EAAE,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC;KAC1C,CAAC,CAAA;IACF,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;AACvE,CAAC;AAND,sCAMC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Mark all reactions in chat as read.\n *\n * @param chatId Chat ID\n */\nexport async function readReactions(client: ITelegramClient, chatId: InputPeerLike): Promise<void> {\n const res = await client.call({\n _: 'messages.readReactions',\n peer: await resolvePeer(client, chatId),\n })\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount))\n}\n"]}
1
+ {"version":3,"file":"read-reactions.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/read-reactions.ts"],"names":[],"mappings":";;;AAEA,qDAA0D;AAC1D,8DAAsD;AAEtD;;;;GAIG;AACI,KAAK,UAAU,aAAa,CAC/B,MAAuB,EACvB,MAAqB,EACrB,MAMC;IAED,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,wBAAwB;QAC3B,IAAI,EAAE,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC;KAC1C,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,MAAM,CAAC,kBAAkB,CAAC,IAAA,4BAAiB,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACvE,CAAC;AACL,CAAC;AApBD,sCAoBC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Mark all reactions in chat as read.\n *\n * @param chatId Chat ID\n */\nexport async function readReactions(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: {\n /**\n * Whether to dispatch updates that will be generated by this call.\n * Doesn't follow `disableNoDispatch`\n */\n shouldDispatch?: true\n },\n): Promise<void> {\n const { shouldDispatch } = params ?? {}\n const res = await client.call({\n _: 'messages.readReactions',\n peer: await resolvePeer(client, chatId),\n })\n\n if (!shouldDispatch) {\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount))\n }\n}\n"]}
@@ -83,8 +83,8 @@ export interface CommonSendParams {
83
83
  */
84
84
  quickReply?: number | string;
85
85
  /**
86
- * Whether to dispatch the returned message
87
- * to the client's update handler.
86
+ * Whether to dispatch the returned message to the client's update handler.
87
+ * Doesn't follow `disableNoDispatch`
88
88
  */
89
89
  shouldDispatch?: true;
90
90
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"send-common.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/send-common.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { getMarkedPeerId } from '../../../utils/peer-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { MtMessageNotFoundError } from '../../types/errors.js'\nimport { Message } from '../../types/messages/message.js'\nimport { TextWithEntities } from '../../types/misc/entities.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { normalizeDate, normalizeMessageId } from '../../utils/index.js'\nimport { _getPeerChainId } from '../misc/chain-id.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _getDiscussionMessage } from './get-discussion-message.js'\nimport { getMessages } from './get-messages.js'\n\n// @exported\nexport interface CommonSendParams {\n /**\n * Message to reply to. Either a message object or message ID.\n *\n * For forums - can also be an ID of the topic (i.e. its top message ID)\n *\n * Can also be a message from another chat, in which case a quote will be sent.\n */\n replyTo?: number | Message\n\n /**\n * Whether to throw an error if {@link replyTo}\n * message does not exist.\n *\n * If that message was not found, `NotFoundError` is thrown,\n * with `text` set to `MESSAGE_NOT_FOUND`.\n *\n * Incurs an additional request, so only use when really needed.\n *\n * @default `false`\n */\n mustReply?: boolean\n\n /**\n * Message to comment to. Either a message object or message ID.\n *\n * This overwrites `replyTo` if it was passed\n */\n commentTo?: number | Message\n\n /**\n * Story to reply to.\n *\n * Must be the story sent by the peer you are sending the message to.\n *\n * Can't be used together with {@link replyTo} or {@link commentTo}.\n */\n replyToStory?: number\n\n /**\n * Quoted text. Must be exactly contained in the message\n * being quoted to be accepted by the server (as well as entities)\n */\n quote?: TextWithEntities\n\n /**\n * Offset of the start of the quote in the message.\n */\n quoteOffset?: number\n\n /**\n * Whether to send this message silently.\n */\n silent?: boolean\n\n /**\n * If set, the message will be scheduled to this date.\n * When passing a number, a UNIX time in ms is expected.\n *\n * You can also pass `online` - this will send the message\n * once the peer is online. Note that this requires that\n * peer's online status to be visible to you.\n */\n schedule?: Date | number | 'online'\n\n /**\n * Whether to clear draft after sending this message.\n *\n * @default `false`\n */\n clearDraft?: boolean\n\n /**\n * Whether to disallow further forwards of this message.\n *\n * Only for bots, works even if the target chat does not\n * have content protection.\n */\n forbidForwards?: boolean\n\n /**\n * Peer to use when sending the message.\n */\n sendAs?: InputPeerLike\n\n /**\n * If passed, instead of sending the message, it will be saved into the\n * given quick reply shortcut (either its ID or its shortcut string).\n */\n quickReply?: number | string\n\n /**\n * Whether to dispatch the returned message\n * to the client's update handler.\n */\n shouldDispatch?: true\n\n /**\n * Unique identifier of the business connection on behalf of which\n * the message will be sent\n */\n businessConnectionId?: string\n\n /**\n * ID of a message effect to use when sending the message\n * (see {@link TelegramClient.getAvailableMessageEffects})\n */\n effect?: tl.Long\n // todo: once we have a caching layer, we can accept an emoji here\n}\n\n/**\n * @internal\n * @noemit\n */\nexport function _normalizeQuickReplyShortcut(\n shortcut: number | string | undefined,\n): tl.TypeInputQuickReplyShortcut | undefined {\n if (!shortcut) return undefined\n\n if (typeof shortcut === 'number') {\n return {\n _: 'inputQuickReplyShortcutId',\n shortcutId: shortcut,\n }\n }\n\n return {\n _: 'inputQuickReplyShortcut',\n shortcut,\n }\n}\n\n/**\n * @internal\n * @noemit\n */\nexport async function _processCommonSendParameters(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params: CommonSendParams,\n) {\n let peer = await resolvePeer(client, chatId)\n\n let replyTo = normalizeMessageId(params.replyTo)\n const replyToPeer = typeof params.replyTo === 'number' ? undefined : params.replyTo?.chat.inputPeer\n\n if (params.commentTo) {\n [peer, replyTo] = await _getDiscussionMessage(client, peer, normalizeMessageId(params.commentTo)!)\n }\n\n if (params.mustReply) {\n if (!replyTo) {\n throw new MtArgumentError('mustReply used, but replyTo was not passed')\n }\n\n const msg = await getMessages(client, peer, replyTo)\n\n if (!msg) {\n throw new MtMessageNotFoundError(getMarkedPeerId(peer), replyTo, 'to reply to')\n }\n }\n\n if (params.replyToStory && replyTo) {\n throw new MtArgumentError('replyTo/commentTo and replyToStory cannot be used together')\n }\n\n let tlReplyTo: tl.TypeInputReplyTo | undefined = undefined\n\n if (replyTo) {\n tlReplyTo = {\n _: 'inputReplyToMessage',\n replyToMsgId: replyTo,\n replyToPeerId: replyToPeer,\n quoteText: params.quote?.text,\n quoteEntities: params.quote?.entities as tl.TypeMessageEntity[],\n quoteOffset: params.quoteOffset,\n }\n } else if (params.replyToStory) {\n tlReplyTo = {\n _: 'inputReplyToStory',\n storyId: params.replyToStory,\n peer,\n }\n }\n\n let scheduleDate: number | undefined = undefined\n\n if (params.schedule === 'online') {\n scheduleDate = 0x7ffffffe\n } else if (params.schedule) {\n scheduleDate = normalizeDate(params.schedule)\n }\n\n return {\n peer,\n replyTo: tlReplyTo,\n scheduleDate,\n quickReplyShortcut: _normalizeQuickReplyShortcut(params.quickReply),\n chainId: _getPeerChainId(client, peer, 'send'),\n }\n}\n"]}
1
+ {"version":3,"file":"send-common.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/send-common.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { getMarkedPeerId } from '../../../utils/peer-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { MtMessageNotFoundError } from '../../types/errors.js'\nimport { Message } from '../../types/messages/message.js'\nimport { TextWithEntities } from '../../types/misc/entities.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { normalizeDate, normalizeMessageId } from '../../utils/index.js'\nimport { _getPeerChainId } from '../misc/chain-id.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _getDiscussionMessage } from './get-discussion-message.js'\nimport { getMessages } from './get-messages.js'\n\n// @exported\nexport interface CommonSendParams {\n /**\n * Message to reply to. Either a message object or message ID.\n *\n * For forums - can also be an ID of the topic (i.e. its top message ID)\n *\n * Can also be a message from another chat, in which case a quote will be sent.\n */\n replyTo?: number | Message\n\n /**\n * Whether to throw an error if {@link replyTo}\n * message does not exist.\n *\n * If that message was not found, `NotFoundError` is thrown,\n * with `text` set to `MESSAGE_NOT_FOUND`.\n *\n * Incurs an additional request, so only use when really needed.\n *\n * @default `false`\n */\n mustReply?: boolean\n\n /**\n * Message to comment to. Either a message object or message ID.\n *\n * This overwrites `replyTo` if it was passed\n */\n commentTo?: number | Message\n\n /**\n * Story to reply to.\n *\n * Must be the story sent by the peer you are sending the message to.\n *\n * Can't be used together with {@link replyTo} or {@link commentTo}.\n */\n replyToStory?: number\n\n /**\n * Quoted text. Must be exactly contained in the message\n * being quoted to be accepted by the server (as well as entities)\n */\n quote?: TextWithEntities\n\n /**\n * Offset of the start of the quote in the message.\n */\n quoteOffset?: number\n\n /**\n * Whether to send this message silently.\n */\n silent?: boolean\n\n /**\n * If set, the message will be scheduled to this date.\n * When passing a number, a UNIX time in ms is expected.\n *\n * You can also pass `online` - this will send the message\n * once the peer is online. Note that this requires that\n * peer's online status to be visible to you.\n */\n schedule?: Date | number | 'online'\n\n /**\n * Whether to clear draft after sending this message.\n *\n * @default `false`\n */\n clearDraft?: boolean\n\n /**\n * Whether to disallow further forwards of this message.\n *\n * Only for bots, works even if the target chat does not\n * have content protection.\n */\n forbidForwards?: boolean\n\n /**\n * Peer to use when sending the message.\n */\n sendAs?: InputPeerLike\n\n /**\n * If passed, instead of sending the message, it will be saved into the\n * given quick reply shortcut (either its ID or its shortcut string).\n */\n quickReply?: number | string\n\n /**\n * Whether to dispatch the returned message to the client's update handler.\n * Doesn't follow `disableNoDispatch`\n */\n shouldDispatch?: true\n\n /**\n * Unique identifier of the business connection on behalf of which\n * the message will be sent\n */\n businessConnectionId?: string\n\n /**\n * ID of a message effect to use when sending the message\n * (see {@link TelegramClient.getAvailableMessageEffects})\n */\n effect?: tl.Long\n // todo: once we have a caching layer, we can accept an emoji here\n}\n\n/**\n * @internal\n * @noemit\n */\nexport function _normalizeQuickReplyShortcut(\n shortcut: number | string | undefined,\n): tl.TypeInputQuickReplyShortcut | undefined {\n if (!shortcut) return undefined\n\n if (typeof shortcut === 'number') {\n return {\n _: 'inputQuickReplyShortcutId',\n shortcutId: shortcut,\n }\n }\n\n return {\n _: 'inputQuickReplyShortcut',\n shortcut,\n }\n}\n\n/**\n * @internal\n * @noemit\n */\nexport async function _processCommonSendParameters(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params: CommonSendParams,\n) {\n let peer = await resolvePeer(client, chatId)\n\n let replyTo = normalizeMessageId(params.replyTo)\n const replyToPeer = typeof params.replyTo === 'number' ? undefined : params.replyTo?.chat.inputPeer\n\n if (params.commentTo) {\n [peer, replyTo] = await _getDiscussionMessage(client, peer, normalizeMessageId(params.commentTo)!)\n }\n\n if (params.mustReply) {\n if (!replyTo) {\n throw new MtArgumentError('mustReply used, but replyTo was not passed')\n }\n\n const msg = await getMessages(client, peer, replyTo)\n\n if (!msg) {\n throw new MtMessageNotFoundError(getMarkedPeerId(peer), replyTo, 'to reply to')\n }\n }\n\n if (params.replyToStory && replyTo) {\n throw new MtArgumentError('replyTo/commentTo and replyToStory cannot be used together')\n }\n\n let tlReplyTo: tl.TypeInputReplyTo | undefined = undefined\n\n if (replyTo) {\n tlReplyTo = {\n _: 'inputReplyToMessage',\n replyToMsgId: replyTo,\n replyToPeerId: replyToPeer,\n quoteText: params.quote?.text,\n quoteEntities: params.quote?.entities as tl.TypeMessageEntity[],\n quoteOffset: params.quoteOffset,\n }\n } else if (params.replyToStory) {\n tlReplyTo = {\n _: 'inputReplyToStory',\n storyId: params.replyToStory,\n peer,\n }\n }\n\n let scheduleDate: number | undefined = undefined\n\n if (params.schedule === 'online') {\n scheduleDate = 0x7ffffffe\n } else if (params.schedule) {\n scheduleDate = normalizeDate(params.schedule)\n }\n\n return {\n peer,\n replyTo: tlReplyTo,\n scheduleDate,\n quickReplyShortcut: _normalizeQuickReplyShortcut(params.quickReply),\n chainId: _getPeerChainId(client, peer, 'send'),\n }\n}\n"]}
@@ -60,9 +60,9 @@ async function sendText(client, chatId, text, params) {
60
60
  replyMarkup,
61
61
  entities: res.entities,
62
62
  };
63
- // is this needed?
64
- // this._date = res.date
65
- client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount));
63
+ if (!params.shouldDispatch) {
64
+ client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount));
65
+ }
66
66
  const peers = new index_js_2.PeersIndex();
67
67
  const fetchPeer = async (peer) => {
68
68
  const id = (0, peer_utils_js_1.getMarkedPeerId)(peer);
@@ -1 +1 @@
1
- {"version":3,"file":"send-text.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/send-text.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { randomLong } from '../../../utils/long-utils.js'\nimport { getMarkedPeerId } from '../../../utils/peer-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { BotKeyboard, ReplyMarkup } from '../../types/bots/keyboards/index.js'\nimport { Message } from '../../types/messages/message.js'\nimport { InputText } from '../../types/misc/entities.js'\nimport { InputPeerLike, PeersIndex } from '../../types/peers/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { inputPeerToPeer } from '../../utils/peer-utils.js'\nimport { _getRawPeerBatched } from '../chats/batched-queries.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _maybeInvokeWithBusinessConnection } from './_business-connection.js'\nimport { _findMessageInUpdate } from './find-in-update.js'\nimport { _getDiscussionMessage } from './get-discussion-message.js'\nimport { _processCommonSendParameters, CommonSendParams } from './send-common.js'\n\n/**\n * Send a text message\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param text Text of the message\n * @param params Additional sending parameters\n */\nexport async function sendText(\n client: ITelegramClient,\n chatId: InputPeerLike,\n text: InputText,\n params?: CommonSendParams & {\n /**\n * For bots: inline or reply markup or an instruction\n * to hide a reply keyboard or to force a reply.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n },\n): Promise<Message> {\n if (!params) params = {}\n\n const [message, entities] = await _normalizeInputText(client, text)\n\n const replyMarkup = BotKeyboard._convertToTl(params.replyMarkup)\n const { peer, replyTo, scheduleDate, chainId, quickReplyShortcut } = await _processCommonSendParameters(\n client,\n chatId,\n params,\n )\n\n const randomId = randomLong()\n const res = await _maybeInvokeWithBusinessConnection(\n client,\n params.businessConnectionId,\n {\n _: 'messages.sendMessage',\n peer,\n noWebpage: params.disableWebPreview,\n silent: params.silent,\n replyTo,\n randomId,\n scheduleDate,\n replyMarkup,\n message,\n entities,\n clearDraft: params.clearDraft,\n noforwards: params.forbidForwards,\n sendAs: params.sendAs ? await resolvePeer(client, params.sendAs) : undefined,\n invertMedia: params.invertMedia,\n quickReplyShortcut,\n effect: params.effect,\n },\n { chainId },\n )\n\n if (res._ === 'updateShortSentMessage') {\n // todo extract this to updates manager?\n const msg: tl.RawMessage = {\n _: 'message',\n id: res.id,\n peerId: inputPeerToPeer(peer),\n fromId: { _: 'peerUser', userId: client.storage.self.getCached()!.userId },\n message,\n date: res.date,\n out: res.out,\n replyMarkup,\n entities: res.entities,\n }\n\n // is this needed?\n // this._date = res.date\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount))\n\n const peers = new PeersIndex()\n\n const fetchPeer = async (peer: tl.TypePeer | tl.TypeInputPeer): Promise<void> => {\n const id = getMarkedPeerId(peer)\n\n let cached = await client.storage.peers.getCompleteById(id)\n\n if (!cached) {\n cached = await _getRawPeerBatched(client, await resolvePeer(client, peer))\n }\n\n if (!cached) {\n throw new MtTypeAssertionError('sendText (@ getFullPeerById)', 'user | chat', 'null')\n }\n\n switch (cached._) {\n case 'user':\n peers.users.set(cached.id, cached)\n break\n case 'chat':\n case 'chatForbidden':\n case 'channel':\n case 'channelForbidden':\n peers.chats.set(cached.id, cached)\n break\n default:\n throw new MtTypeAssertionError(\n 'sendText (@ users.getUsers)',\n 'user | chat | channel', // not very accurate, but good enough\n cached._,\n )\n }\n }\n\n await Promise.all([fetchPeer(peer), fetchPeer(msg.fromId!)])\n\n const ret = new Message(msg, peers)\n\n return ret\n }\n\n const msg = _findMessageInUpdate(client, res, false, !params.shouldDispatch, false, randomId)\n\n return msg\n}\n"]}
1
+ {"version":3,"file":"send-text.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/send-text.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { randomLong } from '../../../utils/long-utils.js'\nimport { getMarkedPeerId } from '../../../utils/peer-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { BotKeyboard, ReplyMarkup } from '../../types/bots/keyboards/index.js'\nimport { Message } from '../../types/messages/message.js'\nimport { InputText } from '../../types/misc/entities.js'\nimport { InputPeerLike, PeersIndex } from '../../types/peers/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { inputPeerToPeer } from '../../utils/peer-utils.js'\nimport { _getRawPeerBatched } from '../chats/batched-queries.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _maybeInvokeWithBusinessConnection } from './_business-connection.js'\nimport { _findMessageInUpdate } from './find-in-update.js'\nimport { _getDiscussionMessage } from './get-discussion-message.js'\nimport { _processCommonSendParameters, CommonSendParams } from './send-common.js'\n\n/**\n * Send a text message\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param text Text of the message\n * @param params Additional sending parameters\n */\nexport async function sendText(\n client: ITelegramClient,\n chatId: InputPeerLike,\n text: InputText,\n params?: CommonSendParams & {\n /**\n * For bots: inline or reply markup or an instruction\n * to hide a reply keyboard or to force a reply.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n },\n): Promise<Message> {\n if (!params) params = {}\n\n const [message, entities] = await _normalizeInputText(client, text)\n\n const replyMarkup = BotKeyboard._convertToTl(params.replyMarkup)\n const { peer, replyTo, scheduleDate, chainId, quickReplyShortcut } = await _processCommonSendParameters(\n client,\n chatId,\n params,\n )\n\n const randomId = randomLong()\n const res = await _maybeInvokeWithBusinessConnection(\n client,\n params.businessConnectionId,\n {\n _: 'messages.sendMessage',\n peer,\n noWebpage: params.disableWebPreview,\n silent: params.silent,\n replyTo,\n randomId,\n scheduleDate,\n replyMarkup,\n message,\n entities,\n clearDraft: params.clearDraft,\n noforwards: params.forbidForwards,\n sendAs: params.sendAs ? await resolvePeer(client, params.sendAs) : undefined,\n invertMedia: params.invertMedia,\n quickReplyShortcut,\n effect: params.effect,\n },\n { chainId },\n )\n\n if (res._ === 'updateShortSentMessage') {\n // todo extract this to updates manager?\n const msg: tl.RawMessage = {\n _: 'message',\n id: res.id,\n peerId: inputPeerToPeer(peer),\n fromId: { _: 'peerUser', userId: client.storage.self.getCached()!.userId },\n message,\n date: res.date,\n out: res.out,\n replyMarkup,\n entities: res.entities,\n }\n\n if (!params.shouldDispatch) {\n client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount))\n }\n\n const peers = new PeersIndex()\n\n const fetchPeer = async (peer: tl.TypePeer | tl.TypeInputPeer): Promise<void> => {\n const id = getMarkedPeerId(peer)\n\n let cached = await client.storage.peers.getCompleteById(id)\n\n if (!cached) {\n cached = await _getRawPeerBatched(client, await resolvePeer(client, peer))\n }\n\n if (!cached) {\n throw new MtTypeAssertionError('sendText (@ getFullPeerById)', 'user | chat', 'null')\n }\n\n switch (cached._) {\n case 'user':\n peers.users.set(cached.id, cached)\n break\n case 'chat':\n case 'chatForbidden':\n case 'channel':\n case 'channelForbidden':\n peers.chats.set(cached.id, cached)\n break\n default:\n throw new MtTypeAssertionError(\n 'sendText (@ users.getUsers)',\n 'user | chat | channel', // not very accurate, but good enough\n cached._,\n )\n }\n }\n\n await Promise.all([fetchPeer(peer), fetchPeer(msg.fromId!)])\n\n const ret = new Message(msg, peers)\n\n return ret\n }\n\n const msg = _findMessageInUpdate(client, res, false, !params.shouldDispatch, false, randomId)\n\n return msg\n}\n"]}
@@ -10,4 +10,9 @@ export declare function unpinAllMessages(client: ITelegramClient, chatId: InputP
10
10
  * For forums - unpin only messages from the given topic
11
11
  */
12
12
  topicId?: number;
13
+ /**
14
+ * Whether to dispatch updates that will be generated by this call.
15
+ * Doesn't follow `disableNoDispatch`
16
+ */
17
+ shouldDispatch?: true;
13
18
  }): Promise<void>;
@@ -10,18 +10,20 @@ const resolve_peer_js_1 = require("../users/resolve-peer.js");
10
10
  * @param chatId Chat or user ID
11
11
  */
12
12
  async function unpinAllMessages(client, chatId, params) {
13
- const { topicId } = params ?? {};
13
+ const { topicId, shouldDispatch } = params ?? {};
14
14
  const peer = await (0, resolve_peer_js_1.resolvePeer)(client, chatId);
15
15
  const res = await client.call({
16
16
  _: 'messages.unpinAllMessages',
17
17
  peer,
18
18
  topMsgId: topicId,
19
19
  });
20
- if ((0, peer_utils_js_1.isInputPeerChannel)(peer)) {
21
- client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount, peer.channelId));
22
- }
23
- else {
24
- client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount));
20
+ if (!shouldDispatch) {
21
+ if ((0, peer_utils_js_1.isInputPeerChannel)(peer)) {
22
+ client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount, peer.channelId));
23
+ }
24
+ else {
25
+ client.handleClientUpdate((0, utils_js_1.createDummyUpdate)(res.pts, res.ptsCount));
26
+ }
25
27
  }
26
28
  }
27
29
  exports.unpinAllMessages = unpinAllMessages;