@mtcute/core 0.13.0 → 0.13.2

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 (91) hide show
  1. package/cjs/highlevel/base.js +1 -1
  2. package/cjs/highlevel/base.js.map +1 -1
  3. package/cjs/highlevel/client.d.ts +22 -1
  4. package/cjs/highlevel/client.js +8 -0
  5. package/cjs/highlevel/client.js.map +1 -1
  6. package/cjs/highlevel/methods/_imports.js.map +1 -1
  7. package/cjs/highlevel/methods/chats/get-nearby-chats.js +1 -1
  8. package/cjs/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
  9. package/cjs/highlevel/methods/chats/open-chat.d.ts +4 -0
  10. package/cjs/highlevel/methods/chats/open-chat.js +4 -0
  11. package/cjs/highlevel/methods/chats/open-chat.js.map +1 -1
  12. package/cjs/highlevel/methods/dialogs/get-chatlist-preview.d.ts +8 -0
  13. package/cjs/highlevel/methods/dialogs/get-chatlist-preview.js +18 -0
  14. package/cjs/highlevel/methods/dialogs/get-chatlist-preview.js.map +1 -0
  15. package/cjs/highlevel/methods/dialogs/iter-dialogs.js +52 -3
  16. package/cjs/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
  17. package/cjs/highlevel/methods/dialogs/join-chatlist.d.ts +15 -0
  18. package/cjs/highlevel/methods/dialogs/join-chatlist.js +42 -0
  19. package/cjs/highlevel/methods/dialogs/join-chatlist.js.map +1 -0
  20. package/cjs/highlevel/methods/messages/get-message-reactions.js +1 -0
  21. package/cjs/highlevel/methods/messages/get-message-reactions.js.map +1 -1
  22. package/cjs/highlevel/methods/premium/get-business-connection.js +1 -0
  23. package/cjs/highlevel/methods/premium/get-business-connection.js.map +1 -1
  24. package/cjs/highlevel/methods/users/set-offline.js +1 -3
  25. package/cjs/highlevel/methods/users/set-offline.js.map +1 -1
  26. package/cjs/highlevel/methods.d.ts +2 -0
  27. package/cjs/highlevel/methods.js +9 -5
  28. package/cjs/highlevel/methods.js.map +1 -1
  29. package/cjs/highlevel/types/bots/keyboards/index.d.ts +1 -0
  30. package/cjs/highlevel/types/bots/keyboards/index.js +1 -0
  31. package/cjs/highlevel/types/bots/keyboards/index.js.map +1 -1
  32. package/cjs/highlevel/types/peers/chat.d.ts +2 -0
  33. package/cjs/highlevel/types/peers/chat.js +4 -0
  34. package/cjs/highlevel/types/peers/chat.js.map +1 -1
  35. package/cjs/highlevel/types/peers/chatlist-preview.d.ts +21 -0
  36. package/cjs/highlevel/types/peers/chatlist-preview.js +49 -0
  37. package/cjs/highlevel/types/peers/chatlist-preview.js.map +1 -0
  38. package/cjs/highlevel/types/peers/index.d.ts +1 -0
  39. package/cjs/highlevel/types/peers/index.js +1 -0
  40. package/cjs/highlevel/types/peers/index.js.map +1 -1
  41. package/cjs/network/network-manager.js +2 -2
  42. package/cjs/network/network-manager.js.map +1 -1
  43. package/cjs/utils/links/misc.d.ts +6 -0
  44. package/cjs/utils/links/misc.js +24 -1
  45. package/cjs/utils/links/misc.js.map +1 -1
  46. package/esm/highlevel/base.js +1 -1
  47. package/esm/highlevel/base.js.map +1 -1
  48. package/esm/highlevel/client.d.ts +22 -1
  49. package/esm/highlevel/client.js +8 -0
  50. package/esm/highlevel/client.js.map +1 -1
  51. package/esm/highlevel/methods/_imports.js.map +1 -1
  52. package/esm/highlevel/methods/chats/get-nearby-chats.js +1 -1
  53. package/esm/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
  54. package/esm/highlevel/methods/chats/open-chat.d.ts +4 -0
  55. package/esm/highlevel/methods/chats/open-chat.js +4 -0
  56. package/esm/highlevel/methods/chats/open-chat.js.map +1 -1
  57. package/esm/highlevel/methods/dialogs/get-chatlist-preview.d.ts +8 -0
  58. package/esm/highlevel/methods/dialogs/get-chatlist-preview.js +14 -0
  59. package/esm/highlevel/methods/dialogs/get-chatlist-preview.js.map +1 -0
  60. package/esm/highlevel/methods/dialogs/iter-dialogs.js +53 -4
  61. package/esm/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
  62. package/esm/highlevel/methods/dialogs/join-chatlist.d.ts +15 -0
  63. package/esm/highlevel/methods/dialogs/join-chatlist.js +38 -0
  64. package/esm/highlevel/methods/dialogs/join-chatlist.js.map +1 -0
  65. package/esm/highlevel/methods/messages/get-message-reactions.js +1 -0
  66. package/esm/highlevel/methods/messages/get-message-reactions.js.map +1 -1
  67. package/esm/highlevel/methods/premium/get-business-connection.js +1 -0
  68. package/esm/highlevel/methods/premium/get-business-connection.js.map +1 -1
  69. package/esm/highlevel/methods/users/set-offline.js +1 -3
  70. package/esm/highlevel/methods/users/set-offline.js.map +1 -1
  71. package/esm/highlevel/methods.d.ts +2 -0
  72. package/esm/highlevel/methods.js +2 -0
  73. package/esm/highlevel/methods.js.map +1 -1
  74. package/esm/highlevel/types/bots/keyboards/index.d.ts +1 -0
  75. package/esm/highlevel/types/bots/keyboards/index.js +1 -0
  76. package/esm/highlevel/types/bots/keyboards/index.js.map +1 -1
  77. package/esm/highlevel/types/peers/chat.d.ts +2 -0
  78. package/esm/highlevel/types/peers/chat.js +4 -0
  79. package/esm/highlevel/types/peers/chat.js.map +1 -1
  80. package/esm/highlevel/types/peers/chatlist-preview.d.ts +21 -0
  81. package/esm/highlevel/types/peers/chatlist-preview.js +46 -0
  82. package/esm/highlevel/types/peers/chatlist-preview.js.map +1 -0
  83. package/esm/highlevel/types/peers/index.d.ts +1 -0
  84. package/esm/highlevel/types/peers/index.js +1 -0
  85. package/esm/highlevel/types/peers/index.js.map +1 -1
  86. package/esm/network/network-manager.js +2 -2
  87. package/esm/network/network-manager.js.map +1 -1
  88. package/esm/utils/links/misc.d.ts +6 -0
  89. package/esm/utils/links/misc.js +23 -0
  90. package/esm/utils/links/misc.js.map +1 -1
  91. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"_imports.js","sourceRoot":"","sources":["../../../../src/highlevel/methods/_imports.ts"],"names":[],"mappings":";AAAA,sDAAsD","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n\n// @copy\nimport { tdFileId } from '@mtcute/file-id'\n// @copy\nimport { tl } from '@mtcute/tl'\n\n// @copy\nimport { RpcCallOptions } from '../../network/index.js'\n// @copy\nimport { MaybeArray, MaybePromise, MtUnsupportedError, PartialExcept, PartialOnly } from '../../types/index.js'\n// @copy\nimport { BaseTelegramClient, BaseTelegramClientOptions } from '../base.js'\n// @copy\nimport { ITelegramClient } from '../client.types.js'\n// @copy\nimport {\n AllStories,\n ArrayPaginated,\n ArrayWithTotal,\n Boost,\n BoostSlot,\n BoostStats,\n BotChatJoinRequestUpdate,\n BotCommands,\n BotReactionCountUpdate,\n BotReactionUpdate,\n BotStoppedUpdate,\n BusinessChatLink,\n BusinessConnection,\n BusinessMessage,\n BusinessWorkHoursDay,\n CallbackQuery,\n Chat,\n ChatEvent,\n ChatInviteLink,\n ChatInviteLinkMember,\n ChatJoinRequestUpdate,\n ChatMember,\n ChatMemberUpdate,\n ChatPreview,\n ChosenInlineResult,\n CollectibleInfo,\n DeleteBusinessMessageUpdate,\n DeleteMessageUpdate,\n DeleteStoryUpdate,\n Dialog,\n FactCheck,\n FileDownloadLocation,\n FileDownloadParameters,\n ForumTopic,\n FullChat,\n GameHighScore,\n HistoryReadUpdate,\n InlineCallbackQuery,\n InlineQuery,\n InputChatEventFilters,\n InputDialogFolder,\n InputFileLike,\n InputInlineResult,\n InputMediaLike,\n InputMediaSticker,\n InputMessageId,\n InputPeerLike,\n InputPrivacyRule,\n InputReaction,\n InputStickerSet,\n InputStickerSetItem,\n InputText,\n MaybeDynamic,\n Message,\n MessageEffect,\n MessageMedia,\n MessageReactions,\n ParametersSkip2,\n ParsedUpdate,\n PeerReaction,\n PeersIndex,\n PeerStories,\n Photo,\n Poll,\n PollUpdate,\n PollVoteUpdate,\n PreCheckoutQuery,\n RawDocument,\n ReplyMarkup,\n SentCode,\n Sticker,\n StickerSet,\n StickerSourceType,\n StickerType,\n StoriesStealthMode,\n Story,\n StoryInteractions,\n StoryUpdate,\n StoryViewer,\n StoryViewersList,\n TakeoutSession,\n TextWithEntities,\n TypingStatus,\n UploadedFile,\n UploadFileLike,\n User,\n UserStatusUpdate,\n UserTypingUpdate,\n} from '../types/index.js'\n// @copy\nimport { StringSessionData } from '../utils/string-session.js'\n"]}
