@mtcute/core 0.12.5 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/cjs/highlevel/client.d.ts +83 -2
  2. package/cjs/highlevel/client.js +19 -0
  3. package/cjs/highlevel/client.js.map +1 -1
  4. package/cjs/highlevel/methods/_imports.js.map +1 -1
  5. package/cjs/highlevel/methods/chats/archive-chats.js +2 -1
  6. package/cjs/highlevel/methods/chats/archive-chats.js.map +1 -1
  7. package/cjs/highlevel/methods/dialogs/find-dialogs.d.ts +12 -0
  8. package/cjs/highlevel/methods/dialogs/find-dialogs.js +88 -0
  9. package/cjs/highlevel/methods/dialogs/find-dialogs.js.map +1 -0
  10. package/cjs/highlevel/methods/dialogs/get-peer-dialogs.js +2 -1
  11. package/cjs/highlevel/methods/dialogs/get-peer-dialogs.js.map +1 -1
  12. package/cjs/highlevel/methods/dialogs/iter-dialogs.js +3 -1
  13. package/cjs/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
  14. package/cjs/highlevel/methods/messages/_business-connection.d.ts +2 -1
  15. package/cjs/highlevel/methods/messages/_business-connection.js.map +1 -1
  16. package/cjs/highlevel/methods/messages/get-available-effects.d.ts +6 -0
  17. package/cjs/highlevel/methods/messages/get-available-effects.js +26 -0
  18. package/cjs/highlevel/methods/messages/get-available-effects.js.map +1 -0
  19. package/cjs/highlevel/methods/messages/get-fact-check.d.ts +11 -0
  20. package/cjs/highlevel/methods/messages/get-fact-check.js +27 -0
  21. package/cjs/highlevel/methods/messages/get-fact-check.js.map +1 -0
  22. package/cjs/highlevel/methods/messages/search-hashtag.d.ts +44 -0
  23. package/cjs/highlevel/methods/messages/search-hashtag.js +75 -0
  24. package/cjs/highlevel/methods/messages/search-hashtag.js.map +1 -0
  25. package/cjs/highlevel/methods/messages/send-common.d.ts +5 -0
  26. package/cjs/highlevel/methods/messages/send-common.js.map +1 -1
  27. package/cjs/highlevel/methods/messages/send-media-group.js +1 -0
  28. package/cjs/highlevel/methods/messages/send-media-group.js.map +1 -1
  29. package/cjs/highlevel/methods/messages/send-media.js +1 -0
  30. package/cjs/highlevel/methods/messages/send-media.js.map +1 -1
  31. package/cjs/highlevel/methods/messages/send-text.js +1 -0
  32. package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
  33. package/cjs/highlevel/methods/misc/normalize-privacy-rules.js +2 -1
  34. package/cjs/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
  35. package/cjs/highlevel/methods/users/resolve-peer-many.d.ts +6 -2
  36. package/cjs/highlevel/methods/users/resolve-peer-many.js +22 -6
  37. package/cjs/highlevel/methods/users/resolve-peer-many.js.map +1 -1
  38. package/cjs/highlevel/methods/users/resolve-peer.js +30 -11
  39. package/cjs/highlevel/methods/users/resolve-peer.js.map +1 -1
  40. package/cjs/highlevel/methods.d.ts +6 -0
  41. package/cjs/highlevel/methods.js +15 -4
  42. package/cjs/highlevel/methods.js.map +1 -1
  43. package/cjs/highlevel/types/conversation.js +1 -1
  44. package/cjs/highlevel/types/conversation.js.map +1 -1
  45. package/cjs/highlevel/types/messages/dialog.d.ts +2 -2
  46. package/cjs/highlevel/types/messages/dialog.js +2 -3
  47. package/cjs/highlevel/types/messages/dialog.js.map +1 -1
  48. package/cjs/highlevel/types/messages/fact-check.d.ts +30 -0
  49. package/cjs/highlevel/types/messages/fact-check.js +56 -0
  50. package/cjs/highlevel/types/messages/fact-check.js.map +1 -0
  51. package/cjs/highlevel/types/messages/index.d.ts +2 -0
  52. package/cjs/highlevel/types/messages/index.js +2 -0
  53. package/cjs/highlevel/types/messages/index.js.map +1 -1
  54. package/cjs/highlevel/types/messages/message-effect.d.ts +20 -0
  55. package/cjs/highlevel/types/messages/message-effect.js +69 -0
  56. package/cjs/highlevel/types/messages/message-effect.js.map +1 -0
  57. package/cjs/highlevel/types/messages/message-entity.d.ts +4 -1
  58. package/cjs/highlevel/types/messages/message-entity.js +1 -1
  59. package/cjs/highlevel/types/messages/message-entity.js.map +1 -1
  60. package/cjs/highlevel/types/messages/message.d.ts +12 -0
  61. package/cjs/highlevel/types/messages/message.js +23 -0
  62. package/cjs/highlevel/types/messages/message.js.map +1 -1
  63. package/cjs/network/network-manager.js +1 -1
  64. package/esm/highlevel/client.d.ts +83 -2
  65. package/esm/highlevel/client.js +19 -0
  66. package/esm/highlevel/client.js.map +1 -1
  67. package/esm/highlevel/methods/_imports.js.map +1 -1
  68. package/esm/highlevel/methods/chats/archive-chats.js +2 -1
  69. package/esm/highlevel/methods/chats/archive-chats.js.map +1 -1
  70. package/esm/highlevel/methods/dialogs/find-dialogs.d.ts +12 -0
  71. package/esm/highlevel/methods/dialogs/find-dialogs.js +84 -0
  72. package/esm/highlevel/methods/dialogs/find-dialogs.js.map +1 -0
  73. package/esm/highlevel/methods/dialogs/get-peer-dialogs.js +2 -1
  74. package/esm/highlevel/methods/dialogs/get-peer-dialogs.js.map +1 -1
  75. package/esm/highlevel/methods/dialogs/iter-dialogs.js +3 -1
  76. package/esm/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
  77. package/esm/highlevel/methods/messages/_business-connection.d.ts +2 -1
  78. package/esm/highlevel/methods/messages/_business-connection.js.map +1 -1
  79. package/esm/highlevel/methods/messages/get-available-effects.d.ts +6 -0
  80. package/esm/highlevel/methods/messages/get-available-effects.js +22 -0
  81. package/esm/highlevel/methods/messages/get-available-effects.js.map +1 -0
  82. package/esm/highlevel/methods/messages/get-fact-check.d.ts +11 -0
  83. package/esm/highlevel/methods/messages/get-fact-check.js +23 -0
  84. package/esm/highlevel/methods/messages/get-fact-check.js.map +1 -0
  85. package/esm/highlevel/methods/messages/search-hashtag.d.ts +44 -0
  86. package/esm/highlevel/methods/messages/search-hashtag.js +70 -0
  87. package/esm/highlevel/methods/messages/search-hashtag.js.map +1 -0
  88. package/esm/highlevel/methods/messages/send-common.d.ts +5 -0
  89. package/esm/highlevel/methods/messages/send-common.js.map +1 -1
  90. package/esm/highlevel/methods/messages/send-media-group.js +1 -0
  91. package/esm/highlevel/methods/messages/send-media-group.js.map +1 -1
  92. package/esm/highlevel/methods/messages/send-media.js +1 -0
  93. package/esm/highlevel/methods/messages/send-media.js.map +1 -1
  94. package/esm/highlevel/methods/messages/send-text.js +1 -0
  95. package/esm/highlevel/methods/messages/send-text.js.map +1 -1
  96. package/esm/highlevel/methods/misc/normalize-privacy-rules.js +2 -1
  97. package/esm/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
  98. package/esm/highlevel/methods/users/resolve-peer-many.d.ts +6 -2
  99. package/esm/highlevel/methods/users/resolve-peer-many.js +22 -6
  100. package/esm/highlevel/methods/users/resolve-peer-many.js.map +1 -1
  101. package/esm/highlevel/methods/users/resolve-peer.js +30 -11
  102. package/esm/highlevel/methods/users/resolve-peer.js.map +1 -1
  103. package/esm/highlevel/methods.d.ts +6 -0
  104. package/esm/highlevel/methods.js +5 -0
  105. package/esm/highlevel/methods.js.map +1 -1
  106. package/esm/highlevel/types/conversation.js +1 -1
  107. package/esm/highlevel/types/conversation.js.map +1 -1
  108. package/esm/highlevel/types/messages/dialog.d.ts +2 -2
  109. package/esm/highlevel/types/messages/dialog.js +2 -3
  110. package/esm/highlevel/types/messages/dialog.js.map +1 -1
  111. package/esm/highlevel/types/messages/fact-check.d.ts +30 -0
  112. package/esm/highlevel/types/messages/fact-check.js +53 -0
  113. package/esm/highlevel/types/messages/fact-check.js.map +1 -0
  114. package/esm/highlevel/types/messages/index.d.ts +2 -0
  115. package/esm/highlevel/types/messages/index.js +2 -0
  116. package/esm/highlevel/types/messages/index.js.map +1 -1
  117. package/esm/highlevel/types/messages/message-effect.d.ts +20 -0
  118. package/esm/highlevel/types/messages/message-effect.js +66 -0
  119. package/esm/highlevel/types/messages/message-effect.js.map +1 -0
  120. package/esm/highlevel/types/messages/message-entity.d.ts +4 -1
  121. package/esm/highlevel/types/messages/message-entity.js +1 -1
  122. package/esm/highlevel/types/messages/message-entity.js.map +1 -1
  123. package/esm/highlevel/types/messages/message.d.ts +12 -0
  124. package/esm/highlevel/types/messages/message.js +23 -0
  125. package/esm/highlevel/types/messages/message.js.map +1 -1
  126. package/esm/network/network-manager.js +1 -1
  127. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"send-media-group.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/send-media-group.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { randomLong } from '../../../utils/long-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputMediaLike } from '../../types/media/input-media/types.js'\nimport { Message } from '../../types/messages/message.js'\nimport { InputPeerLike, PeersIndex } from '../../types/peers/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\nimport { _normalizeInputMedia } from '../files/normalize-input-media.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _maybeInvokeWithBusinessConnection } from './_business-connection.js'\nimport { _getDiscussionMessage } from './get-discussion-message.js'\nimport { _processCommonSendParameters, CommonSendParams } from './send-common.js'\n\n/**\n * Send a group of media.\n *\n * To add a caption to the group, add caption to the first\n * media in the group and don't add caption for any other.\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param medias Medias contained in the message.\n * @param params Additional sending parameters\n * @link InputMedia\n */\nexport async function sendMediaGroup(\n client: ITelegramClient,\n chatId: InputPeerLike,\n medias: (InputMediaLike | string)[],\n params?: CommonSendParams & {\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 /**\n * Function that will be called after some part has been uploaded.\n * Only used when a file that requires uploading is passed,\n * and not used when uploading a thumbnail.\n *\n * @param index Index of the media in the original array\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size\n */\n progressCallback?: (index: number, uploaded: number, total: number) => void\n },\n): Promise<Message[]> {\n if (!params) params = {}\n\n const { peer, replyTo, scheduleDate, chainId, quickReplyShortcut } = await _processCommonSendParameters(\n client,\n chatId,\n params,\n )\n\n const multiMedia: tl.RawInputSingleMedia[] = []\n\n for (let i = 0; i < medias.length; i++) {\n let media = medias[i]\n\n if (typeof media === 'string') {\n media = {\n type: 'auto',\n file: media,\n }\n }\n\n const inputMedia = await _normalizeInputMedia(\n client,\n media,\n {\n progressCallback: params.progressCallback?.bind(null, i),\n // i have no fucking clue why we should upload it manually,\n // but otherwise Telegram throws MEDIA_INVALID\n // fuck my life\n uploadPeer: peer,\n businessConnectionId: params.businessConnectionId,\n },\n true,\n )\n\n const [message, entities] = await _normalizeInputText(\n client,\n // some types dont have `caption` field, and ts warns us,\n // but since it's JS, they'll just be `undefined` and properly handled by the method\n (media as Extract<typeof media, { caption?: unknown }>).caption,\n )\n\n multiMedia.push({\n _: 'inputSingleMedia',\n randomId: randomLong(),\n media: inputMedia,\n message,\n entities,\n })\n }\n\n const res = await _maybeInvokeWithBusinessConnection(\n client,\n params.businessConnectionId,\n {\n _: 'messages.sendMultiMedia',\n peer,\n multiMedia,\n silent: params.silent,\n replyTo,\n scheduleDate,\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 },\n { chainId },\n )\n\n assertIsUpdatesGroup('sendMediaGroup', res)\n client.handleClientUpdate(res)\n\n const peers = PeersIndex.from(res)\n\n const msgs = res.updates\n .filter(\n (u): u is tl.RawUpdateNewMessage | tl.RawUpdateNewChannelMessage | tl.RawUpdateNewScheduledMessage =>\n u._ === 'updateNewMessage' || u._ === 'updateNewChannelMessage' || u._ === 'updateNewScheduledMessage',\n )\n .map((u) => new Message(u.message, peers, u._ === 'updateNewScheduledMessage'))\n\n return msgs\n}\n"]}