1
+ {"version":3,"file":"_imports.js","sourceRoot":"","sources":["../../../../src/highlevel/methods/_imports.ts"],"names":[],"mappings":";AAAA,sDAAsD","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n\n// @copy\nimport { tdFileId } from '@mtcute/file-id'\n// @copy\nimport { tl } from '@mtcute/tl'\n\n// @copy\nimport { RpcCallOptions } from '../../network/index.js'\n// @copy\nimport { MaybeArray, MaybePromise, MtUnsupportedError, PartialExcept, PartialOnly } from '../../types/index.js'\n// @copy\nimport { BaseTelegramClient, BaseTelegramClientOptions } from '../base.js'\n// @copy\nimport { ITelegramClient } from '../client.types.js'\n// @copy\nimport {\n AllStories,\n ArrayPaginated,\n ArrayWithTotal,\n Boost,\n BoostSlot,\n BoostStats,\n BotChatJoinRequestUpdate,\n BotCommands,\n BotReactionCountUpdate,\n BotReactionUpdate,\n BotStoppedUpdate,\n BusinessChatLink,\n BusinessConnection,\n BusinessMessage,\n BusinessWorkHoursDay,\n CallbackQuery,\n Chat,\n ChatEvent,\n ChatInviteLink,\n ChatInviteLinkMember,\n ChatJoinRequestUpdate,\n ChatlistPreview,\n ChatMember,\n ChatMemberUpdate,\n ChatPreview,\n ChosenInlineResult,\n CollectibleInfo,\n DeleteBusinessMessageUpdate,\n DeleteMessageUpdate,\n DeleteStoryUpdate,\n Dialog,\n FactCheck,\n FileDownloadLocation,\n FileDownloadParameters,\n ForumTopic,\n FullChat,\n GameHighScore,\n HistoryReadUpdate,\n InlineCallbackQuery,\n InlineQuery,\n InputChatEventFilters,\n InputDialogFolder,\n InputFileLike,\n InputInlineResult,\n InputMediaLike,\n InputMediaSticker,\n InputMessageId,\n InputPeerLike,\n InputPrivacyRule,\n InputReaction,\n InputStickerSet,\n InputStickerSetItem,\n InputText,\n MaybeDynamic,\n Message,\n MessageEffect,\n MessageMedia,\n MessageReactions,\n ParametersSkip2,\n ParsedUpdate,\n PeerReaction,\n PeersIndex,\n PeerStories,\n Photo,\n Poll,\n PollUpdate,\n PollVoteUpdate,\n PreCheckoutQuery,\n RawDocument,\n ReplyMarkup,\n SentCode,\n Sticker,\n StickerSet,\n StickerSourceType,\n StickerType,\n StoriesStealthMode,\n Story,\n StoryInteractions,\n StoryUpdate,\n StoryViewer,\n StoryViewersList,\n TakeoutSession,\n TextWithEntities,\n TypingStatus,\n UploadedFile,\n UploadFileLike,\n User,\n UserStatusUpdate,\n UserTypingUpdate,\n} from '../types/index.js'\n// @copy\nimport { StringSessionData } from '../utils/string-session.js'\n"]}
@@ -21,7 +21,7 @@ async function getNearbyChats(client, latitude, longitude) {
21
21
  },
22
22
  });
23
23
  (0, utils_js_1.assertIsUpdatesGroup)('contacts.getLocated', res);
24
- // client.handleClientUpdate(res, true)
24
+ client.handleClientUpdate(res, true);
25
25
  if (!res.updates.length)
26
26
  return [];
27
27
  (0, type_assertions_js_1.assertTypeIs)('contacts.getLocated (@ .updates[0])', res.updates[0], 'updatePeerLocated');
@@ -1 +1 @@
1
- {"version":3,"file":"get-nearby-chats.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/chats/get-nearby-chats.ts"],"names":[],"mappings":";;;AAEA,gEAA8D;AAC9D,0EAAgE;AAEhE,mDAA2C;AAC3C,qDAA6D;AAE7D;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAAC,MAAuB,EAAE,QAAgB,EAAE,SAAiB;IAC7F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,qBAAqB;QACxB,QAAQ,EAAE;YACN,CAAC,EAAE,eAAe;YAClB,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,SAAS;SAClB;KACJ,CAAC,CAAA;IAEF,IAAA,+BAAoB,EAAC,qBAAqB,EAAE,GAAG,CAAC,CAAA;IAChD,uCAAuC;IAEvC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAElC,IAAA,iCAAY,EAAC,qCAAqC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAExF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,eAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAEjD,MAAM,KAAK,GAAyB,EAAE,CAAA;IACtC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAEvC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,IAAI,IAAI,CAAC,CAAC,KAAK,iBAAiB;YAAE,OAAM;QAExC,MAAM,EAAE,GAAG,IAAA,+BAAe,EAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAErC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,EAAE,CAAsB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC5D,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AAChB,CAAC;AAjCD,wCAiCC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { getMarkedPeerId } from '../../../utils/peer-utils.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { Chat } from '../../types/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\n\n/**\n * Get nearby chats\n *\n * @param latitude Latitude of the location\n * @param longitude Longitude of the location\n */\nexport async function getNearbyChats(client: ITelegramClient, latitude: number, longitude: number): Promise<Chat[]> {\n const res = await client.call({\n _: 'contacts.getLocated',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: latitude,\n long: longitude,\n },\n })\n\n assertIsUpdatesGroup('contacts.getLocated', res)\n // client.handleClientUpdate(res, true)\n\n if (!res.updates.length) return []\n\n assertTypeIs('contacts.getLocated (@ .updates[0])', res.updates[0], 'updatePeerLocated')\n\n const chats = res.chats.map((it) => new Chat(it))\n\n const index: Record<number, Chat> = {}\n chats.forEach((c) => (index[c.id] = c))\n\n res.updates[0].peers.forEach((peer) => {\n if (peer._ === 'peerSelfLocated') return\n\n const id = getMarkedPeerId(peer.peer)\n\n if (index[id]) {\n (index[id] as tl.Mutable<Chat>).distance = peer.distance\n }\n })\n\n return chats\n}\n"]}
1
+ {"version":3,"file":"get-nearby-chats.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/chats/get-nearby-chats.ts"],"names":[],"mappings":";;;AAEA,gEAA8D;AAC9D,0EAAgE;AAEhE,mDAA2C;AAC3C,qDAA6D;AAE7D;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAAC,MAAuB,EAAE,QAAgB,EAAE,SAAiB;IAC7F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,qBAAqB;QACxB,QAAQ,EAAE;YACN,CAAC,EAAE,eAAe;YAClB,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,SAAS;SAClB;KACJ,CAAC,CAAA;IAEF,IAAA,+BAAoB,EAAC,qBAAqB,EAAE,GAAG,CAAC,CAAA;IAChD,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEpC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAElC,IAAA,iCAAY,EAAC,qCAAqC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAExF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,eAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAEjD,MAAM,KAAK,GAAyB,EAAE,CAAA;IACtC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAEvC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,IAAI,IAAI,CAAC,CAAC,KAAK,iBAAiB;YAAE,OAAM;QAExC,MAAM,EAAE,GAAG,IAAA,+BAAe,EAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAErC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,EAAE,CAAsB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC5D,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AAChB,CAAC;AAjCD,wCAiCC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { getMarkedPeerId } from '../../../utils/peer-utils.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { Chat } from '../../types/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\n\n/**\n * Get nearby chats\n *\n * @param latitude Latitude of the location\n * @param longitude Longitude of the location\n */\nexport async function getNearbyChats(client: ITelegramClient, latitude: number, longitude: number): Promise<Chat[]> {\n const res = await client.call({\n _: 'contacts.getLocated',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: latitude,\n long: longitude,\n },\n })\n\n assertIsUpdatesGroup('contacts.getLocated', res)\n client.handleClientUpdate(res, true)\n\n if (!res.updates.length) return []\n\n assertTypeIs('contacts.getLocated (@ .updates[0])', res.updates[0], 'updatePeerLocated')\n\n const chats = res.chats.map((it) => new Chat(it))\n\n const index: Record<number, Chat> = {}\n chats.forEach((c) => (index[c.id] = c))\n\n res.updates[0].peers.forEach((peer) => {\n if (peer._ === 'peerSelfLocated') return\n\n const id = getMarkedPeerId(peer.peer)\n\n if (index[id]) {\n (index[id] as tl.Mutable<Chat>).distance = peer.distance\n }\n })\n\n return chats\n}\n"]}
@@ -6,6 +6,10 @@ import { InputPeerLike } from '../../types/peers/index.js';
6
6
  * Some library logic depends on this, for example, the library will
7
7
  * periodically ping the server to keep the updates flowing.
8
8
  *
9
+ * > **Warning**: Opening a chat with `openChat` method will make the library make additional requests every so often.
10
+ * > Which means that you should **avoid opening more than 5-10 chats at once**, as it will probably trigger
11
+ * > server-side limits and you might start getting transport errors or even get banned.
12
+ *
9
13
  * @param chat Chat to open
10
14
  */
11
15
  export declare function openChat(client: ITelegramClient, chat: InputPeerLike): Promise<void>;
@@ -10,6 +10,10 @@ const resolve_peer_js_1 = require("../users/resolve-peer.js");
10
10
  * Some library logic depends on this, for example, the library will
11
11
  * periodically ping the server to keep the updates flowing.
12
12
  *
13
+ * > **Warning**: Opening a chat with `openChat` method will make the library make additional requests every so often.
14
+ * > Which means that you should **avoid opening more than 5-10 chats at once**, as it will probably trigger
15
+ * > server-side limits and you might start getting transport errors or even get banned.
16
+ *
13
17
  * @param chat Chat to open
14
18
  */
15
19
  async function openChat(client, chat) {
@@ -1 +1 @@
1
- {"version":3,"file":"open-chat.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/chats/open-chat.ts"],"names":[],"mappings":";;;AAEA,6DAA8D;AAC9D,wEAA+D;AAC/D,8DAAsD;AAEtD;;;;;;;GAOG;AACI,KAAK,UAAU,QAAQ,CAAC,MAAuB,EAAE,IAAmB;IACvE,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAE5C,IAAI,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAA,oCAAc,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAEnD,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpE,CAAC;IAED,6DAA6D;IAC7D,4EAA4E;AAChF,CAAC;AAXD,4BAWC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,SAAS,CAAC,MAAuB,EAAE,IAAmB;IACxE,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAE5C,IAAI,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACpD,CAAC;IAED,6DAA6D;IAC7D,4EAA4E;AAChF,CAAC;AATD,8BASC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { isInputPeerChannel } from '../../utils/peer-utils.js'\nimport { getPeerDialogs } from '../dialogs/get-peer-dialogs.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Inform the library that the user has opened a chat.\n *\n * Some library logic depends on this, for example, the library will\n * periodically ping the server to keep the updates flowing.\n *\n * @param chat Chat to open\n */\nexport async function openChat(client: ITelegramClient, chat: InputPeerLike): Promise<void> {\n const peer = await resolvePeer(client, chat)\n\n if (isInputPeerChannel(peer)) {\n const [dialog] = await getPeerDialogs(client, peer)\n\n await client.notifyChannelOpened(peer.channelId, dialog.raw.pts)\n }\n\n // todo: once we have proper dialogs/peers db, we should also\n // update full info here and fetch auxillary info (like channel members etc)\n}\n\n/**\n * Inform the library that the user has closed a chat.\n * Un-does the effect of {@link openChat}.\n *\n * Some library logic depends on this, for example, the library will\n * periodically ping the server to keep the updates flowing.\n *\n * @param chat Chat to open\n */\nexport async function closeChat(client: ITelegramClient, chat: InputPeerLike): Promise<void> {\n const peer = await resolvePeer(client, chat)\n\n if (isInputPeerChannel(peer)) {\n await client.notifyChannelClosed(peer.channelId)\n }\n\n // todo: once we have proper dialogs/peers db, we should also\n // update full info here and fetch auxillary info (like channel members etc)\n}\n"]}
1
+ {"version":3,"file":"open-chat.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/chats/open-chat.ts"],"names":[],"mappings":";;;AAEA,6DAA8D;AAC9D,wEAA+D;AAC/D,8DAAsD;AAEtD;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,QAAQ,CAAC,MAAuB,EAAE,IAAmB;IACvE,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAE5C,IAAI,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAA,oCAAc,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAEnD,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpE,CAAC;IAED,6DAA6D;IAC7D,4EAA4E;AAChF,CAAC;AAXD,4BAWC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,SAAS,CAAC,MAAuB,EAAE,IAAmB;IACxE,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAE5C,IAAI,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACpD,CAAC;IAED,6DAA6D;IAC7D,4EAA4E;AAChF,CAAC;AATD,8BASC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { isInputPeerChannel } from '../../utils/peer-utils.js'\nimport { getPeerDialogs } from '../dialogs/get-peer-dialogs.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Inform the library that the user has opened a chat.\n *\n * Some library logic depends on this, for example, the library will\n * periodically ping the server to keep the updates flowing.\n *\n * > **Warning**: Opening a chat with `openChat` method will make the library make additional requests every so often.\n * > Which means that you should **avoid opening more than 5-10 chats at once**, as it will probably trigger\n * > server-side limits and you might start getting transport errors or even get banned.\n *\n * @param chat Chat to open\n */\nexport async function openChat(client: ITelegramClient, chat: InputPeerLike): Promise<void> {\n const peer = await resolvePeer(client, chat)\n\n if (isInputPeerChannel(peer)) {\n const [dialog] = await getPeerDialogs(client, peer)\n\n await client.notifyChannelOpened(peer.channelId, dialog.raw.pts)\n }\n\n // todo: once we have proper dialogs/peers db, we should also\n // update full info here and fetch auxillary info (like channel members etc)\n}\n\n/**\n * Inform the library that the user has closed a chat.\n * Un-does the effect of {@link openChat}.\n *\n * Some library logic depends on this, for example, the library will\n * periodically ping the server to keep the updates flowing.\n *\n * @param chat Chat to open\n */\nexport async function closeChat(client: ITelegramClient, chat: InputPeerLike): Promise<void> {\n const peer = await resolvePeer(client, chat)\n\n if (isInputPeerChannel(peer)) {\n await client.notifyChannelClosed(peer.channelId)\n }\n\n // todo: once we have proper dialogs/peers db, we should also\n // update full info here and fetch auxillary info (like channel members etc)\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { ITelegramClient } from '../../client.types.js';
2
+ import { ChatlistPreview } from '../../types/index.js';
3
+ /**
4
+ * Get a preview of a chatlist by its invite link
5
+ *
6
+ * @param link Invite link
7
+ */
8
+ export declare function getChatlistPreview(client: ITelegramClient, link: string): Promise<ChatlistPreview>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getChatlistPreview = void 0;
4
+ const index_js_1 = require("../../types/index.js");
5
+ /**
6
+ * Get a preview of a chatlist by its invite link
7
+ *
8
+ * @param link Invite link
9
+ */
10
+ async function getChatlistPreview(client, link) {
11
+ const res = await client.call({
12
+ _: 'chatlists.checkChatlistInvite',
13
+ slug: link,
14
+ });
15
+ return new index_js_1.ChatlistPreview(res);
16
+ }
17
+ exports.getChatlistPreview = getChatlistPreview;
18
+ //# sourceMappingURL=get-chatlist-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-chatlist-preview.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/dialogs/get-chatlist-preview.ts"],"names":[],"mappings":";;;AACA,mDAAsD;AAEtD;;;;GAIG;AACI,KAAK,UAAU,kBAAkB,CAAC,MAAuB,EAAE,IAAY;IAC1E,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,+BAA+B;QAClC,IAAI,EAAE,IAAI;KACb,CAAC,CAAA;IAEF,OAAO,IAAI,0BAAe,CAAC,GAAG,CAAC,CAAA;AACnC,CAAC;AAPD,gDAOC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { ChatlistPreview } from '../../types/index.js'\n\n/**\n * Get a preview of a chatlist by its invite link\n *\n * @param link Invite link\n */\nexport async function getChatlistPreview(client: ITelegramClient, link: string): Promise<ChatlistPreview> {\n const res = await client.call({\n _: 'chatlists.checkChatlistInvite',\n slug: link,\n })\n\n return new ChatlistPreview(res)\n}\n"]}
@@ -51,10 +51,59 @@ async function* iterDialogs(client, params) {
51
51
  if (localFilters_?._ === 'dialogFilterDefault') {
52
52
  localFilters_ = undefined;
53
53
  }
54
- if (localFilters_?._ === 'dialogFilterChatlist') {
55
- throw new errors_js_1.MtUnsupportedError('Shared chat folders are not supported yet');
56
- }
57
54
  const localFilters = localFilters_;
55
+ if (localFilters?._ === 'dialogFilterChatlist') {
56
+ if (offsetId !== 0 || offsetDate !== 0 || offsetPeer._ !== 'inputPeerEmpty') {
57
+ throw new errors_js_1.MtArgumentError('Cannot use offset parameters with chatlist filters');
58
+ }
59
+ // we only need to fetch pinnedPeers and includePeers
60
+ // instead of fetching the entire dialog list, we can shortcut
61
+ // and just fetch the peer dialogs
62
+ let remaining = Math.min(limit, localFilters.includePeers.length + localFilters.pinnedPeers.length);
63
+ if (pinned === 'include' || pinned === 'only') {
64
+ // yield pinned dialogs
65
+ const peers = [];
66
+ for (const peer of localFilters.pinnedPeers) {
67
+ if (remaining <= 0)
68
+ break;
69
+ remaining--;
70
+ peers.push({
71
+ _: 'inputDialogPeer',
72
+ peer,
73
+ });
74
+ }
75
+ const res = await client.call({
76
+ _: 'messages.getPeerDialogs',
77
+ peers,
78
+ });
79
+ res.dialogs.forEach((dialog) => (dialog.pinned = true));
80
+ yield* index_js_1.Dialog.parseTlDialogs(res);
81
+ }
82
+ if (pinned === 'only' || remaining <= 0) {
83
+ return;
84
+ }
85
+ // yield non-pinned dialogs
86
+ let offset = 0;
87
+ while (remaining > 0) {
88
+ const peers = [];
89
+ for (let i = 0; i < chunkSize; i++) {
90
+ if (remaining <= 0)
91
+ break;
92
+ remaining--;
93
+ peers.push({
94
+ _: 'inputDialogPeer',
95
+ peer: localFilters.includePeers[offset + i],
96
+ });
97
+ }
98
+ offset += chunkSize;
99
+ const res = await client.call({
100
+ _: 'messages.getPeerDialogs',
101
+ peers,
102
+ });
103
+ yield* index_js_1.Dialog.parseTlDialogs(res);
104
+ }
105
+ return;
106
+ }
58
107
  if (localFilters) {
59
108
  archived = localFilters.excludeArchived ? 'exclude' : 'keep';
60
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"iter-dialogs.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/dialogs/iter-dialogs.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\n\nimport { MtUnsupportedError } from '../../../types/errors.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { Dialog, InputDialogFolder } from '../../types/index.js'\nimport { normalizeDate } from '../../utils/misc-utils.js'\nimport { _normalizeInputFolder } from './get-folders.js'\n\n/**\n * Iterate over dialogs.\n *\n * Note that due to Telegram API limitations,\n * ordering here can only be anti-chronological\n * (i.e. newest - first), and draft update date\n * is not considered when sorting.\n *\n * @param params Fetch parameters\n */\nexport async function* iterDialogs(\n client: ITelegramClient,\n params?: {\n /**\n * Offset message date used as an anchor for pagination.\n */\n offsetDate?: Date | number\n\n /**\n * Offset message ID used as an anchor for pagination\n */\n offsetId?: number\n\n /**\n * Offset peer used as an anchor for pagination\n */\n offsetPeer?: tl.TypeInputPeer\n\n /**\n * Limits the number of dialogs to be received.\n *\n * @default `Infinity`, i.e. all dialogs are fetched\n */\n limit?: number\n\n /**\n * Chunk size which will be passed to `messages.getDialogs`.\n * You shouldn't usually care about this.\n *\n * @default 100.\n */\n chunkSize?: number\n\n /**\n * How to handle pinned dialogs?\n *\n * Whether to `include` them at the start of the list,\n * `exclude` them at all, or `only` return pinned dialogs.\n *\n * Additionally, for folders you can specify\n * `keep`, which will return pinned dialogs\n * ordered by date among other non-pinned dialogs.\n *\n * > **Note**: When using `include` mode with folders,\n * > pinned dialogs will only be fetched if all offset\n * > parameters are unset.\n *\n * @default `include`.\n */\n pinned?: 'include' | 'exclude' | 'only' | 'keep'\n\n /**\n * How to handle archived chats?\n *\n * Whether to `keep` them among other dialogs,\n * `exclude` them from the list, or `only`\n * return archived dialogs\n *\n * Ignored for folders, since folders\n * themselves contain information about archived chats.\n *\n * > **Note**: when `pinned=only`, `archived=keep` will act as `only`\n * > because of Telegram API limitations.\n *\n * @default `exclude`\n */\n archived?: 'keep' | 'exclude' | 'only'\n\n /**\n * Folder from which the dialogs will be fetched.\n *\n * You can pass folder object, id or title\n *\n * Note that passing anything except object will\n * cause the list of the folders to be fetched,\n * and passing a title may fetch from\n * a wrong folder if you have multiple with the same title.\n *\n * Also note that fetching dialogs in a folder is\n * *orders of magnitudes* slower than normal because\n * of Telegram API limitations - we have to fetch all dialogs\n * and filter the ones we need manually. If possible,\n * use {@link Dialog.filterFolder} instead.\n *\n * When a folder with given ID or title is not found,\n * {@link MtArgumentError} is thrown\n *\n * @default <empty> (fetches from \"All\" folder)\n */\n folder?: InputDialogFolder\n\n /**\n * Additional filtering for the dialogs.\n *\n * If `folder` is not provided, this filter is used instead.\n * If `folder` is provided, fields from this object are used\n * to override filters inside the folder.\n */\n filter?: Partial<Omit<tl.RawDialogFilter, '_' | 'id' | 'title'>>\n },\n): AsyncIterableIterator<Dialog> {\n if (!params) params = {}\n\n const { limit = Infinity, chunkSize = 100, folder, filter, pinned = 'include' } = params\n\n let { offsetId = 0, offsetPeer = { _: 'inputPeerEmpty' }, archived = 'exclude' } = params\n\n let offsetDate = normalizeDate(params.offsetDate) ?? 0\n\n let localFilters_: tl.TypeDialogFilter | undefined\n\n if (folder) {\n localFilters_ = await _normalizeInputFolder(client, folder)\n }\n\n if (filter) {\n if (localFilters_ && localFilters_._ !== 'dialogFilterDefault') {\n localFilters_ = {\n ...localFilters_,\n ...filter,\n }\n } else {\n localFilters_ = {\n _: 'dialogFilter',\n id: 0,\n title: '',\n pinnedPeers: [],\n includePeers: [],\n excludePeers: [],\n ...params.filter,\n }\n }\n }\n\n if (localFilters_?._ === 'dialogFilterDefault') {\n localFilters_ = undefined\n }\n\n if (localFilters_?._ === 'dialogFilterChatlist') {\n throw new MtUnsupportedError('Shared chat folders are not supported yet')\n }\n\n const localFilters = localFilters_\n\n if (localFilters) {\n archived = localFilters.excludeArchived ? 'exclude' : 'keep'\n }\n\n const fetchPinnedDialogsFromFolder = async (): Promise<tl.messages.RawPeerDialogs | null> => {\n if (!localFilters || !localFilters.pinnedPeers.length) {\n return null\n }\n const res = await client.call({\n _: 'messages.getPeerDialogs',\n peers: localFilters.pinnedPeers.map((peer) => ({\n _: 'inputDialogPeer' as const,\n peer,\n })),\n })\n\n res.dialogs.forEach((dialog: tl.Mutable<tl.TypeDialog>) => (dialog.pinned = true))\n\n return res\n }\n\n if (pinned === 'only') {\n let res\n\n if (localFilters) {\n res = await fetchPinnedDialogsFromFolder()\n } else {\n res = await client.call({\n _: 'messages.getPinnedDialogs',\n folderId: archived === 'exclude' ? 0 : 1,\n })\n }\n if (res) yield* Dialog.parseTlDialogs(res, limit)\n\n return\n }\n\n let current = 0\n\n if (\n localFilters?.pinnedPeers.length &&\n pinned === 'include' &&\n offsetId === 0 &&\n offsetDate === 0 &&\n offsetPeer._ === 'inputPeerEmpty'\n ) {\n const res = await fetchPinnedDialogsFromFolder()\n\n if (res) {\n const dialogs = Dialog.parseTlDialogs(res, limit)\n\n for (const d of dialogs) {\n yield d\n if (++current >= limit) return\n }\n }\n }\n // if pinned is `only`, this wouldn't be reached\n // if pinned is `exclude`, we want to exclude them\n // if pinned is `include`, we already yielded them, so we also want to exclude them\n // if pinned is `keep`, we want to keep them\n const filterFolder = localFilters ? Dialog.filterFolder(localFilters, pinned !== 'keep') : undefined\n\n let folderId\n\n if (archived === 'keep') {\n folderId = undefined\n } else if (archived === 'only') {\n folderId = 1\n } else {\n folderId = 0\n }\n\n for (;;) {\n const dialogs = Dialog.parseTlDialogs(\n await client.call({\n _: 'messages.getDialogs',\n excludePinned: params.pinned === 'exclude',\n folderId,\n offsetDate,\n offsetId,\n offsetPeer,\n limit: filterFolder ? chunkSize : Math.min(limit - current, chunkSize),\n hash: Long.ZERO,\n }),\n )\n if (!dialogs.length) return\n\n const last = dialogs[dialogs.length - 1]\n offsetPeer = last.chat.inputPeer\n offsetId = last.raw.topMessage\n\n if (last.lastMessage) {\n offsetDate = last.lastMessage.raw.date\n }\n\n for (const d of dialogs) {\n if (filterFolder && !filterFolder(d)) continue\n\n yield d\n if (++current >= limit) return\n }\n }\n}\n"]}
1
+ {"version":3,"file":"iter-dialogs.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/dialogs/iter-dialogs.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { Dialog, InputDialogFolder } from '../../types/index.js'\nimport { normalizeDate } from '../../utils/misc-utils.js'\nimport { _normalizeInputFolder } from './get-folders.js'\n\n/**\n * Iterate over dialogs.\n *\n * Note that due to Telegram API limitations,\n * ordering here can only be anti-chronological\n * (i.e. newest - first), and draft update date\n * is not considered when sorting.\n *\n * @param params Fetch parameters\n */\nexport async function* iterDialogs(\n client: ITelegramClient,\n params?: {\n /**\n * Offset message date used as an anchor for pagination.\n */\n offsetDate?: Date | number\n\n /**\n * Offset message ID used as an anchor for pagination\n */\n offsetId?: number\n\n /**\n * Offset peer used as an anchor for pagination\n */\n offsetPeer?: tl.TypeInputPeer\n\n /**\n * Limits the number of dialogs to be received.\n *\n * @default `Infinity`, i.e. all dialogs are fetched\n */\n limit?: number\n\n /**\n * Chunk size which will be passed to `messages.getDialogs`.\n * You shouldn't usually care about this.\n *\n * @default 100.\n */\n chunkSize?: number\n\n /**\n * How to handle pinned dialogs?\n *\n * Whether to `include` them at the start of the list,\n * `exclude` them at all, or `only` return pinned dialogs.\n *\n * Additionally, for folders you can specify\n * `keep`, which will return pinned dialogs\n * ordered by date among other non-pinned dialogs.\n *\n * > **Note**: When using `include` mode with folders,\n * > pinned dialogs will only be fetched if all offset\n * > parameters are unset.\n *\n * @default `include`.\n */\n pinned?: 'include' | 'exclude' | 'only' | 'keep'\n\n /**\n * How to handle archived chats?\n *\n * Whether to `keep` them among other dialogs,\n * `exclude` them from the list, or `only`\n * return archived dialogs\n *\n * Ignored for folders, since folders\n * themselves contain information about archived chats.\n *\n * > **Note**: when `pinned=only`, `archived=keep` will act as `only`\n * > because of Telegram API limitations.\n *\n * @default `exclude`\n */\n archived?: 'keep' | 'exclude' | 'only'\n\n /**\n * Folder from which the dialogs will be fetched.\n *\n * You can pass folder object, id or title\n *\n * Note that passing anything except object will\n * cause the list of the folders to be fetched,\n * and passing a title may fetch from\n * a wrong folder if you have multiple with the same title.\n *\n * Also note that fetching dialogs in a folder is\n * *orders of magnitudes* slower than normal because\n * of Telegram API limitations - we have to fetch all dialogs\n * and filter the ones we need manually. If possible,\n * use {@link Dialog.filterFolder} instead.\n *\n * When a folder with given ID or title is not found,\n * {@link MtArgumentError} is thrown\n *\n * @default <empty> (fetches from \"All\" folder)\n */\n folder?: InputDialogFolder\n\n /**\n * Additional filtering for the dialogs.\n *\n * If `folder` is not provided, this filter is used instead.\n * If `folder` is provided, fields from this object are used\n * to override filters inside the folder.\n */\n filter?: Partial<Omit<tl.RawDialogFilter, '_' | 'id' | 'title'>>\n },\n): AsyncIterableIterator<Dialog> {\n if (!params) params = {}\n\n const { limit = Infinity, chunkSize = 100, folder, filter, pinned = 'include' } = params\n\n let { offsetId = 0, offsetPeer = { _: 'inputPeerEmpty' }, archived = 'exclude' } = params\n\n let offsetDate = normalizeDate(params.offsetDate) ?? 0\n\n let localFilters_: tl.TypeDialogFilter | undefined\n\n if (folder) {\n localFilters_ = await _normalizeInputFolder(client, folder)\n }\n\n if (filter) {\n if (localFilters_ && localFilters_._ !== 'dialogFilterDefault') {\n localFilters_ = {\n ...localFilters_,\n ...filter,\n }\n } else {\n localFilters_ = {\n _: 'dialogFilter',\n id: 0,\n title: '',\n pinnedPeers: [],\n includePeers: [],\n excludePeers: [],\n ...params.filter,\n }\n }\n }\n\n if (localFilters_?._ === 'dialogFilterDefault') {\n localFilters_ = undefined\n }\n\n const localFilters = localFilters_\n\n if (localFilters?._ === 'dialogFilterChatlist') {\n if (offsetId !== 0 || offsetDate !== 0 || offsetPeer._ !== 'inputPeerEmpty') {\n throw new MtArgumentError('Cannot use offset parameters with chatlist filters')\n }\n\n // we only need to fetch pinnedPeers and includePeers\n // instead of fetching the entire dialog list, we can shortcut\n // and just fetch the peer dialogs\n\n let remaining = Math.min(limit, localFilters.includePeers.length + localFilters.pinnedPeers.length)\n\n if (pinned === 'include' || pinned === 'only') {\n // yield pinned dialogs\n\n const peers: tl.TypeInputDialogPeer[] = []\n\n for (const peer of localFilters.pinnedPeers) {\n if (remaining <= 0) break\n remaining--\n peers.push({\n _: 'inputDialogPeer',\n peer,\n })\n }\n\n const res = await client.call({\n _: 'messages.getPeerDialogs',\n peers,\n })\n\n res.dialogs.forEach((dialog: tl.Mutable<tl.TypeDialog>) => (dialog.pinned = true))\n\n yield* Dialog.parseTlDialogs(res)\n }\n\n if (pinned === 'only' || remaining <= 0) {\n return\n }\n\n // yield non-pinned dialogs\n\n let offset = 0\n\n while (remaining > 0) {\n const peers: tl.TypeInputDialogPeer[] = []\n\n for (let i = 0; i < chunkSize; i++) {\n if (remaining <= 0) break\n remaining--\n peers.push({\n _: 'inputDialogPeer',\n peer: localFilters.includePeers[offset + i],\n })\n }\n\n offset += chunkSize\n\n const res = await client.call({\n _: 'messages.getPeerDialogs',\n peers,\n })\n\n yield* Dialog.parseTlDialogs(res)\n }\n\n return\n }\n\n if (localFilters) {\n archived = localFilters.excludeArchived ? 'exclude' : 'keep'\n }\n\n const fetchPinnedDialogsFromFolder = async (): Promise<tl.messages.RawPeerDialogs | null> => {\n if (!localFilters || !localFilters.pinnedPeers.length) {\n return null\n }\n const res = await client.call({\n _: 'messages.getPeerDialogs',\n peers: localFilters.pinnedPeers.map((peer) => ({\n _: 'inputDialogPeer' as const,\n peer,\n })),\n })\n\n res.dialogs.forEach((dialog: tl.Mutable<tl.TypeDialog>) => (dialog.pinned = true))\n\n return res\n }\n\n if (pinned === 'only') {\n let res\n\n if (localFilters) {\n res = await fetchPinnedDialogsFromFolder()\n } else {\n res = await client.call({\n _: 'messages.getPinnedDialogs',\n folderId: archived === 'exclude' ? 0 : 1,\n })\n }\n if (res) yield* Dialog.parseTlDialogs(res, limit)\n\n return\n }\n\n let current = 0\n\n if (\n localFilters?.pinnedPeers.length &&\n pinned === 'include' &&\n offsetId === 0 &&\n offsetDate === 0 &&\n offsetPeer._ === 'inputPeerEmpty'\n ) {\n const res = await fetchPinnedDialogsFromFolder()\n\n if (res) {\n const dialogs = Dialog.parseTlDialogs(res, limit)\n\n for (const d of dialogs) {\n yield d\n if (++current >= limit) return\n }\n }\n }\n // if pinned is `only`, this wouldn't be reached\n // if pinned is `exclude`, we want to exclude them\n // if pinned is `include`, we already yielded them, so we also want to exclude them\n // if pinned is `keep`, we want to keep them\n const filterFolder = localFilters ? Dialog.filterFolder(localFilters, pinned !== 'keep') : undefined\n\n let folderId\n\n if (archived === 'keep') {\n folderId = undefined\n } else if (archived === 'only') {\n folderId = 1\n } else {\n folderId = 0\n }\n\n for (;;) {\n const dialogs = Dialog.parseTlDialogs(\n await client.call({\n _: 'messages.getDialogs',\n excludePinned: params.pinned === 'exclude',\n folderId,\n offsetDate,\n offsetId,\n offsetPeer,\n limit: filterFolder ? chunkSize : Math.min(limit - current, chunkSize),\n hash: Long.ZERO,\n }),\n )\n if (!dialogs.length) return\n\n const last = dialogs[dialogs.length - 1]\n offsetPeer = last.chat.inputPeer\n offsetId = last.raw.topMessage\n\n if (last.lastMessage) {\n offsetDate = last.lastMessage.raw.date\n }\n\n for (const d of dialogs) {\n if (filterFolder && !filterFolder(d)) continue\n\n yield d\n if (++current >= limit) return\n }\n }\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { tl } from '@mtcute/tl';
2
+ import { MaybeArray } from '../../../types/utils.js';
3
+ import { ITelegramClient } from '../../client.types.js';
4
+ import { InputPeerLike } from '../../types/index.js';
5
+ /**
6
+ * Join a chatlist by its link
7
+ *
8
+ * @param link Invite link to the chatlist
9
+ * @param params Additional parameters
10
+ * @returns Folder representing the chatlist
11
+ */
12
+ export declare function joinChatlist(client: ITelegramClient, link: string, params?: {
13
+ /** Chats to join from the chatlist (all by default) */
14
+ peers?: MaybeArray<InputPeerLike>;
15
+ }): Promise<tl.RawDialogFilterChatlist>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.joinChatlist = void 0;
4
+ const errors_js_1 = require("../../../types/errors.js");
5
+ const type_assertions_js_1 = require("../../../utils/type-assertions.js");
6
+ const utils_js_1 = require("../../updates/utils.js");
7
+ const resolve_peer_many_js_1 = require("../users/resolve-peer-many.js");
8
+ const get_chatlist_preview_js_1 = require("./get-chatlist-preview.js");
9
+ /**
10
+ * Join a chatlist by its link
11
+ *
12
+ * @param link Invite link to the chatlist
13
+ * @param params Additional parameters
14
+ * @returns Folder representing the chatlist
15
+ */
16
+ async function joinChatlist(client, link, params) {
17
+ let peers;
18
+ if (params?.peers) {
19
+ const inputs = Array.isArray(params.peers) ? params.peers : [params.peers];
20
+ const all = await (0, resolve_peer_many_js_1.resolvePeerMany)(client, inputs);
21
+ peers = all.filter(type_assertions_js_1.isPresent);
22
+ }
23
+ else {
24
+ const preview = await (0, get_chatlist_preview_js_1.getChatlistPreview)(client, link);
25
+ peers = preview.chats.filter((it) => !it.isUnavailable).map((it) => it.inputPeer);
26
+ }
27
+ const res = await client.call({
28
+ _: 'chatlists.joinChatlistInvite',
29
+ slug: link,
30
+ peers,
31
+ });
32
+ (0, utils_js_1.assertIsUpdatesGroup)('joinChatlist', res);
33
+ client.handleClientUpdate(res);
34
+ const filter = res.updates.find((it) => it._ === 'updateDialogFilter');
35
+ if (!filter?.filter) {
36
+ throw new errors_js_1.MtTypeAssertionError('joinChatlist', 'updateDialogFilter', 'nothing');
37
+ }
38
+ (0, type_assertions_js_1.assertTypeIs)('joinChatlist', filter.filter, 'dialogFilterChatlist');
39
+ return filter.filter;
40
+ }
41
+ exports.joinChatlist = joinChatlist;
42
+ //# sourceMappingURL=join-chatlist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join-chatlist.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/dialogs/join-chatlist.ts"],"names":[],"mappings":";;;AAEA,wDAA+D;AAE/D,0EAA2E;AAG3E,qDAA6D;AAC7D,wEAA+D;AAC/D,uEAA8D;AAE9D;;;;;;GAMG;AACI,KAAK,UAAU,YAAY,CAC9B,MAAuB,EACvB,IAAY,EACZ,MAGC;IAED,IAAI,KAAyB,CAAA;IAE7B,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1E,MAAM,GAAG,GAAG,MAAM,IAAA,sCAAe,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACjD,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,8BAAS,CAAC,CAAA;IACjC,CAAC;SAAM,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,IAAA,4CAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACtD,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACrF,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,8BAA8B;QACjC,IAAI,EAAE,IAAI;QACV,KAAK;KACR,CAAC,CAAA;IAEF,IAAA,+BAAoB,EAAC,cAAc,EAAE,GAAG,CAAC,CAAA;IACzC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAE9B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,CAA6B,CAAA;IAElG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,gCAAoB,CAAC,cAAc,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAA;IACnF,CAAC;IAED,IAAA,iCAAY,EAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;IAEnE,OAAO,MAAM,CAAC,MAAM,CAAA;AACxB,CAAC;AArCD,oCAqCC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { MaybeArray } from '../../../types/utils.js'\nimport { assertTypeIs, isPresent } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike } from '../../types/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\nimport { resolvePeerMany } from '../users/resolve-peer-many.js'\nimport { getChatlistPreview } from './get-chatlist-preview.js'\n\n/**\n * Join a chatlist by its link\n *\n * @param link Invite link to the chatlist\n * @param params Additional parameters\n * @returns Folder representing the chatlist\n */\nexport async function joinChatlist(\n client: ITelegramClient,\n link: string,\n params?: {\n /** Chats to join from the chatlist (all by default) */\n peers?: MaybeArray<InputPeerLike>\n },\n): Promise<tl.RawDialogFilterChatlist> {\n let peers: tl.TypeInputPeer[]\n\n if (params?.peers) {\n const inputs = Array.isArray(params.peers) ? params.peers : [params.peers]\n const all = await resolvePeerMany(client, inputs)\n peers = all.filter(isPresent)\n } else {\n const preview = await getChatlistPreview(client, link)\n peers = preview.chats.filter((it) => !it.isUnavailable).map((it) => it.inputPeer)\n }\n\n const res = await client.call({\n _: 'chatlists.joinChatlistInvite',\n slug: link,\n peers,\n })\n\n assertIsUpdatesGroup('joinChatlist', res)\n client.handleClientUpdate(res)\n\n const filter = res.updates.find((it) => it._ === 'updateDialogFilter') as tl.RawUpdateDialogFilter\n\n if (!filter?.filter) {\n throw new MtTypeAssertionError('joinChatlist', 'updateDialogFilter', 'nothing')\n }\n\n assertTypeIs('joinChatlist', filter.filter, 'dialogFilterChatlist')\n\n return filter.filter\n}\n"]}
@@ -24,6 +24,7 @@ async function getMessageReactionsById(client, chatId, messages) {
24
24
  id: messages,
25
25
  });