1
+ {"version":3,"file":"send-media-group.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/send-media-group.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { randomLong } from '../../../utils/long-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputMediaLike } from '../../types/media/input-media/types.js'\nimport { Message } from '../../types/messages/message.js'\nimport { InputPeerLike, PeersIndex } from '../../types/peers/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\nimport { _normalizeInputMedia } from '../files/normalize-input-media.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _maybeInvokeWithBusinessConnection } from './_business-connection.js'\nimport { _getDiscussionMessage } from './get-discussion-message.js'\nimport { _processCommonSendParameters, CommonSendParams } from './send-common.js'\n\n/**\n * Send a group of media.\n *\n * To add a caption to the group, add caption to the first\n * media in the group and don't add caption for any other.\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param medias Medias contained in the message.\n * @param params Additional sending parameters\n * @link InputMedia\n */\nexport async function sendMediaGroup(\n client: ITelegramClient,\n chatId: InputPeerLike,\n medias: (InputMediaLike | string)[],\n params?: CommonSendParams & {\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 /**\n * Function that will be called after some part has been uploaded.\n * Only used when a file that requires uploading is passed,\n * and not used when uploading a thumbnail.\n *\n * @param index Index of the media in the original array\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size\n */\n progressCallback?: (index: number, uploaded: number, total: number) => void\n },\n): Promise<Message[]> {\n if (!params) params = {}\n\n const { peer, replyTo, scheduleDate, chainId, quickReplyShortcut } = await _processCommonSendParameters(\n client,\n chatId,\n params,\n )\n\n const multiMedia: tl.RawInputSingleMedia[] = []\n\n for (let i = 0; i < medias.length; i++) {\n let media = medias[i]\n\n if (typeof media === 'string') {\n media = {\n type: 'auto',\n file: media,\n }\n }\n\n const inputMedia = await _normalizeInputMedia(\n client,\n media,\n {\n progressCallback: params.progressCallback?.bind(null, i),\n // i have no fucking clue why we should upload it manually,\n // but otherwise Telegram throws MEDIA_INVALID\n // fuck my life\n uploadPeer: peer,\n businessConnectionId: params.businessConnectionId,\n },\n true,\n )\n\n const [message, entities] = await _normalizeInputText(\n client,\n // some types dont have `caption` field, and ts warns us,\n // but since it's JS, they'll just be `undefined` and properly handled by the method\n (media as Extract<typeof media, { caption?: unknown }>).caption,\n )\n\n multiMedia.push({\n _: 'inputSingleMedia',\n randomId: randomLong(),\n media: inputMedia,\n message,\n entities,\n })\n }\n\n const res = await _maybeInvokeWithBusinessConnection(\n client,\n params.businessConnectionId,\n {\n _: 'messages.sendMultiMedia',\n peer,\n multiMedia,\n silent: params.silent,\n replyTo,\n scheduleDate,\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 assertIsUpdatesGroup('sendMediaGroup', res)\n client.handleClientUpdate(res)\n\n const peers = PeersIndex.from(res)\n\n const msgs = res.updates\n .filter(\n (u): u is tl.RawUpdateNewMessage | tl.RawUpdateNewChannelMessage | tl.RawUpdateNewScheduledMessage =>\n u._ === 'updateNewMessage' || u._ === 'updateNewChannelMessage' || u._ === 'updateNewScheduledMessage',\n )\n .map((u) => new Message(u.message, peers, u._ === 'updateNewScheduledMessage'))\n\n return msgs\n}\n"]}
@@ -53,6 +53,7 @@ async function sendMedia(client, chatId, media, params) {
53
53
  sendAs: params.sendAs ? await (0, resolve_peer_js_1.resolvePeer)(client, params.sendAs) : undefined,
54
54
  invertMedia: params.invert,
55
55
  quickReplyShortcut,
56
+ effect: params.effect,
56
57
  }, { chainId });
57
58
  const msg = (0, find_in_update_js_1._findMessageInUpdate)(client, res, false, !params.shouldDispatch, false, randomId);
58
59
  return msg;