26
26
  (0, utils_js_1.assertIsUpdatesGroup)('messages.getMessagesReactions', res);
27
+ client.handleClientUpdate(res);
27
28
  // normally the group contains updateMessageReactions
28
29
  // for each message requested that has reactions
29
30
  //
@@ -1 +1 @@
1
- {"version":3,"file":"get-message-reactions.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/get-message-reactions.ts"],"names":[],"mappings":";;;AAAA,gEAA8D;AAC9D,0EAAgE;AAEhE,mDAA2F;AAC3F,qDAA6D;AAC7D,8DAAsD;AAEtD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,uBAAuB,CACzC,MAAuB,EACvB,MAAqB,EACrB,QAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,+BAA+B;QAClC,IAAI,EAAE,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC;QACvC,EAAE,EAAE,QAAQ;KACf,CAAC,CAAA;IAEF,IAAA,+BAAoB,EAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;IAE1D,qDAAqD;IACrD,gDAAgD;IAChD,EAAE;IACF,+CAA+C;IAC/C,+CAA+C;IAE/C,MAAM,KAAK,GAAqC,EAAE,CAAA;IAElD,MAAM,KAAK,GAAG,qBAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAA,iCAAY,EAAC,+BAA+B,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAA;QAE/E,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,2BAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAA,+BAAe,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACnH,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAA;AAChE,CAAC;AA9BD,0DA8BC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,mBAAmB,CACrC,MAAuB,EACvB,QAAmB;IAEnB,OAAO,uBAAuB,CAC1B,MAAM,EACN,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAC9B,CAAA;AACL,CAAC;AATD,kDASC","sourcesContent":["import { getMarkedPeerId } from '../../../utils/peer-utils.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike, Message, MessageReactions, PeersIndex } from '../../types/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Get reactions to messages by their IDs.\n *\n * > Apps should short-poll reactions for visible messages\n * > (that weren't sent by the user) once every 15-30 seconds,\n * > but only if `message.reactions` is set\n *\n * @param chatId ID of the chat with messages\n * @param messages Message IDs\n * @returns Reactions to corresponding messages, or `null` if there are none\n */\nexport async function getMessageReactionsById(\n client: ITelegramClient,\n chatId: InputPeerLike,\n messages: number[],\n): Promise<(MessageReactions | null)[]> {\n const res = await client.call({\n _: 'messages.getMessagesReactions',\n peer: await resolvePeer(client, chatId),\n id: messages,\n })\n\n assertIsUpdatesGroup('messages.getMessagesReactions', res)\n\n // normally the group contains updateMessageReactions\n // for each message requested that has reactions\n //\n // these updates are not ordered in any way, so\n // we don't need to pass them to updates engine\n\n const index: Record<number, MessageReactions> = {}\n\n const peers = PeersIndex.from(res)\n\n for (const update of res.updates) {\n assertTypeIs('messages.getMessagesReactions', update, 'updateMessageReactions')\n\n index[update.msgId] = new MessageReactions(update.msgId, getMarkedPeerId(update.peer), update.reactions, peers)\n }\n\n return messages.map((messageId) => index[messageId] ?? null)\n}\n\n/**\n * Get reactions to {@link Message}s.\n *\n * > **Note**: messages must all be from the same chat.\n *\n * > Apps should short-poll reactions for visible messages\n * > (that weren't sent by the user) once every 15-30 seconds,\n * > but only if `message.reactions` is set\n *\n * @param chatId ID of the chat with messages\n * @param messages Message IDs\n * @returns Reactions to corresponding messages, or `null` if there are none\n */\nexport async function getMessageReactions(\n client: ITelegramClient,\n messages: Message[],\n): Promise<(MessageReactions | null)[]> {\n return getMessageReactionsById(\n client,\n messages[0].chat.inputPeer,\n messages.map((it) => it.id),\n )\n}\n"]}
1
+ {"version":3,"file":"get-message-reactions.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/get-message-reactions.ts"],"names":[],"mappings":";;;AAAA,gEAA8D;AAC9D,0EAAgE;AAEhE,mDAA2F;AAC3F,qDAA6D;AAC7D,8DAAsD;AAEtD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,uBAAuB,CACzC,MAAuB,EACvB,MAAqB,EACrB,QAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,+BAA+B;QAClC,IAAI,EAAE,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC;QACvC,EAAE,EAAE,QAAQ;KACf,CAAC,CAAA;IAEF,IAAA,+BAAoB,EAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;IAC1D,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAE9B,qDAAqD;IACrD,gDAAgD;IAChD,EAAE;IACF,+CAA+C;IAC/C,+CAA+C;IAE/C,MAAM,KAAK,GAAqC,EAAE,CAAA;IAElD,MAAM,KAAK,GAAG,qBAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAA,iCAAY,EAAC,+BAA+B,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAA;QAE/E,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,2BAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAA,+BAAe,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACnH,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAA;AAChE,CAAC;AA/BD,0DA+BC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,mBAAmB,CACrC,MAAuB,EACvB,QAAmB;IAEnB,OAAO,uBAAuB,CAC1B,MAAM,EACN,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAC9B,CAAA;AACL,CAAC;AATD,kDASC","sourcesContent":["import { getMarkedPeerId } from '../../../utils/peer-utils.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike, Message, MessageReactions, PeersIndex } from '../../types/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Get reactions to messages by their IDs.\n *\n * > Apps should short-poll reactions for visible messages\n * > (that weren't sent by the user) once every 15-30 seconds,\n * > but only if `message.reactions` is set\n *\n * @param chatId ID of the chat with messages\n * @param messages Message IDs\n * @returns Reactions to corresponding messages, or `null` if there are none\n */\nexport async function getMessageReactionsById(\n client: ITelegramClient,\n chatId: InputPeerLike,\n messages: number[],\n): Promise<(MessageReactions | null)[]> {\n const res = await client.call({\n _: 'messages.getMessagesReactions',\n peer: await resolvePeer(client, chatId),\n id: messages,\n })\n\n assertIsUpdatesGroup('messages.getMessagesReactions', res)\n client.handleClientUpdate(res)\n\n // normally the group contains updateMessageReactions\n // for each message requested that has reactions\n //\n // these updates are not ordered in any way, so\n // we don't need to pass them to updates engine\n\n const index: Record<number, MessageReactions> = {}\n\n const peers = PeersIndex.from(res)\n\n for (const update of res.updates) {\n assertTypeIs('messages.getMessagesReactions', update, 'updateMessageReactions')\n\n index[update.msgId] = new MessageReactions(update.msgId, getMarkedPeerId(update.peer), update.reactions, peers)\n }\n\n return messages.map((messageId) => index[messageId] ?? null)\n}\n\n/**\n * Get reactions to {@link Message}s.\n *\n * > **Note**: messages must all be from the same chat.\n *\n * > Apps should short-poll reactions for visible messages\n * > (that weren't sent by the user) once every 15-30 seconds,\n * > but only if `message.reactions` is set\n *\n * @param chatId ID of the chat with messages\n * @param messages Message IDs\n * @returns Reactions to corresponding messages, or `null` if there are none\n */\nexport async function getMessageReactions(\n client: ITelegramClient,\n messages: Message[],\n): Promise<(MessageReactions | null)[]> {\n return getMessageReactionsById(\n client,\n messages[0].chat.inputPeer,\n messages.map((it) => it.id),\n )\n}\n"]}
@@ -17,6 +17,7 @@ async function getBusinessConnection(client, connectionId) {
17
17
  connectionId,
18
18
  });