@@ -1 +1 @@
1
- {"version":3,"file":"send-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/send-media.ts"],"names":[],"mappings":";;;AAAA,gEAAyD;AAEzD,kEAA8E;AAK9E,gFAAwE;AACxE,iEAA+D;AAC/D,8DAAsD;AACtD,uEAA8E;AAC9E,2DAA0D;AAE1D,qDAAiF;AAEjF;;;;;;;;;;GAUG;AACI,KAAK,UAAU,SAAS,CAC3B,MAAuB,EACvB,MAAqB,EACrB,KAA8B,EAC9B,MAgCC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,KAAK,GAAG;YACJ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK;SACd,CAAA;IACL,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,IAAA,+CAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAEpE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,IAAA,uCAAmB,EACjD,MAAM;IACN,yDAAyD;IACzD,oFAAoF;IACpF,MAAM,CAAC,OAAO,IAAK,KAAsD,CAAC,OAAO,CACpF,CAAA;IAED,MAAM,WAAW,GAAG,sBAAW,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAChE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM,IAAA,6CAA4B,EACnG,MAAM,EACN,MAAM,EACN,MAAM,CACT,CAAA;IAED,MAAM,QAAQ,GAAG,IAAA,0BAAU,GAAE,CAAA;IAC7B,MAAM,GAAG,GAAG,MAAM,IAAA,4DAAkC,EAChD,MAAM,EACN,MAAM,CAAC,oBAAoB,EAC3B;QACI,CAAC,EAAE,oBAAoB;QACvB,IAAI;QACJ,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,OAAO;QACP,QAAQ;QACR,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,cAAc;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5E,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,kBAAkB;KACrB,EACD,EAAE,OAAO,EAAE,CACd,CAAA;IAED,MAAM,GAAG,GAAG,IAAA,wCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IAE7F,OAAO,GAAG,CAAA;AACd,CAAC;AA1FD,8BA0FC","sourcesContent":["import { randomLong } from '../../../utils/long-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { BotKeyboard, ReplyMarkup } from '../../types/bots/keyboards/index.js'\nimport { InputMediaLike } from '../../types/media/input-media/types.js'\nimport { Message } from '../../types/messages/message.js'\nimport { InputText } from '../../types/misc/entities.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { _normalizeInputMedia } from '../files/normalize-input-media.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 single media (a photo or a document-based media)\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param media\n * Media contained in the message. You can also pass TDLib\n * and Bot API compatible File ID, which will be wrapped\n * in {@link InputMedia.auto}\n * @param params Additional sending parameters\n * @link InputMedia\n */\nexport async function sendMedia(\n client: ITelegramClient,\n chatId: InputPeerLike,\n media: InputMediaLike | string,\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 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 invert?: boolean\n\n /**\n * Override caption for `media`.\n *\n * Can be used, for example. when using File IDs\n * or when using existing InputMedia objects.\n */\n caption?: InputText\n\n /**\n * Function that will be called after some part has been uploaded.\n * Only used when a file that requires uploading is passed,\n * and not used when uploading a thumbnail.\n *\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n },\n): Promise<Message> {\n if (!params) params = {}\n\n if (typeof media === 'string') {\n media = {\n type: 'auto',\n file: media,\n }\n }\n\n const inputMedia = await _normalizeInputMedia(client, media, params)\n\n const [message, entities] = await _normalizeInputText(\n client,\n // some types dont have `caption` field, and ts warns us,\n // but since it's JS, they'll just be `undefined` and properly handled by the method\n params.caption || (media as Extract<typeof media, { caption?: unknown }>).caption,\n )\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.sendMedia',\n peer,\n media: inputMedia,\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.invert,\n quickReplyShortcut,\n },\n { chainId },\n )\n\n const msg = _findMessageInUpdate(client, res, false, !params.shouldDispatch, false, randomId)\n\n return msg\n}\n"]}
1
+ {"version":3,"file":"send-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/send-media.ts"],"names":[],"mappings":";;;AAAA,gEAAyD;AAEzD,kEAA8E;AAK9E,gFAAwE;AACxE,iEAA+D;AAC/D,8DAAsD;AACtD,uEAA8E;AAC9E,2DAA0D;AAE1D,qDAAiF;AAEjF;;;;;;;;;;GAUG;AACI,KAAK,UAAU,SAAS,CAC3B,MAAuB,EACvB,MAAqB,EACrB,KAA8B,EAC9B,MAgCC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,KAAK,GAAG;YACJ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK;SACd,CAAA;IACL,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,IAAA,+CAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAEpE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,IAAA,uCAAmB,EACjD,MAAM;IACN,yDAAyD;IACzD,oFAAoF;IACpF,MAAM,CAAC,OAAO,IAAK,KAAsD,CAAC,OAAO,CACpF,CAAA;IAED,MAAM,WAAW,GAAG,sBAAW,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAChE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM,IAAA,6CAA4B,EACnG,MAAM,EACN,MAAM,EACN,MAAM,CACT,CAAA;IAED,MAAM,QAAQ,GAAG,IAAA,0BAAU,GAAE,CAAA;IAC7B,MAAM,GAAG,GAAG,MAAM,IAAA,4DAAkC,EAChD,MAAM,EACN,MAAM,CAAC,oBAAoB,EAC3B;QACI,CAAC,EAAE,oBAAoB;QACvB,IAAI;QACJ,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,OAAO;QACP,QAAQ;QACR,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,cAAc;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5E,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,kBAAkB;QAClB,MAAM,EAAE,MAAM,CAAC,MAAM;KACxB,EACD,EAAE,OAAO,EAAE,CACd,CAAA;IAED,MAAM,GAAG,GAAG,IAAA,wCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IAE7F,OAAO,GAAG,CAAA;AACd,CAAC;AA3FD,8BA2FC","sourcesContent":["import { randomLong } from '../../../utils/long-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { BotKeyboard, ReplyMarkup } from '../../types/bots/keyboards/index.js'\nimport { InputMediaLike } from '../../types/media/input-media/types.js'\nimport { Message } from '../../types/messages/message.js'\nimport { InputText } from '../../types/misc/entities.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { _normalizeInputMedia } from '../files/normalize-input-media.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 single media (a photo or a document-based media)\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param media\n * Media contained in the message. You can also pass TDLib\n * and Bot API compatible File ID, which will be wrapped\n * in {@link InputMedia.auto}\n * @param params Additional sending parameters\n * @link InputMedia\n */\nexport async function sendMedia(\n client: ITelegramClient,\n chatId: InputPeerLike,\n media: InputMediaLike | string,\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 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 invert?: boolean\n\n /**\n * Override caption for `media`.\n *\n * Can be used, for example. when using File IDs\n * or when using existing InputMedia objects.\n */\n caption?: InputText\n\n /**\n * Function that will be called after some part has been uploaded.\n * Only used when a file that requires uploading is passed,\n * and not used when uploading a thumbnail.\n *\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n },\n): Promise<Message> {\n if (!params) params = {}\n\n if (typeof media === 'string') {\n media = {\n type: 'auto',\n file: media,\n }\n }\n\n const inputMedia = await _normalizeInputMedia(client, media, params)\n\n const [message, entities] = await _normalizeInputText(\n client,\n // some types dont have `caption` field, and ts warns us,\n // but since it's JS, they'll just be `undefined` and properly handled by the method\n params.caption || (media as Extract<typeof media, { caption?: unknown }>).caption,\n )\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.sendMedia',\n peer,\n media: inputMedia,\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.invert,\n quickReplyShortcut,\n effect: params.effect,\n },\n { chainId },\n )\n\n const msg = _findMessageInUpdate(client, res, false, !params.shouldDispatch, false, randomId)\n\n return msg\n}\n"]}
@@ -45,6 +45,7 @@ async function sendText(client, chatId, text, params) {
45
45
  sendAs: params.sendAs ? await (0, resolve_peer_js_1.resolvePeer)(client, params.sendAs) : undefined,
46
46
  invertMedia: params.invertMedia,
47
47
  quickReplyShortcut,
48
+ effect: params.effect,
48
49
  }, { chainId });
49
50
  if (res._ === 'updateShortSentMessage') {
50
51
  // todo extract this to updates manager?
@@ -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 },\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 // 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,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports._normalizePrivacyRules = void 0;
4
+ const type_assertions_js_1 = require("../../../utils/type-assertions.js");
4
5
  const index_js_1 = require("../../utils/index.js");
5
6
  const resolve_peer_many_js_1 = require("../users/resolve-peer-many.js");
6
7
  /**
@@ -26,7 +27,7 @@ async function _normalizePrivacyRules(client, rules) {
26
27
  const chats = await (0, resolve_peer_many_js_1.resolvePeerMany)(client, rule.chats);
27
28
  res.push({
28
29
  _: rule.allow ? 'inputPrivacyValueAllowChatParticipants' : 'inputPrivacyValueDisallowChatParticipants',
29
- chats: chats.map((peer) => {
30
+ chats: chats.filter(type_assertions_js_1.isPresent).map((peer) => {
30
31
  if ('channelId' in peer)
31
32
  return peer.channelId;
32
33
  if ('chatId' in peer)
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-privacy-rules.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/misc/normalize-privacy-rules.ts"],"names":[],"mappings":";;;AAIA,mDAAkD;AAClD,wEAA+D;AAE/D;;;GAGG;AACI,KAAK,UAAU,sBAAsB,CACxC,MAAuB,EACvB,KAAyB;IAEzB,MAAM,GAAG,GAA8B,EAAE,CAAA;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACd,SAAQ;QACZ,CAAC;QAED,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,IAAA,sCAAe,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,sBAAW,CAAC,CAAA;YAEpE,GAAG,CAAC,IAAI,CAAC;gBACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,gCAAgC;gBAChF,KAAK;aACR,CAAC,CAAA;YACF,SAAQ;QACZ,CAAC;QAED,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,IAAA,sCAAe,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YAEvD,GAAG,CAAC,IAAI,CAAC;gBACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,2CAA2C;gBACtG,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACtB,IAAI,WAAW,IAAI,IAAI;wBAAE,OAAO,IAAI,CAAC,SAAS,CAAA;oBAC9C,IAAI,QAAQ,IAAI,IAAI;wBAAE,OAAO,IAAI,CAAC,MAAM,CAAA;oBAExC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;gBAClC,CAAC,CAAC;aACL,CAAC,CAAA;YACF,SAAQ;QACZ,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAvCD,wDAuCC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPrivacyRule } from '../../types/index.js'\nimport { toInputUser } from '../../utils/index.js'\nimport { resolvePeerMany } from '../users/resolve-peer-many.js'\n\n/**\n * Normalize {@link InputPrivacyRule}[] to `tl.TypeInputPrivacyRule`,\n * resolving the peers if needed.\n */\nexport async function _normalizePrivacyRules(\n client: ITelegramClient,\n rules: InputPrivacyRule[],\n): Promise<tl.TypeInputPrivacyRule[]> {\n const res: tl.TypeInputPrivacyRule[] = []\n\n for (const rule of rules) {\n if ('_' in rule) {\n res.push(rule)\n continue\n }\n\n if ('users' in rule) {\n const users = await resolvePeerMany(client, rule.users, toInputUser)\n\n res.push({\n _: rule.allow ? 'inputPrivacyValueAllowUsers' : 'inputPrivacyValueDisallowUsers',\n users,\n })\n continue\n }\n\n if ('chats' in rule) {\n const chats = await resolvePeerMany(client, rule.chats)\n\n res.push({\n _: rule.allow ? 'inputPrivacyValueAllowChatParticipants' : 'inputPrivacyValueDisallowChatParticipants',\n chats: chats.map((peer) => {\n if ('channelId' in peer) return peer.channelId\n if ('chatId' in peer) return peer.chatId\n\n throw new Error('UNREACHABLE')\n }),\n })\n continue\n }\n }\n\n return res\n}\n"]}
1
+ {"version":3,"file":"normalize-privacy-rules.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/misc/normalize-privacy-rules.ts"],"names":[],"mappings":";;;AAEA,0EAA6D;AAG7D,mDAAkD;AAClD,wEAA+D;AAE/D;;;GAGG;AACI,KAAK,UAAU,sBAAsB,CACxC,MAAuB,EACvB,KAAyB;IAEzB,MAAM,GAAG,GAA8B,EAAE,CAAA;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACd,SAAQ;QACZ,CAAC;QAED,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,IAAA,sCAAe,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,sBAAW,CAAC,CAAA;YAEpE,GAAG,CAAC,IAAI,CAAC;gBACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,gCAAgC;gBAChF,KAAK;aACR,CAAC,CAAA;YACF,SAAQ;QACZ,CAAC;QAED,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,IAAA,sCAAe,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YAEvD,GAAG,CAAC,IAAI,CAAC;gBACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,2CAA2C;gBACtG,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,8BAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACxC,IAAI,WAAW,IAAI,IAAI;wBAAE,OAAO,IAAI,CAAC,SAAS,CAAA;oBAC9C,IAAI,QAAQ,IAAI,IAAI;wBAAE,OAAO,IAAI,CAAC,MAAM,CAAA;oBAExC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;gBAClC,CAAC,CAAC;aACL,CAAC,CAAA;YACF,SAAQ;QACZ,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAvCD,wDAuCC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { isPresent } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPrivacyRule } from '../../types/index.js'\nimport { toInputUser } from '../../utils/index.js'\nimport { resolvePeerMany } from '../users/resolve-peer-many.js'\n\n/**\n * Normalize {@link InputPrivacyRule}[] to `tl.TypeInputPrivacyRule`,\n * resolving the peers if needed.\n */\nexport async function _normalizePrivacyRules(\n client: ITelegramClient,\n rules: InputPrivacyRule[],\n): Promise<tl.TypeInputPrivacyRule[]> {\n const res: tl.TypeInputPrivacyRule[] = []\n\n for (const rule of rules) {\n if ('_' in rule) {\n res.push(rule)\n continue\n }\n\n if ('users' in rule) {\n const users = await resolvePeerMany(client, rule.users, toInputUser)\n\n res.push({\n _: rule.allow ? 'inputPrivacyValueAllowUsers' : 'inputPrivacyValueDisallowUsers',\n users,\n })\n continue\n }\n\n if ('chats' in rule) {\n const chats = await resolvePeerMany(client, rule.chats)\n\n res.push({\n _: rule.allow ? 'inputPrivacyValueAllowChatParticipants' : 'inputPrivacyValueDisallowChatParticipants',\n chats: chats.filter(isPresent).map((peer) => {\n if ('channelId' in peer) return peer.channelId\n if ('chatId' in peer) return peer.chatId\n\n throw new Error('UNREACHABLE')\n }),\n })\n continue\n }\n }\n\n return res\n}\n"]}
@@ -1,11 +1,13 @@
1
1
  import { tl } from '@mtcute/tl';
2
2
  import { ITelegramClient } from '../../client.types.js';
3
- import { InputPeerLike } from '../../types/index.js';
3
+ import { InputPeerLike } from '../../types/peers/index.js';
4
4
  /**
5
5
  * Get multiple `InputPeer`s at once,
6
6
  * while also normalizing and removing
7
7
  * peers that can't be normalized to that type.
8
8
  *
9
+ * If a peer was not found, it will be skipped.
10
+ *
9
11
  * Uses async pool internally, with a concurrent limit of 8
10
12
  *
11
13
  * @param peerIds Peer Ids
@@ -15,8 +17,10 @@ export declare function resolvePeerMany<T extends tl.TypeInputPeer | tl.TypeInpu
15
17
  /**
16
18
  * Get multiple `InputPeer`s at once.
17
19
  *
20
+ * If a peer was not found, `null` will be returned instead
21
+ *
18
22
  * Uses async pool internally, with a concurrent limit of 8
19
23
  *
20
24
  * @param peerIds Peer Ids
21
25
  */
22
- export declare function resolvePeerMany(client: ITelegramClient, peerIds: InputPeerLike[]): Promise<tl.TypeInputPeer[]>;
26
+ export declare function resolvePeerMany(client: ITelegramClient, peerIds: InputPeerLike[]): Promise<(tl.TypeInputPeer | null)[]>;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolvePeerMany = void 0;
4
4
  const condition_variable_js_1 = require("../../../utils/condition-variable.js");
5
+ const errors_js_1 = require("../../types/errors.js");
5
6
  const resolve_peer_js_1 = require("./resolve-peer.js");