19
19
  (0, utils_js_1.assertIsUpdatesGroup)('account.getBotBusinessConnection', res);
20
+ client.handleClientUpdate(res);
20
21
  (0, type_assertions_js_1.assertTypeIs)('account.getBotBusinessConnection', res.updates[0], 'updateBotBusinessConnect');
21
22
  const peers = peers_index_js_1.PeersIndex.from(res);
22
23
  return new business_connection_js_1.BusinessConnection(res.updates[0].connection, peers);
@@ -1 +1 @@
1
- {"version":3,"file":"get-business-connection.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/premium/get-business-connection.ts"],"names":[],"mappings":";;;AAAA,0EAAgE;AAEhE,qEAA6D;AAC7D,uFAA+E;AAC/E,qDAA6D;AAE7D,iBAAiB;AACjB;;;;GAIG;AACI,KAAK,UAAU,qBAAqB,CACvC,MAAuB,EACvB,YAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,kCAAkC;QACrC,YAAY;KACf,CAAC,CAAA;IAEF,IAAA,+BAAoB,EAAC,kCAAkC,EAAE,GAAG,CAAC,CAAA;IAC7D,IAAA,iCAAY,EAAC,kCAAkC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAA;IAE5F,MAAM,KAAK,GAAG,2BAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,OAAO,IAAI,2CAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AACnE,CAAC;AAfD,sDAeC","sourcesContent":["import { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { PeersIndex } from '../../types/peers/peers-index.js'\nimport { BusinessConnection } from '../../types/premium/business-connection.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\n\n// @available=bot\n/**\n * Get information about the connection of the bot with a business account\n *\n * @param connectionId ID of the business connection\n */\nexport async function getBusinessConnection(\n client: ITelegramClient,\n connectionId: string,\n): Promise<BusinessConnection> {\n const res = await client.call({\n _: 'account.getBotBusinessConnection',\n connectionId,\n })\n\n assertIsUpdatesGroup('account.getBotBusinessConnection', res)\n assertTypeIs('account.getBotBusinessConnection', res.updates[0], 'updateBotBusinessConnect')\n\n const peers = PeersIndex.from(res)\n\n return new BusinessConnection(res.updates[0].connection, peers)\n}\n"]}
1
+ {"version":3,"file":"get-business-connection.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/premium/get-business-connection.ts"],"names":[],"mappings":";;;AAAA,0EAAgE;AAEhE,qEAA6D;AAC7D,uFAA+E;AAC/E,qDAA6D;AAE7D,iBAAiB;AACjB;;;;GAIG;AACI,KAAK,UAAU,qBAAqB,CACvC,MAAuB,EACvB,YAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,kCAAkC;QACrC,YAAY;KACf,CAAC,CAAA;IAEF,IAAA,+BAAoB,EAAC,kCAAkC,EAAE,GAAG,CAAC,CAAA;IAC7D,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAA,iCAAY,EAAC,kCAAkC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAA;IAE5F,MAAM,KAAK,GAAG,2BAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,OAAO,IAAI,2CAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AACnE,CAAC;AAhBD,sDAgBC","sourcesContent":["import { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { PeersIndex } from '../../types/peers/peers-index.js'\nimport { BusinessConnection } from '../../types/premium/business-connection.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\n\n// @available=bot\n/**\n * Get information about the connection of the bot with a business account\n *\n * @param connectionId ID of the business connection\n */\nexport async function getBusinessConnection(\n client: ITelegramClient,\n connectionId: string,\n): Promise<BusinessConnection> {\n const res = await client.call({\n _: 'account.getBotBusinessConnection',\n connectionId,\n })\n\n assertIsUpdatesGroup('account.getBotBusinessConnection', res)\n client.handleClientUpdate(res)\n assertTypeIs('account.getBotBusinessConnection', res.updates[0], 'updateBotBusinessConnect')\n\n const peers = PeersIndex.from(res)\n\n return new BusinessConnection(res.updates[0].connection, peers)\n}\n"]}
@@ -1,18 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setOffline = void 0;
4
- const type_assertions_js_1 = require("../../../utils/type-assertions.js");
5
4
  /**
6
5
  * Change user status to offline or online
7
6
  *
8
7
  * @param offline Whether the user is currently offline
9
8
  */
10
9
  async function setOffline(client, offline = true) {
11
- const r = await client.call({
10
+ await client.call({
12
11
  _: 'account.updateStatus',
13
12
  offline,
14
13
  });
15
- (0, type_assertions_js_1.assertTrue)('account.updateStatus', r);
16
14
  }
17
15
  exports.setOffline = setOffline;
18
16
  //# sourceMappingURL=set-offline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"set-offline.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/set-offline.ts"],"names":[],"mappings":";;;AAAA,0EAA8D;AAG9D;;;;GAIG;AACI,KAAK,UAAU,UAAU,CAAC,MAAuB,EAAE,OAAO,GAAG,IAAI;IACpE,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QACxB,CAAC,EAAE,sBAAsB;QACzB,OAAO;KACV,CAAC,CAAA;IAEF,IAAA,+BAAU,EAAC,sBAAsB,EAAE,CAAC,CAAC,CAAA;AACzC,CAAC;AAPD,gCAOC","sourcesContent":["import { assertTrue } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\n\n/**\n * Change user status to offline or online\n *\n * @param offline Whether the user is currently offline\n */\nexport async function setOffline(client: ITelegramClient, offline = true): Promise<void> {\n const r = await client.call({\n _: 'account.updateStatus',\n offline,\n })\n\n assertTrue('account.updateStatus', r)\n}\n"]}
1
+ {"version":3,"file":"set-offline.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/set-offline.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACI,KAAK,UAAU,UAAU,CAAC,MAAuB,EAAE,OAAO,GAAG,IAAI;IACpE,MAAM,MAAM,CAAC,IAAI,CAAC;QACd,CAAC,EAAE,sBAAsB;QACzB,OAAO;KACV,CAAC,CAAA;AACN,CAAC;AALD,gCAKC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\n\n/**\n * Change user status to offline or online\n *\n * @param offline Whether the user is currently offline\n */\nexport async function setOffline(client: ITelegramClient, offline = true): Promise<void> {\n await client.call({\n _: 'account.updateStatus',\n offline,\n })\n}\n"]}
@@ -82,9 +82,11 @@ export { deleteFolder } from './methods/dialogs/delete-folder.js';
82
82
  export { editFolder } from './methods/dialogs/edit-folder.js';
83
83
  export { findDialogs } from './methods/dialogs/find-dialogs.js';
84
84
  export { findFolder } from './methods/dialogs/find-folder.js';
85
+ export { getChatlistPreview } from './methods/dialogs/get-chatlist-preview.js';
85
86
  export { getFolders } from './methods/dialogs/get-folders.js';
86
87
  export { getPeerDialogs } from './methods/dialogs/get-peer-dialogs.js';
87
88
  export { iterDialogs } from './methods/dialogs/iter-dialogs.js';
89
+ export { joinChatlist } from './methods/dialogs/join-chatlist.js';
88
90
  export { setFoldersOrder } from './methods/dialogs/set-folders-order.js';
89
91
  export { downloadAsBuffer } from './methods/files/download-buffer.js';
90
92
  export { downloadAsIterable } from './methods/files/download-iterable.js';
@@ -7,11 +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.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;
10
+ 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.joinChatlist = exports.iterDialogs = exports.getPeerDialogs = exports.getFolders = exports.getChatlistPreview = 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.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 = exports.iterForumTopics = exports.getForumTopicsById = void 0;
12
+ 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 = exports.iterSearchHashtag = exports.searchHashtag = void 0;
13
+ 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 = exports.createStickerSet = exports.addStickerToSet = void 0;
14
+ exports.updateProfile = exports.unblockUser = exports.setOffline = exports.setMyUsername = exports.setMyProfilePhoto = exports.setMyEmojiStatus = exports.setMyBirthday = void 0;
15
15
  /* THIS FILE WAS AUTO-GENERATED */
16
16
  var check_password_js_1 = require("./methods/auth/check-password.js");
17
17
  Object.defineProperty(exports, "checkPassword", { enumerable: true, get: function () { return check_password_js_1.checkPassword; } });
@@ -179,12 +179,16 @@ var find_dialogs_js_1 = require("./methods/dialogs/find-dialogs.js");
179
179
  Object.defineProperty(exports, "findDialogs", { enumerable: true, get: function () { return find_dialogs_js_1.findDialogs; } });
180
180
  var find_folder_js_1 = require("./methods/dialogs/find-folder.js");
181
181
  Object.defineProperty(exports, "findFolder", { enumerable: true, get: function () { return find_folder_js_1.findFolder; } });
182
+ var get_chatlist_preview_js_1 = require("./methods/dialogs/get-chatlist-preview.js");
183
+ Object.defineProperty(exports, "getChatlistPreview", { enumerable: true, get: function () { return get_chatlist_preview_js_1.getChatlistPreview; } });
182
184
  var get_folders_js_1 = require("./methods/dialogs/get-folders.js");
183
185
  Object.defineProperty(exports, "getFolders", { enumerable: true, get: function () { return get_folders_js_1.getFolders; } });
184
186
  var get_peer_dialogs_js_1 = require("./methods/dialogs/get-peer-dialogs.js");
185
187
  Object.defineProperty(exports, "getPeerDialogs", { enumerable: true, get: function () { return get_peer_dialogs_js_1.getPeerDialogs; } });
186
188
  var iter_dialogs_js_1 = require("./methods/dialogs/iter-dialogs.js");
187
189
  Object.defineProperty(exports, "iterDialogs", { enumerable: true, get: function () { return iter_dialogs_js_1.iterDialogs; } });
190
+ var join_chatlist_js_1 = require("./methods/dialogs/join-chatlist.js");
191
+ Object.defineProperty(exports, "joinChatlist", { enumerable: true, get: function () { return join_chatlist_js_1.joinChatlist; } });
188
192
  var set_folders_order_js_1 = require("./methods/dialogs/set-folders-order.js");
189
193
  Object.defineProperty(exports, "setFoldersOrder", { enumerable: true, get: function () { return set_folders_order_js_1.setFoldersOrder; } });
190
194
  var download_buffer_js_1 = require("./methods/files/download-buffer.js");