6
7
  /**
7
8
  * @internal
@@ -11,10 +12,17 @@ async function resolvePeerMany(client, peerIds, normalizer) {
11
12
  const limit = 8;
12
13
  if (peerIds.length < limit) {
13
14
  // no point in using async pool for <limit peers
14
- const res = await Promise.all(peerIds.map((it) => (0, resolve_peer_js_1.resolvePeer)(client, it)));
15
+ const res = await Promise.all(peerIds.map((it) => (0, resolve_peer_js_1.resolvePeer)(client, it).catch((e) => {
16
+ if (e instanceof errors_js_1.MtPeerNotFoundError) {
17
+ return null;
18
+ }
19
+ throw e;
20
+ })));
15
21
  if (!normalizer)
16
22
  return res;
17
23
  for (const value of res) {
24
+ if (!value)
25
+ continue;
18
26
  const norm = normalizer(value);
19
27
  if (norm) {
20
28
  ret.push(norm);
@@ -27,8 +35,17 @@ async function resolvePeerMany(client, peerIds, normalizer) {
27
35
  let nextIdx = 0;
28
36
  let nextWorkerIdx = 0;
29
37
  const fetchNext = async (idx = nextWorkerIdx++) => {
30
- const result = await (0, resolve_peer_js_1.resolvePeer)(client, peerIds[idx]);
31
- buffer[idx] = result;
38
+ try {
39
+ const result = await (0, resolve_peer_js_1.resolvePeer)(client, peerIds[idx]);
40
+ buffer[idx] = result;
41
+ }
42
+ catch (e) {
43
+ if (e instanceof errors_js_1.MtPeerNotFoundError) {
44
+ buffer[idx] = null;
45
+ }
46
+ else
47
+ throw e;
48
+ }
32
49
  if (nextIdx === idx) {
33
50
  cv.notify();
34
51
  }
@@ -51,12 +68,11 @@ async function resolvePeerMany(client, peerIds, normalizer) {
51
68
  const buf = buffer[nextIdx];
52
69
  delete buffer[nextIdx];
53
70
  nextIdx++;
54
- if (!buf)
55
- continue;
56
71
  if (!normalizer) {
57
72
  ret.push(buf);
73
+ continue;
58
74
  }
59
- else {
75
+ if (buf !== null) {
60
76
  const norm = normalizer(buf);
61
77
  if (norm) {
62
78
  ret.push(norm);
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-peer-many.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/resolve-peer-many.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ConditionVariable } from '../../../utils/condition-variable.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike } from '../../types/index.js'\nimport { resolvePeer } from './resolve-peer.js'\n\n/**\n * Get multiple `InputPeer`s at once,\n * while also normalizing and removing\n * peers that can't be normalized to that type.\n *\n * Uses async pool internally, with a concurrent limit of 8\n *\n * @param peerIds Peer Ids\n * @param normalizer Normalization function\n */\nexport async function resolvePeerMany<T extends tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel>(\n client: ITelegramClient,\n peerIds: InputPeerLike[],\n normalizer: (obj: tl.TypeInputPeer) => T | null,\n): Promise<T[]>\n\n/**\n * Get multiple `InputPeer`s at once.\n *\n * Uses async pool internally, with a concurrent limit of 8\n *\n * @param peerIds Peer Ids\n */\nexport async function resolvePeerMany(client: ITelegramClient, peerIds: InputPeerLike[]): Promise<tl.TypeInputPeer[]>\n\n/**\n * @internal\n */\nexport async function resolvePeerMany(\n client: ITelegramClient,\n peerIds: InputPeerLike[],\n normalizer?: (obj: tl.TypeInputPeer) => tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | null,\n): Promise<(tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel)[]> {\n const ret: (tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel)[] = []\n\n const limit = 8\n\n if (peerIds.length < limit) {\n // no point in using async pool for <limit peers\n const res = await Promise.all(peerIds.map((it) => resolvePeer(client, it)))\n\n if (!normalizer) return res\n\n for (const value of res) {\n const norm = normalizer(value)\n\n if (norm) {\n ret.push(norm)\n }\n }\n\n return ret\n }\n\n const cv = new ConditionVariable()\n const buffer: Record<number, tl.TypeInputPeer | null> = {}\n\n let nextIdx = 0\n let nextWorkerIdx = 0\n\n const fetchNext = async (idx = nextWorkerIdx++): Promise<void> => {\n const result = await resolvePeer(client, peerIds[idx])\n\n buffer[idx] = result\n\n if (nextIdx === idx) {\n cv.notify()\n }\n\n if (nextWorkerIdx < peerIds.length) {\n await fetchNext(nextWorkerIdx++)\n }\n }\n\n let error: unknown = undefined\n void Promise.all(Array.from({ length: limit }, (_, i) => fetchNext(i))).catch((e) => {\n client.log.debug('resolvePeerMany errored: %s', e.message)\n error = e\n cv.notify()\n })\n\n while (nextIdx < peerIds.length) {\n await cv.wait()\n\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n if (error) throw error\n\n while (nextIdx in buffer) {\n const buf = buffer[nextIdx]\n delete buffer[nextIdx]\n\n nextIdx++\n\n if (!buf) continue\n\n if (!normalizer) {\n ret.push(buf)\n } else {\n const norm = normalizer(buf)\n\n if (norm) {\n ret.push(norm)\n }\n }\n }\n }\n\n return ret\n}\n"]}
1
+ {"version":3,"file":"resolve-peer-many.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/resolve-peer-many.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ConditionVariable } from '../../../utils/condition-variable.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { MtPeerNotFoundError } from '../../types/errors.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { resolvePeer } from './resolve-peer.js'\n\n/**\n * Get multiple `InputPeer`s at once,\n * while also normalizing and removing\n * peers that can't be normalized to that type.\n *\n * If a peer was not found, it will be skipped.\n *\n * Uses async pool internally, with a concurrent limit of 8\n *\n * @param peerIds Peer Ids\n * @param normalizer Normalization function\n */\nexport async function resolvePeerMany<T extends tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel>(\n client: ITelegramClient,\n peerIds: InputPeerLike[],\n normalizer: (obj: tl.TypeInputPeer) => T | null,\n): Promise<T[]>\n\n/**\n * Get multiple `InputPeer`s at once.\n *\n * If a peer was not found, `null` will be returned instead\n *\n * Uses async pool internally, with a concurrent limit of 8\n *\n * @param peerIds Peer Ids\n */\nexport async function resolvePeerMany(\n client: ITelegramClient,\n peerIds: InputPeerLike[],\n): Promise<(tl.TypeInputPeer | null)[]>\n\n/**\n * @internal\n */\nexport async function resolvePeerMany(\n client: ITelegramClient,\n peerIds: InputPeerLike[],\n normalizer?: (obj: tl.TypeInputPeer) => tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | null,\n): Promise<(tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | null)[]> {\n const ret: (tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | null)[] = []\n\n const limit = 8\n\n if (peerIds.length < limit) {\n // no point in using async pool for <limit peers\n const res = await Promise.all(\n peerIds.map((it) =>\n resolvePeer(client, it).catch((e) => {\n if (e instanceof MtPeerNotFoundError) {\n return null\n }\n throw e\n }),\n ),\n )\n\n if (!normalizer) return res\n\n for (const value of res) {\n if (!value) continue\n const norm = normalizer(value)\n\n if (norm) {\n ret.push(norm)\n }\n }\n\n return ret\n }\n\n const cv = new ConditionVariable()\n const buffer: Record<number, tl.TypeInputPeer | null> = {}\n\n let nextIdx = 0\n let nextWorkerIdx = 0\n\n const fetchNext = async (idx = nextWorkerIdx++): Promise<void> => {\n try {\n const result = await resolvePeer(client, peerIds[idx])\n buffer[idx] = result\n } catch (e) {\n if (e instanceof MtPeerNotFoundError) {\n buffer[idx] = null\n } else throw e\n }\n\n if (nextIdx === idx) {\n cv.notify()\n }\n\n if (nextWorkerIdx < peerIds.length) {\n await fetchNext(nextWorkerIdx++)\n }\n }\n\n let error: unknown = undefined\n void Promise.all(Array.from({ length: limit }, (_, i) => fetchNext(i))).catch((e) => {\n client.log.debug('resolvePeerMany errored: %s', e.message)\n error = e\n cv.notify()\n })\n\n while (nextIdx < peerIds.length) {\n await cv.wait()\n\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n if (error) throw error\n\n while (nextIdx in buffer) {\n const buf = buffer[nextIdx]\n delete buffer[nextIdx]\n\n nextIdx++\n\n if (!normalizer) {\n ret.push(buf)\n continue\n }\n\n if (buf !== null) {\n const norm = normalizer(buf)\n\n if (norm) {\n ret.push(norm)\n }\n }\n }\n }\n\n return ret\n}\n"]}
@@ -59,10 +59,19 @@ async function resolvePeer(client, peerId, force = false) {
59
59
  const fromStorage = await client.storage.peers.getByPhone(peerId);
60
60
  if (fromStorage)
61
61
  return fromStorage;
62
- res = await client.call({
63
- _: 'contacts.resolvePhone',
64
- phone: peerId,
65
- });
62
+ try {
63
+ res = await client.call({
64
+ _: 'contacts.resolvePhone',
65
+ phone: peerId,
66
+ });
67
+ }
68
+ catch (e) {
69
+ if (tl_1.tl.RpcError.is(e, 'PHONE_NOT_OCCUPIED')) {
70
+ throw new errors_js_2.MtPeerNotFoundError(`Peer with phone number ${peerId} was not found`);
71
+ }
72
+ else
73
+ throw e;
74
+ }
66
75
  }
67
76
  else {
68
77
  // username
@@ -71,10 +80,19 @@ async function resolvePeer(client, peerId, force = false) {
71
80
  if (fromStorage)
72
81
  return fromStorage;
73
82
  }
74
- res = await client.call({
75
- _: 'contacts.resolveUsername',
76
- username: peerId,
77
- });
83
+ try {
84
+ res = await client.call({
85
+ _: 'contacts.resolveUsername',
86
+ username: peerId,
87
+ });
88
+ }
89
+ catch (e) {
90
+ if (tl_1.tl.RpcError.is(e, 'USERNAME_NOT_OCCUPIED')) {
91
+ throw new errors_js_2.MtPeerNotFoundError(`Peer with username ${peerId} was not found`);
92
+ }
93
+ else
94
+ throw e;
95
+ }
78
96
  }
79
97
  if (res.peer._ === 'peerUser') {
80
98
  const id = res.peer.userId;
@@ -120,11 +138,12 @@ async function resolvePeer(client, peerId, force = false) {
120
138
  }
121
139
  throw new errors_js_2.MtPeerNotFoundError(`Could not find a peer by ${peerId}`);
122
140
  }
123
- // in some cases, the server allows us to use access_hash=0.
124
- // particularly, when we're a bot or we're referencing a user
125
- // who we have "seen" recently
141
+ // in some cases, the server allows bots to use access_hash=0.
126
142
  // if it's not the case, we'll get an `PEER_ID_INVALID` error anyways
127
143
  const [peerType, bareId] = (0, peer_utils_js_1.parseMarkedPeerId)(peerId);
144
+ if (peerType !== 'chat' && !client.storage.self.getCached(true)?.isBot) {
145
+ throw new errors_js_2.MtPeerNotFoundError(`Peer ${peerId} is not found in local cache`);
146
+ }
128
147
  switch (peerType) {
129
148
  case 'user':
130
149
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-peer.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/resolve-peer.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { getMarkedPeerId, parseMarkedPeerId, toggleChannelIdMark } from '../../../utils/peer-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { MtPeerNotFoundError } from '../../types/errors.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { toInputChannel, toInputPeer, toInputUser } from '../../utils/peer-utils.js'\n\n// @available=both\n/**\n * Get the `InputPeer` of a known peer id.\n * Useful when an `InputPeer` is needed in Raw API.\n *\n * @param peerId The peer identifier that you want to extract the `InputPeer` from.\n * @param force Whether to force re-fetch the peer from the server (only for usernames and phone numbers)\n */\nexport async function resolvePeer(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputPeer> {\n // for convenience we also accept tl and User/Chat objects directly\n if (typeof peerId === 'object') {\n if (tl.isAnyPeer(peerId)) {\n peerId = getMarkedPeerId(peerId)\n } else if ('inputPeer' in peerId) {\n // User | Chat\n peerId = peerId.inputPeer\n } else {\n peerId = toInputPeer(peerId)\n }\n }\n\n if (typeof peerId === 'object') {\n switch (peerId._) {\n case 'mtcute.dummyInputPeerMinUser':\n peerId = peerId.userId\n break\n case 'mtcute.dummyInputPeerMinChannel':\n peerId = toggleChannelIdMark(peerId.channelId)\n break\n default:\n return peerId\n }\n }\n\n if (typeof peerId === 'number' && !force) {\n const fromStorage = await client.storage.peers.getById(peerId)\n if (fromStorage) return fromStorage\n }\n\n if (typeof peerId === 'string') {\n if (peerId === 'self' || peerId === 'me') return { _: 'inputPeerSelf' }\n\n peerId = peerId.replace(/[@+\\s()]/g, '')\n\n let res\n\n if (peerId.match(/^\\d+$/)) {\n // phone number\n const fromStorage = await client.storage.peers.getByPhone(peerId)\n if (fromStorage) return fromStorage\n\n res = await client.call({\n _: 'contacts.resolvePhone',\n phone: peerId,\n })\n } else {\n // username\n if (!force) {\n const fromStorage = await client.storage.peers.getByUsername(peerId)\n if (fromStorage) return fromStorage\n }\n\n res = await client.call({\n _: 'contacts.resolveUsername',\n username: peerId,\n })\n }\n\n if (res.peer._ === 'peerUser') {\n const id = res.peer.userId\n\n const found = res.users.find((it) => it.id === id)\n\n if (found && found._ === 'user') {\n if (!found.accessHash) {\n // no access hash, we can't use it\n // this may happen when bot resolves a username\n // of a user who hasn't started a conversation with it\n throw new MtPeerNotFoundError(\n `Peer (user) with username ${peerId} was found, but it has no access hash`,\n )\n }\n\n return {\n _: 'inputPeerUser',\n userId: found.id,\n accessHash: found.accessHash,\n }\n }\n } else if (res.peer._ === 'peerChannel') {\n const id = res.peer.channelId\n const found = res.chats.find((it) => it.id === id)\n\n if (found) {\n if (!(found._ === 'channel' || found._ === 'channelForbidden')) {\n // chats can't have usernames\n // furthermore, our id is a channel id, so it must be a channel\n // this should never happen, unless Telegram goes crazy\n throw new MtTypeAssertionError('contacts.resolveUsername#chats', 'channel', found._)\n }\n\n if (!found.accessHash) {\n // shouldn't happen? but just in case\n throw new MtPeerNotFoundError(`Peer (channel) with ${peerId} was found, but it has no access hash`)\n }\n\n return {\n _: 'inputPeerChannel',\n channelId: found.id,\n accessHash: found.accessHash,\n }\n }\n } else {\n // chats can't have usernames\n throw new MtTypeAssertionError('contacts.resolveUsername', 'user or channel', res.peer._)\n }\n\n throw new MtPeerNotFoundError(`Could not find a peer by ${peerId}`)\n }\n\n // in some cases, the server allows us to use access_hash=0.\n // particularly, when we're a bot or we're referencing a user\n // who we have \"seen\" recently\n // if it's not the case, we'll get an `PEER_ID_INVALID` error anyways\n const [peerType, bareId] = parseMarkedPeerId(peerId)\n\n switch (peerType) {\n case 'user':\n return {\n _: 'inputPeerUser',\n userId: bareId,\n accessHash: Long.ZERO,\n }\n case 'chat':\n return {\n _: 'inputPeerChat',\n chatId: bareId,\n }\n case 'channel':\n return {\n _: 'inputPeerChannel',\n channelId: bareId,\n accessHash: Long.ZERO,\n }\n }\n}\n\n/**\n * Shorthand for `resolvePeer` that converts the input peer to `InputUser`.\n */\nexport async function resolveUser(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputUser> {\n return toInputUser(await resolvePeer(client, peerId, force), peerId)\n}\n\n/**\n * Shorthand for `resolvePeer` that converts the input peer to `InputChannel`.\n */\nexport async function resolveChannel(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputChannel> {\n return toInputChannel(await resolvePeer(client, peerId, force), peerId)\n}\n"]}
1
+ {"version":3,"file":"resolve-peer.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/resolve-peer.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { getMarkedPeerId, parseMarkedPeerId, toggleChannelIdMark } from '../../../utils/peer-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { MtPeerNotFoundError } from '../../types/errors.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { toInputChannel, toInputPeer, toInputUser } from '../../utils/peer-utils.js'\n\n// @available=both\n/**\n * Get the `InputPeer` of a known peer id.\n * Useful when an `InputPeer` is needed in Raw API.\n *\n * @param peerId The peer identifier that you want to extract the `InputPeer` from.\n * @param force Whether to force re-fetch the peer from the server (only for usernames and phone numbers)\n */\nexport async function resolvePeer(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputPeer> {\n // for convenience we also accept tl and User/Chat objects directly\n if (typeof peerId === 'object') {\n if (tl.isAnyPeer(peerId)) {\n peerId = getMarkedPeerId(peerId)\n } else if ('inputPeer' in peerId) {\n // User | Chat\n peerId = peerId.inputPeer\n } else {\n peerId = toInputPeer(peerId)\n }\n }\n\n if (typeof peerId === 'object') {\n switch (peerId._) {\n case 'mtcute.dummyInputPeerMinUser':\n peerId = peerId.userId\n break\n case 'mtcute.dummyInputPeerMinChannel':\n peerId = toggleChannelIdMark(peerId.channelId)\n break\n default:\n return peerId\n }\n }\n\n if (typeof peerId === 'number' && !force) {\n const fromStorage = await client.storage.peers.getById(peerId)\n if (fromStorage) return fromStorage\n }\n\n if (typeof peerId === 'string') {\n if (peerId === 'self' || peerId === 'me') return { _: 'inputPeerSelf' }\n\n peerId = peerId.replace(/[@+\\s()]/g, '')\n\n let res\n\n if (peerId.match(/^\\d+$/)) {\n // phone number\n const fromStorage = await client.storage.peers.getByPhone(peerId)\n if (fromStorage) return fromStorage\n\n try {\n res = await client.call({\n _: 'contacts.resolvePhone',\n phone: peerId,\n })\n } catch (e) {\n if (tl.RpcError.is(e, 'PHONE_NOT_OCCUPIED')) {\n throw new MtPeerNotFoundError(`Peer with phone number ${peerId} was not found`)\n } else throw e\n }\n } else {\n // username\n if (!force) {\n const fromStorage = await client.storage.peers.getByUsername(peerId)\n if (fromStorage) return fromStorage\n }\n\n try {\n res = await client.call({\n _: 'contacts.resolveUsername',\n username: peerId,\n })\n } catch (e) {\n if (tl.RpcError.is(e, 'USERNAME_NOT_OCCUPIED')) {\n throw new MtPeerNotFoundError(`Peer with username ${peerId} was not found`)\n } else throw e\n }\n }\n\n if (res.peer._ === 'peerUser') {\n const id = res.peer.userId\n\n const found = res.users.find((it) => it.id === id)\n\n if (found && found._ === 'user') {\n if (!found.accessHash) {\n // no access hash, we can't use it\n // this may happen when bot resolves a username\n // of a user who hasn't started a conversation with it\n throw new MtPeerNotFoundError(\n `Peer (user) with username ${peerId} was found, but it has no access hash`,\n )\n }\n\n return {\n _: 'inputPeerUser',\n userId: found.id,\n accessHash: found.accessHash,\n }\n }\n } else if (res.peer._ === 'peerChannel') {\n const id = res.peer.channelId\n const found = res.chats.find((it) => it.id === id)\n\n if (found) {\n if (!(found._ === 'channel' || found._ === 'channelForbidden')) {\n // chats can't have usernames\n // furthermore, our id is a channel id, so it must be a channel\n // this should never happen, unless Telegram goes crazy\n throw new MtTypeAssertionError('contacts.resolveUsername#chats', 'channel', found._)\n }\n\n if (!found.accessHash) {\n // shouldn't happen? but just in case\n throw new MtPeerNotFoundError(`Peer (channel) with ${peerId} was found, but it has no access hash`)\n }\n\n return {\n _: 'inputPeerChannel',\n channelId: found.id,\n accessHash: found.accessHash,\n }\n }\n } else {\n // chats can't have usernames\n throw new MtTypeAssertionError('contacts.resolveUsername', 'user or channel', res.peer._)\n }\n\n throw new MtPeerNotFoundError(`Could not find a peer by ${peerId}`)\n }\n\n // in some cases, the server allows bots to use access_hash=0.\n // if it's not the case, we'll get an `PEER_ID_INVALID` error anyways\n const [peerType, bareId] = parseMarkedPeerId(peerId)\n\n if (peerType !== 'chat' && !client.storage.self.getCached(true)?.isBot) {\n throw new MtPeerNotFoundError(`Peer ${peerId} is not found in local cache`)\n }\n\n switch (peerType) {\n case 'user':\n return {\n _: 'inputPeerUser',\n userId: bareId,\n accessHash: Long.ZERO,\n }\n case 'chat':\n return {\n _: 'inputPeerChat',\n chatId: bareId,\n }\n case 'channel':\n return {\n _: 'inputPeerChannel',\n channelId: bareId,\n accessHash: Long.ZERO,\n }\n }\n}\n\n/**\n * Shorthand for `resolvePeer` that converts the input peer to `InputUser`.\n */\nexport async function resolveUser(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputUser> {\n return toInputUser(await resolvePeer(client, peerId, force), peerId)\n}\n\n/**\n * Shorthand for `resolvePeer` that converts the input peer to `InputChannel`.\n */\nexport async function resolveChannel(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputChannel> {\n return toInputChannel(await resolvePeer(client, peerId, force), peerId)\n}\n"]}
@@ -80,6 +80,7 @@ export { importContacts } from './methods/contacts/import-contacts.js';
80
80
  export { createFolder } from './methods/dialogs/create-folder.js';
81
81
  export { deleteFolder } from './methods/dialogs/delete-folder.js';
82
82
  export { editFolder } from './methods/dialogs/edit-folder.js';
83
+ export { findDialogs } from './methods/dialogs/find-dialogs.js';
83
84
  export { findFolder } from './methods/dialogs/find-folder.js';
84
85
  export { getFolders } from './methods/dialogs/get-folders.js';
85
86
  export { getPeerDialogs } from './methods/dialogs/get-peer-dialogs.js';
@@ -128,8 +129,10 @@ export type { ForwardMessageOptions } from './methods/messages/forward-messages.
128
129
  export { forwardMessagesById } from './methods/messages/forward-messages.js';
129
130
  export { forwardMessages } from './methods/messages/forward-messages.js';
130
131
  export { getAllScheduledMessages } from './methods/messages/get-all-scheduled-messages.js';
132
+ export { getAvailableMessageEffects } from './methods/messages/get-available-effects.js';
131
133
  export { getCallbackQueryMessage } from './methods/messages/get-callback-query-message.js';
132
134
  export { getDiscussionMessage } from './methods/messages/get-discussion-message.js';
135
+ export { getFactCheck } from './methods/messages/get-fact-check.js';
133
136
  export type { GetHistoryOffset } from './methods/messages/get-history.js';
134
137
  export { getHistory } from './methods/messages/get-history.js';
135
138
  export { getMessageByLink } from './methods/messages/get-message-by-link.js';
@@ -151,6 +154,9 @@ export { readHistory } from './methods/messages/read-history.js';
151
154
  export { readReactions } from './methods/messages/read-reactions.js';
152
155
  export type { SearchGlobalOffset } from './methods/messages/search-global.js';
153
156
  export { searchGlobal } from './methods/messages/search-global.js';
157
+ export type { SearchHashtagOffset } from './methods/messages/search-hashtag.js';
158
+ export { searchHashtag } from './methods/messages/search-hashtag.js';
159
+ export { iterSearchHashtag } from './methods/messages/search-hashtag.js';
154
160
  export type { SearchMessagesOffset } from './methods/messages/search-messages.js';
155
161
  export { searchMessages } from './methods/messages/search-messages.js';
156
162
  export { answerText } from './methods/messages/send-answer.js';
@@ -7,10 +7,11 @@ if (typeof globalThis !== 'undefined' && !globalThis._MTCUTE_CJS_DEPRECATION_WAR
7
7
  "use strict";
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.iterChatEventLog = exports.getSimilarChannels = exports.getNearbyChats = exports.getFullChat = exports.getChatPreview = exports.getChatMembers = exports.getChatMember = exports.getChatEventLog = exports.getChat = exports.editAdminRights = exports.deleteUserHistory = exports.deleteHistory = exports.deleteGroup = exports.deleteChatPhoto = exports.deleteChannel = exports.createSupergroup = exports.createGroup = exports.createChannel = exports.banChatMember = exports.archiveChats = exports.addChatMembers = exports.setMyDefaultRights = exports.setMyCommands = exports.setInlineGameScore = exports.setGameScore = exports.setBotMenuButton = exports.setBotInfo = exports.getMyCommands = exports.getInlineGameHighScores = exports.getGameHighScores = exports.getCallbackAnswer = exports.getBotMenuButton = exports.getBotInfo = exports.deleteMyCommands = exports.answerPreCheckoutQuery = exports.answerInlineQuery = exports.answerCallbackQuery = exports.isSelfPeer = exports.startTest = exports.start = exports.signInBot = exports.signIn = exports.sendRecoveryCode = exports.sendCode = exports.run = exports.resendCode = exports.recoverPassword = exports.logOut = exports.getPasswordHint = exports.checkPassword = void 0;
10
- exports.reorderPinnedForumTopics = exports.iterForumTopics = exports.getForumTopicsById = exports.getForumTopics = exports.editForumTopic = exports.deleteForumTopicHistory = exports.createForumTopic = exports.uploadMedia = exports.uploadFile = exports._normalizeInputMedia = exports._normalizeInputFile = exports.downloadAsStream = exports.downloadAsIterable = exports.downloadAsBuffer = exports.setFoldersOrder = exports.iterDialogs = exports.getPeerDialogs = exports.getFolders = exports.findFolder = exports.editFolder = exports.deleteFolder = exports.createFolder = exports.importContacts = exports.getContacts = exports.deleteContacts = exports.addContact = exports.unbanChatMember = exports.unarchiveChats = exports.toggleJoinToSend = exports.toggleJoinRequests = exports.toggleFragmentUsername = exports.toggleContentProtection = exports.setSlowMode = exports.setChatUsername = exports.setChatTtl = exports.setChatTitle = exports.setChatPhoto = exports.setChatDescription = exports.setChatDefaultPermissions = exports.setChatColor = exports.saveDraft = exports.restrictChatMember = exports.reorderUsernames = exports.closeChat = exports.openChat = exports.markChatUnread = exports.leaveChat = exports.kickChatMember = exports.joinChat = exports.iterChatMembers = void 0;
11
- exports.commentText = exports.answerMediaGroup = exports.answerMedia = exports.answerText = exports.searchMessages = exports.searchGlobal = exports.readReactions = exports.readHistory = exports.pinMessage = exports.iterSearchMessages = exports.iterSearchGlobal = exports.iterReactionUsers = exports.iterHistory = exports.getScheduledMessages = exports.getReplyTo = exports.getReactionUsers = exports.getMessagesUnsafe = exports.getMessages = exports.getMessageReactions = exports.getMessageReactionsById = exports.getMessageGroup = exports.getMessageByLink = exports.getHistory = exports.getDiscussionMessage = exports.getCallbackQueryMessage = exports.getAllScheduledMessages = exports.forwardMessages = exports.forwardMessagesById = exports.editMessage = exports.editInlineMessage = exports.deleteScheduledMessages = exports.deleteMessages = exports.deleteMessagesById = exports.closePoll = exports.revokeInviteLink = exports.iterInviteLinks = exports.iterInviteLinkMembers = exports.hideJoinRequest = exports.hideAllJoinRequests = exports.getPrimaryInviteLink = exports.getInviteLinks = exports.getInviteLinkMembers = exports.getInviteLink = exports.exportInviteLink = exports.editInviteLink = exports.createInviteLink = exports.toggleGeneralTopicHidden = exports.toggleForumTopicPinned = exports.toggleForumTopicClosed = exports.toggleForum = void 0;
12
- exports.getMyStickerSets = exports.getInstalledStickers = exports.getCustomEmojisFromMessages = exports.getCustomEmojis = exports.deleteStickerFromSet = exports.createStickerSet = exports.addStickerToSet = exports.setBusinessWorkHours = exports.setBusinessIntro = exports.iterBoosters = exports.getMyBoostSlots = exports.getBusinessConnection = exports.getBusinessChatLinks = exports.getBoosts = exports.getBoostStats = exports.deleteBusinessChatLink = exports.editBusinessChatLink = exports.createBusinessChatLink = exports.canApplyBoost = exports.applyBoost = exports.removeCloudPassword = exports.cancelPasswordEmail = exports.resendPasswordEmail = exports.verifyPasswordEmail = exports.enableCloudPassword = exports.changeCloudPassword = exports._normalizePrivacyRules = exports.initTakeoutSession = exports.getCollectibleInfo = exports.unpinMessage = exports.unpinAllMessages = exports.translateText = exports.translateMessage = exports.sendVote = exports.sendTyping = exports.sendText = exports.sendScheduled = exports.replyMediaGroup = exports.replyMedia = exports.replyText = exports.sendReaction = exports.quoteWithMediaGroup = exports.quoteWithMedia = exports.quoteWithText = exports.sendMediaGroup = exports.sendMedia = exports.sendCopyGroup = exports.sendCopy = exports.commentMediaGroup = exports.commentMedia = void 0;
13
- exports.updateProfile = exports.unblockUser = exports.setOffline = exports.setMyUsername = exports.setMyProfilePhoto = exports.setMyEmojiStatus = exports.setMyBirthday = exports.setGlobalTtl = exports.resolvePeerMany = exports.resolveChannel = exports.resolveUser = exports.resolvePeer = exports.iterProfilePhotos = exports.getUsers = exports.getProfilePhotos = exports.getProfilePhoto = exports.getMyUsername = exports.getMe = exports.getGlobalTtl = exports.getCommonChats = exports.editCloseFriends = exports.editCloseFriendsRaw = exports.deleteProfilePhotos = exports.blockUser = exports.toggleStoriesPinned = exports.togglePeerStoriesArchived = exports.sendStoryReaction = exports.sendStory = exports.reportStory = exports.readStories = exports.iterStoryViewers = exports.iterProfileStories = exports.iterAllStories = exports.incrementStoriesViews = exports.hideMyStoriesViews = exports.getStoryViewers = exports.getStoryLink = exports.getStoriesInteractions = exports.getStoriesById = exports.getProfileStories = exports.getPeerStories = exports.getAllStories = exports.editStory = exports.deleteStories = exports.canSendStory = exports.setStickerSetThumb = exports.setChatStickerSet = exports.replaceStickerInSet = exports.moveStickerInSet = exports.getStickerSet = void 0;
10
+ exports.iterForumTopics = exports.getForumTopicsById = exports.getForumTopics = exports.editForumTopic = exports.deleteForumTopicHistory = exports.createForumTopic = exports.uploadMedia = exports.uploadFile = exports._normalizeInputMedia = exports._normalizeInputFile = exports.downloadAsStream = exports.downloadAsIterable = exports.downloadAsBuffer = exports.setFoldersOrder = exports.iterDialogs = exports.getPeerDialogs = exports.getFolders = exports.findFolder = exports.findDialogs = exports.editFolder = exports.deleteFolder = exports.createFolder = exports.importContacts = exports.getContacts = exports.deleteContacts = exports.addContact = exports.unbanChatMember = exports.unarchiveChats = exports.toggleJoinToSend = exports.toggleJoinRequests = exports.toggleFragmentUsername = exports.toggleContentProtection = exports.setSlowMode = exports.setChatUsername = exports.setChatTtl = exports.setChatTitle = exports.setChatPhoto = exports.setChatDescription = exports.setChatDefaultPermissions = exports.setChatColor = exports.saveDraft = exports.restrictChatMember = exports.reorderUsernames = exports.closeChat = exports.openChat = exports.markChatUnread = exports.leaveChat = exports.kickChatMember = exports.joinChat = exports.iterChatMembers = void 0;
11
+ exports.iterSearchHashtag = exports.searchHashtag = exports.searchGlobal = exports.readReactions = exports.readHistory = exports.pinMessage = exports.iterSearchMessages = exports.iterSearchGlobal = exports.iterReactionUsers = exports.iterHistory = exports.getScheduledMessages = exports.getReplyTo = exports.getReactionUsers = exports.getMessagesUnsafe = exports.getMessages = exports.getMessageReactions = exports.getMessageReactionsById = exports.getMessageGroup = exports.getMessageByLink = exports.getHistory = exports.getFactCheck = exports.getDiscussionMessage = exports.getCallbackQueryMessage = exports.getAvailableMessageEffects = exports.getAllScheduledMessages = exports.forwardMessages = exports.forwardMessagesById = exports.editMessage = exports.editInlineMessage = exports.deleteScheduledMessages = exports.deleteMessages = exports.deleteMessagesById = exports.closePoll = exports.revokeInviteLink = exports.iterInviteLinks = exports.iterInviteLinkMembers = exports.hideJoinRequest = exports.hideAllJoinRequests = exports.getPrimaryInviteLink = exports.getInviteLinks = exports.getInviteLinkMembers = exports.getInviteLink = exports.exportInviteLink = exports.editInviteLink = exports.createInviteLink = exports.toggleGeneralTopicHidden = exports.toggleForumTopicPinned = exports.toggleForumTopicClosed = exports.toggleForum = exports.reorderPinnedForumTopics = void 0;
12
+ exports.createStickerSet = exports.addStickerToSet = exports.setBusinessWorkHours = exports.setBusinessIntro = exports.iterBoosters = exports.getMyBoostSlots = exports.getBusinessConnection = exports.getBusinessChatLinks = exports.getBoosts = exports.getBoostStats = exports.deleteBusinessChatLink = exports.editBusinessChatLink = exports.createBusinessChatLink = exports.canApplyBoost = exports.applyBoost = exports.removeCloudPassword = exports.cancelPasswordEmail = exports.resendPasswordEmail = exports.verifyPasswordEmail = exports.enableCloudPassword = exports.changeCloudPassword = exports._normalizePrivacyRules = exports.initTakeoutSession = exports.getCollectibleInfo = exports.unpinMessage = exports.unpinAllMessages = exports.translateText = exports.translateMessage = exports.sendVote = exports.sendTyping = exports.sendText = exports.sendScheduled = exports.replyMediaGroup = exports.replyMedia = exports.replyText = exports.sendReaction = exports.quoteWithMediaGroup = exports.quoteWithMedia = exports.quoteWithText = exports.sendMediaGroup = exports.sendMedia = exports.sendCopyGroup = exports.sendCopy = exports.commentMediaGroup = exports.commentMedia = exports.commentText = exports.answerMediaGroup = exports.answerMedia = exports.answerText = exports.searchMessages = void 0;
13
+ exports.setMyEmojiStatus = exports.setMyBirthday = exports.setGlobalTtl = exports.resolvePeerMany = exports.resolveChannel = exports.resolveUser = exports.resolvePeer = exports.iterProfilePhotos = exports.getUsers = exports.getProfilePhotos = exports.getProfilePhoto = exports.getMyUsername = exports.getMe = exports.getGlobalTtl = exports.getCommonChats = exports.editCloseFriends = exports.editCloseFriendsRaw = exports.deleteProfilePhotos = exports.blockUser = exports.toggleStoriesPinned = exports.togglePeerStoriesArchived = exports.sendStoryReaction = exports.sendStory = exports.reportStory = exports.readStories = exports.iterStoryViewers = exports.iterProfileStories = exports.iterAllStories = exports.incrementStoriesViews = exports.hideMyStoriesViews = exports.getStoryViewers = exports.getStoryLink = exports.getStoriesInteractions = exports.getStoriesById = exports.getProfileStories = exports.getPeerStories = exports.getAllStories = exports.editStory = exports.deleteStories = exports.canSendStory = exports.setStickerSetThumb = exports.setChatStickerSet = exports.replaceStickerInSet = exports.moveStickerInSet = exports.getStickerSet = exports.getMyStickerSets = exports.getInstalledStickers = exports.getCustomEmojisFromMessages = exports.getCustomEmojis = exports.deleteStickerFromSet = void 0;
14
+ exports.updateProfile = exports.unblockUser = exports.setOffline = exports.setMyUsername = exports.setMyProfilePhoto = void 0;
14
15
  /* THIS FILE WAS AUTO-GENERATED */
15
16
  var check_password_js_1 = require("./methods/auth/check-password.js");
16
17
  Object.defineProperty(exports, "checkPassword", { enumerable: true, get: function () { return check_password_js_1.checkPassword; } });
@@ -174,6 +175,8 @@ var delete_folder_js_1 = require("./methods/dialogs/delete-folder.js");
174
175
  Object.defineProperty(exports, "deleteFolder", { enumerable: true, get: function () { return delete_folder_js_1.deleteFolder; } });
175
176
  var edit_folder_js_1 = require("./methods/dialogs/edit-folder.js");
176
177
  Object.defineProperty(exports, "editFolder", { enumerable: true, get: function () { return edit_folder_js_1.editFolder; } });
178
+ var find_dialogs_js_1 = require("./methods/dialogs/find-dialogs.js");
179
+ Object.defineProperty(exports, "findDialogs", { enumerable: true, get: function () { return find_dialogs_js_1.findDialogs; } });
177
180
  var find_folder_js_1 = require("./methods/dialogs/find-folder.js");
178
181
  Object.defineProperty(exports, "findFolder", { enumerable: true, get: function () { return find_folder_js_1.findFolder; } });
179
182
  var get_folders_js_1 = require("./methods/dialogs/get-folders.js");
@@ -262,10 +265,14 @@ var forward_messages_js_2 = require("./methods/messages/forward-messages.js");
262
265
  Object.defineProperty(exports, "forwardMessages", { enumerable: true, get: function () { return forward_messages_js_2.forwardMessages; } });
263
266
  var get_all_scheduled_messages_js_1 = require("./methods/messages/get-all-scheduled-messages.js");
264
267
  Object.defineProperty(exports, "getAllScheduledMessages", { enumerable: true, get: function () { return get_all_scheduled_messages_js_1.getAllScheduledMessages; } });
268
+ var get_available_effects_js_1 = require("./methods/messages/get-available-effects.js");
269
+ Object.defineProperty(exports, "getAvailableMessageEffects", { enumerable: true, get: function () { return get_available_effects_js_1.getAvailableMessageEffects; } });
265
270
  var get_callback_query_message_js_1 = require("./methods/messages/get-callback-query-message.js");
266
271
  Object.defineProperty(exports, "getCallbackQueryMessage", { enumerable: true, get: function () { return get_callback_query_message_js_1.getCallbackQueryMessage; } });
267
272
  var get_discussion_message_js_1 = require("./methods/messages/get-discussion-message.js");
268
273
  Object.defineProperty(exports, "getDiscussionMessage", { enumerable: true, get: function () { return get_discussion_message_js_1.getDiscussionMessage; } });
274
+ var get_fact_check_js_1 = require("./methods/messages/get-fact-check.js");
275
+ Object.defineProperty(exports, "getFactCheck", { enumerable: true, get: function () { return get_fact_check_js_1.getFactCheck; } });
269
276
  var get_history_js_1 = require("./methods/messages/get-history.js");
270
277
  Object.defineProperty(exports, "getHistory", { enumerable: true, get: function () { return get_history_js_1.getHistory; } });
271
278
  var get_message_by_link_js_1 = require("./methods/messages/get-message-by-link.js");
@@ -302,6 +309,10 @@ var read_reactions_js_1 = require("./methods/messages/read-reactions.js");
302
309
  Object.defineProperty(exports, "readReactions", { enumerable: true, get: function () { return read_reactions_js_1.readReactions; } });
303
310
  var search_global_js_1 = require("./methods/messages/search-global.js");
304
311
  Object.defineProperty(exports, "searchGlobal", { enumerable: true, get: function () { return search_global_js_1.searchGlobal; } });
312
+ var search_hashtag_js_1 = require("./methods/messages/search-hashtag.js");
313
+ Object.defineProperty(exports, "searchHashtag", { enumerable: true, get: function () { return search_hashtag_js_1.searchHashtag; } });
314
+ var search_hashtag_js_2 = require("./methods/messages/search-hashtag.js");
315
+ Object.defineProperty(exports, "iterSearchHashtag", { enumerable: true, get: function () { return search_hashtag_js_2.iterSearchHashtag; } });
305
316
  var search_messages_js_1 = require("./methods/messages/search-messages.js");
306
317
  Object.defineProperty(exports, "searchMessages", { enumerable: true, get: function () { return search_messages_js_1.searchMessages; } });
307
318
  var send_answer_js_1 = require("./methods/messages/send-answer.js");