@mtcute/core 0.10.1 → 0.11.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.
- package/cjs/highlevel/base.d.ts +1 -1
- package/cjs/highlevel/base.js +29 -23
- package/cjs/highlevel/base.js.map +1 -1
- package/cjs/highlevel/client.d.ts +3 -2
- package/cjs/highlevel/client.js +1 -0
- package/cjs/highlevel/client.js.map +1 -1
- package/cjs/highlevel/managers/app-config-manager.js +7 -5
- package/cjs/highlevel/managers/app-config-manager.js.map +1 -1
- package/cjs/highlevel/methods/_init.js.map +1 -1
- package/cjs/highlevel/methods/auth/start-test.js.map +1 -1
- package/cjs/highlevel/methods/auth/start.js.map +1 -1
- package/cjs/highlevel/methods/auth/utils.js.map +1 -1
- package/cjs/highlevel/methods/bots/get-callback-answer.js.map +1 -1
- package/cjs/highlevel/methods/bots/get-game-high-scores.js.map +1 -1
- package/cjs/highlevel/methods/bots/normalize-command-scope.js.map +1 -1
- package/cjs/highlevel/methods/bots/set-my-commands.js.map +1 -1
- package/cjs/highlevel/methods/chats/add-chat-members.js.map +1 -1
- package/cjs/highlevel/methods/chats/ban-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/batched-queries.js.map +1 -1
- package/cjs/highlevel/methods/chats/delete-chat-photo.js.map +1 -1
- package/cjs/highlevel/methods/chats/delete-history.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-event-log.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-members.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-preview.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-full-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-similar-channels.js.map +1 -1
- package/cjs/highlevel/methods/chats/iter-chat-event-log.js.map +1 -1
- package/cjs/highlevel/methods/chats/iter-chat-members.js.map +1 -1
- package/cjs/highlevel/methods/chats/join-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/kick-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/leave-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/open-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/reorder-usernames.js.map +1 -1
- package/cjs/highlevel/methods/chats/restrict-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/save-draft.js.map +1 -1
- package/cjs/highlevel/methods/chats/set-chat-color.js.map +1 -1
- package/cjs/highlevel/methods/chats/set-chat-photo.js.map +1 -1
- package/cjs/highlevel/methods/chats/set-chat-title.js.map +1 -1
- package/cjs/highlevel/methods/chats/toggle-fragment-username.js.map +1 -1
- package/cjs/highlevel/methods/chats/unarchive-chats.js.map +1 -1
- package/cjs/highlevel/methods/chats/unban-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/contacts/delete-contacts.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/create-folder.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/edit-folder.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/find-folder.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/get-folders.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
- package/cjs/highlevel/methods/files/download-buffer.js.map +1 -1
- package/cjs/highlevel/methods/files/download-iterable.js +1 -1
- package/cjs/highlevel/methods/files/download-iterable.js.map +1 -1
- package/cjs/highlevel/methods/files/download-node-stream.js.map +1 -1
- package/cjs/highlevel/methods/files/download-stream.js.map +1 -1
- package/cjs/highlevel/methods/files/normalize-file-to-document.js.map +1 -1
- package/cjs/highlevel/methods/files/normalize-input-file.js.map +1 -1
- package/cjs/highlevel/methods/files/normalize-input-media.js +1 -2
- package/cjs/highlevel/methods/files/normalize-input-media.js.map +1 -1
- package/cjs/highlevel/methods/files/upload-file.js +7 -6
- package/cjs/highlevel/methods/files/upload-file.js.map +1 -1
- package/cjs/highlevel/methods/files/upload-media.js.map +1 -1
- package/cjs/highlevel/methods/forums/iter-forum-topics.js.map +1 -1
- package/cjs/highlevel/methods/invite-links/get-primary-invite-link.js.map +1 -1
- package/cjs/highlevel/methods/invite-links/iter-invite-link-members.js.map +1 -1
- package/cjs/highlevel/methods/invite-links/iter-invite-links.js.map +1 -1
- package/cjs/highlevel/methods/messages/close-poll.js.map +1 -1
- package/cjs/highlevel/methods/messages/delete-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/edit-inline-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/edit-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/find-in-update.js.map +1 -1
- package/cjs/highlevel/methods/messages/forward-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-discussion-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-history.js +5 -1
- package/cjs/highlevel/methods/messages/get-history.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-message-by-link.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-message-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-message-reactions.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-reply-to.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-history.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-reaction-users.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-search-global.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-search-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/read-history.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-answer.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-comment.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-common.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-copy-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-copy.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-media-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-media.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-quote.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-typing.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-vote.js.map +1 -1
- package/cjs/highlevel/methods/messages/translate-text.js.map +1 -1
- package/cjs/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
- package/cjs/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
- package/cjs/highlevel/methods/misc/normalize-text.js.map +1 -1
- package/cjs/highlevel/methods/misc/with-params.js.map +1 -1
- package/cjs/highlevel/methods/password/change-cloud-password.js.map +1 -1
- package/cjs/highlevel/methods/password/enable-cloud-password.js.map +1 -1
- package/cjs/highlevel/methods/password/remove-cloud-password.js.map +1 -1
- package/cjs/highlevel/methods/premium/can-apply-boost.js.map +1 -1
- package/cjs/highlevel/methods/premium/iter-boosters.js.map +1 -1
- package/cjs/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
- package/cjs/highlevel/methods/stickers/delete-sticker-from-set.js.map +1 -1
- package/cjs/highlevel/methods/stickers/get-custom-emojis.js.map +1 -1
- package/cjs/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
- package/cjs/highlevel/methods/stories/can-send-story.js.map +1 -1
- package/cjs/highlevel/methods/stories/edit-story.js.map +1 -1
- package/cjs/highlevel/methods/stories/find-in-update.js.map +1 -1
- package/cjs/highlevel/methods/stories/hide-my-stories-views.js.map +1 -1
- package/cjs/highlevel/methods/stories/iter-all-stories.js.map +1 -1
- package/cjs/highlevel/methods/stories/iter-profile-stories.js.map +1 -1
- package/cjs/highlevel/methods/stories/iter-story-viewers.js.map +1 -1
- package/cjs/highlevel/methods/stories/send-story.js.map +1 -1
- package/cjs/highlevel/methods/users/delete-profile-photos.js.map +1 -1
- package/cjs/highlevel/methods/users/get-users.js.map +1 -1
- package/cjs/highlevel/methods/users/iter-profile-photos.js.map +1 -1
- package/cjs/highlevel/methods/users/resolve-peer-many.js.map +1 -1
- package/cjs/highlevel/methods/users/resolve-peer.js.map +1 -1
- package/cjs/highlevel/methods/users/set-my-emoji-status.js.map +1 -1
- package/cjs/highlevel/methods/users/set-my-profile-photo.js.map +1 -1
- package/cjs/highlevel/storage/service/current-user.js +2 -0
- package/cjs/highlevel/storage/service/current-user.js.map +1 -1
- package/cjs/highlevel/storage/service/peers.js +5 -1
- package/cjs/highlevel/storage/service/peers.js.map +1 -1
- package/cjs/highlevel/storage/service/ref-messages.js +3 -0
- package/cjs/highlevel/storage/service/ref-messages.js.map +1 -1
- package/cjs/highlevel/storage/service/updates.js +1 -0
- package/cjs/highlevel/storage/service/updates.js.map +1 -1
- package/cjs/highlevel/storage/storage.d.ts +1 -1
- package/cjs/highlevel/storage/storage.js +17 -4
- package/cjs/highlevel/storage/storage.js.map +1 -1
- package/cjs/highlevel/types/auth/sent-code.js +1 -0
- package/cjs/highlevel/types/auth/sent-code.js.map +1 -1
- package/cjs/highlevel/types/bots/game-high-score.js +2 -0
- package/cjs/highlevel/types/bots/game-high-score.js.map +1 -1
- package/cjs/highlevel/types/bots/inline-message/factories.js.map +1 -1
- package/cjs/highlevel/types/bots/inline-result/factories.js.map +1 -1
- package/cjs/highlevel/types/bots/keyboards/builder.js +2 -1
- package/cjs/highlevel/types/bots/keyboards/builder.js.map +1 -1
- package/cjs/highlevel/types/bots/keyboards/factories.js.map +1 -1
- package/cjs/highlevel/types/calls/discard-reason.js.map +1 -1
- package/cjs/highlevel/types/conversation.js +13 -7
- package/cjs/highlevel/types/conversation.js.map +1 -1
- package/cjs/highlevel/types/errors.js +3 -0
- package/cjs/highlevel/types/errors.js.map +1 -1
- package/cjs/highlevel/types/files/file-location.js +3 -0
- package/cjs/highlevel/types/files/file-location.js.map +1 -1
- package/cjs/highlevel/types/files/uploaded-file.js +1 -1
- package/cjs/highlevel/types/files/uploaded-file.js.map +1 -1
- package/cjs/highlevel/types/files/utils.d.ts +3 -3
- package/cjs/highlevel/types/files/utils.js.map +1 -1
- package/cjs/highlevel/types/files/web-document.js +1 -0
- package/cjs/highlevel/types/files/web-document.js.map +1 -1
- package/cjs/highlevel/types/media/audio.js +3 -2
- package/cjs/highlevel/types/media/audio.js.map +1 -1
- package/cjs/highlevel/types/media/contact.js +2 -1
- package/cjs/highlevel/types/media/contact.js.map +1 -1
- package/cjs/highlevel/types/media/dice.js +125 -124
- package/cjs/highlevel/types/media/dice.js.map +1 -1
- package/cjs/highlevel/types/media/document-utils.js.map +1 -1
- package/cjs/highlevel/types/media/document.js +2 -4
- package/cjs/highlevel/types/media/document.js.map +1 -1
- package/cjs/highlevel/types/media/game.js +2 -1
- package/cjs/highlevel/types/media/game.js.map +1 -1
- package/cjs/highlevel/types/media/invoice.js +4 -1
- package/cjs/highlevel/types/media/invoice.js.map +1 -1
- package/cjs/highlevel/types/media/location.js +4 -5
- package/cjs/highlevel/types/media/location.js.map +1 -1
- package/cjs/highlevel/types/media/photo.js +8 -1
- package/cjs/highlevel/types/media/photo.js.map +1 -1
- package/cjs/highlevel/types/media/poll.js +4 -1
- package/cjs/highlevel/types/media/poll.js.map +1 -1
- package/cjs/highlevel/types/media/sticker.js +3 -1
- package/cjs/highlevel/types/media/sticker.js.map +1 -1
- package/cjs/highlevel/types/media/story.js +3 -1
- package/cjs/highlevel/types/media/story.js.map +1 -1
- package/cjs/highlevel/types/media/thumbnail.js +35 -22
- package/cjs/highlevel/types/media/thumbnail.js.map +1 -1
- package/cjs/highlevel/types/media/venue.js +2 -1
- package/cjs/highlevel/types/media/venue.js.map +1 -1
- package/cjs/highlevel/types/media/video.js +3 -1
- package/cjs/highlevel/types/media/video.js.map +1 -1
- package/cjs/highlevel/types/media/voice.js +2 -1
- package/cjs/highlevel/types/media/voice.js.map +1 -1
- package/cjs/highlevel/types/media/web-page.js +2 -1
- package/cjs/highlevel/types/media/web-page.js.map +1 -1
- package/cjs/highlevel/types/messages/dialog.js +3 -0
- package/cjs/highlevel/types/messages/dialog.js.map +1 -1
- package/cjs/highlevel/types/messages/draft-message.js +1 -0
- package/cjs/highlevel/types/messages/draft-message.js.map +1 -1
- package/cjs/highlevel/types/messages/message-action.js.map +1 -1
- package/cjs/highlevel/types/messages/message-entity.js +2 -0
- package/cjs/highlevel/types/messages/message-entity.js.map +1 -1
- package/cjs/highlevel/types/messages/message-forward.js +2 -0
- package/cjs/highlevel/types/messages/message-forward.js.map +1 -1
- package/cjs/highlevel/types/messages/message-media.js.map +1 -1
- package/cjs/highlevel/types/messages/message-reactions.js +4 -0
- package/cjs/highlevel/types/messages/message-reactions.js.map +1 -1
- package/cjs/highlevel/types/messages/message-replies.js +2 -0
- package/cjs/highlevel/types/messages/message-replies.js.map +1 -1
- package/cjs/highlevel/types/messages/message.js +6 -0
- package/cjs/highlevel/types/messages/message.js.map +1 -1
- package/cjs/highlevel/types/messages/replied-message.js +2 -0
- package/cjs/highlevel/types/messages/replied-message.js.map +1 -1
- package/cjs/highlevel/types/misc/sticker-set.js +7 -1
- package/cjs/highlevel/types/misc/sticker-set.js.map +1 -1
- package/cjs/highlevel/types/misc/takeout-session.js +5 -0
- package/cjs/highlevel/types/misc/takeout-session.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-colors.js +2 -0
- package/cjs/highlevel/types/peers/chat-colors.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-event/actions.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-event/filters.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-event/index.js +2 -0
- package/cjs/highlevel/types/peers/chat-event/index.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-invite-link-member.js +2 -0
- package/cjs/highlevel/types/peers/chat-invite-link-member.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-invite-link.js +2 -0
- package/cjs/highlevel/types/peers/chat-invite-link.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-location.js +1 -0
- package/cjs/highlevel/types/peers/chat-location.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-member.js +2 -0
- package/cjs/highlevel/types/peers/chat-member.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-permissions.js +1 -0
- package/cjs/highlevel/types/peers/chat-permissions.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-photo.js +5 -0
- package/cjs/highlevel/types/peers/chat-photo.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-preview.js +2 -0
- package/cjs/highlevel/types/peers/chat-preview.js.map +1 -1
- package/cjs/highlevel/types/peers/chat.js +12 -1
- package/cjs/highlevel/types/peers/chat.js.map +1 -1
- package/cjs/highlevel/types/peers/forum-topic.js +9 -6
- package/cjs/highlevel/types/peers/forum-topic.js.map +1 -1
- package/cjs/highlevel/types/peers/peer.js.map +1 -1
- package/cjs/highlevel/types/peers/peers-index.js +3 -1
- package/cjs/highlevel/types/peers/peers-index.js.map +1 -1
- package/cjs/highlevel/types/peers/user.js +5 -1
- package/cjs/highlevel/types/peers/user.js.map +1 -1
- package/cjs/highlevel/types/premium/boost-slot.js +2 -0
- package/cjs/highlevel/types/premium/boost-slot.js.map +1 -1
- package/cjs/highlevel/types/premium/boost-stats.js +1 -0
- package/cjs/highlevel/types/premium/boost-stats.js.map +1 -1
- package/cjs/highlevel/types/premium/boost.js +2 -0
- package/cjs/highlevel/types/premium/boost.js.map +1 -1
- package/cjs/highlevel/types/reactions/emoji-status.js +1 -0
- package/cjs/highlevel/types/reactions/emoji-status.js.map +1 -1
- package/cjs/highlevel/types/reactions/peer-reaction.js +2 -0
- package/cjs/highlevel/types/reactions/peer-reaction.js.map +1 -1
- package/cjs/highlevel/types/reactions/reaction-count.js +1 -0
- package/cjs/highlevel/types/reactions/reaction-count.js.map +1 -1
- package/cjs/highlevel/types/reactions/types.js.map +1 -1
- package/cjs/highlevel/types/stories/all-stories.d.ts +2 -2
- package/cjs/highlevel/types/stories/all-stories.js +3 -1
- package/cjs/highlevel/types/stories/all-stories.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/base.js +1 -0
- package/cjs/highlevel/types/stories/interactive/base.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/channel-post.js +3 -1
- package/cjs/highlevel/types/stories/interactive/channel-post.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/index.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/input.js +1 -0
- package/cjs/highlevel/types/stories/interactive/input.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/location.js +2 -1
- package/cjs/highlevel/types/stories/interactive/location.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/reaction.js +2 -1
- package/cjs/highlevel/types/stories/interactive/reaction.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/venue.js +2 -1
- package/cjs/highlevel/types/stories/interactive/venue.js.map +1 -1
- package/cjs/highlevel/types/stories/peer-stories.js +2 -0
- package/cjs/highlevel/types/stories/peer-stories.js.map +1 -1
- package/cjs/highlevel/types/stories/stealth-mode.js +1 -0
- package/cjs/highlevel/types/stories/stealth-mode.js.map +1 -1
- package/cjs/highlevel/types/stories/story-interactions.js +2 -0
- package/cjs/highlevel/types/stories/story-interactions.js.map +1 -1
- package/cjs/highlevel/types/stories/story-viewer.d.ts +1 -1
- package/cjs/highlevel/types/stories/story-viewer.js +6 -0
- package/cjs/highlevel/types/stories/story-viewer.js.map +1 -1
- package/cjs/highlevel/types/stories/story.js +2 -0
- package/cjs/highlevel/types/stories/story.js.map +1 -1
- package/cjs/highlevel/types/updates/bot-chat-join-request.js +2 -0
- package/cjs/highlevel/types/updates/bot-chat-join-request.js.map +1 -1
- package/cjs/highlevel/types/updates/bot-reaction.js +4 -0
- package/cjs/highlevel/types/updates/bot-reaction.js.map +1 -1
- package/cjs/highlevel/types/updates/bot-stopped.js +2 -0
- package/cjs/highlevel/types/updates/bot-stopped.js.map +1 -1
- package/cjs/highlevel/types/updates/callback-query.js +4 -0
- package/cjs/highlevel/types/updates/callback-query.js.map +1 -1
- package/cjs/highlevel/types/updates/chat-join-request.js +2 -0
- package/cjs/highlevel/types/updates/chat-join-request.js.map +1 -1
- package/cjs/highlevel/types/updates/chat-member-update.js +2 -0
- package/cjs/highlevel/types/updates/chat-member-update.js.map +1 -1
- package/cjs/highlevel/types/updates/chosen-inline-result.js +2 -0
- package/cjs/highlevel/types/updates/chosen-inline-result.js.map +1 -1
- package/cjs/highlevel/types/updates/delete-message-update.js +1 -0
- package/cjs/highlevel/types/updates/delete-message-update.js.map +1 -1
- package/cjs/highlevel/types/updates/delete-story-update.js +2 -0
- package/cjs/highlevel/types/updates/delete-story-update.js.map +1 -1
- package/cjs/highlevel/types/updates/history-read-update.js +1 -0
- package/cjs/highlevel/types/updates/history-read-update.js.map +1 -1
- package/cjs/highlevel/types/updates/inline-query.js +2 -0
- package/cjs/highlevel/types/updates/inline-query.js.map +1 -1
- package/cjs/highlevel/types/updates/parse-update.js.map +1 -1
- package/cjs/highlevel/types/updates/poll-update.js +2 -0
- package/cjs/highlevel/types/updates/poll-update.js.map +1 -1
- package/cjs/highlevel/types/updates/poll-vote.js +2 -0
- package/cjs/highlevel/types/updates/poll-vote.js.map +1 -1
- package/cjs/highlevel/types/updates/pre-checkout-query.js +2 -0
- package/cjs/highlevel/types/updates/pre-checkout-query.js.map +1 -1
- package/cjs/highlevel/types/updates/story-update.js +2 -0
- package/cjs/highlevel/types/updates/story-update.js.map +1 -1
- package/cjs/highlevel/types/updates/user-status-update.js +1 -0
- package/cjs/highlevel/types/updates/user-status-update.js.map +1 -1
- package/cjs/highlevel/types/updates/user-typing-update.js +1 -0
- package/cjs/highlevel/types/updates/user-typing-update.js.map +1 -1
- package/cjs/highlevel/updates/manager.d.ts +1 -1
- package/cjs/highlevel/updates/manager.js +50 -28
- package/cjs/highlevel/updates/manager.js.map +1 -1
- package/cjs/highlevel/updates/parsed.js.map +1 -1
- package/cjs/highlevel/updates/utils.js.map +1 -1
- package/cjs/highlevel/utils/convert-file-id.js.map +1 -1
- package/cjs/highlevel/utils/entities.js.map +1 -1
- package/cjs/highlevel/utils/file-type.d.ts +1 -0
- package/cjs/highlevel/utils/file-type.js +35 -1
- package/cjs/highlevel/utils/file-type.js.map +1 -1
- package/cjs/highlevel/utils/file-utils.js +1 -1
- package/cjs/highlevel/utils/file-utils.js.map +1 -1
- package/cjs/highlevel/utils/inline-utils.js.map +1 -1
- package/cjs/highlevel/utils/inspectable.js.map +1 -1
- package/cjs/highlevel/utils/memoize.js.map +1 -1
- package/cjs/highlevel/utils/peer-utils.js.map +1 -1
- package/cjs/highlevel/utils/query-batcher.js.map +1 -1
- package/cjs/highlevel/utils/rps-meter.js +3 -0
- package/cjs/highlevel/utils/rps-meter.js.map +1 -1
- package/cjs/highlevel/utils/stream-utils.js.map +1 -1
- package/cjs/highlevel/utils/string-session.d.ts +1 -2
- package/cjs/highlevel/utils/string-session.js +27 -7
- package/cjs/highlevel/utils/string-session.js.map +1 -1
- package/cjs/highlevel/utils/voice-utils.js.map +1 -1
- package/cjs/highlevel/worker/app-config.d.ts +2 -3
- package/cjs/highlevel/worker/app-config.js +6 -3
- package/cjs/highlevel/worker/app-config.js.map +1 -1
- package/cjs/highlevel/worker/errors.js.map +1 -1
- package/cjs/highlevel/worker/invoker.js +3 -2
- package/cjs/highlevel/worker/invoker.js.map +1 -1
- package/cjs/highlevel/worker/port.d.ts +16 -17
- package/cjs/highlevel/worker/port.js +74 -49
- package/cjs/highlevel/worker/port.js.map +1 -1
- package/cjs/highlevel/worker/protocol.d.ts +2 -2
- package/cjs/highlevel/worker/protocol.js.map +1 -1
- package/cjs/highlevel/worker/storage.d.ts +9 -13
- package/cjs/highlevel/worker/storage.js +34 -19
- package/cjs/highlevel/worker/storage.js.map +1 -1
- package/cjs/highlevel/worker/worker.js +3 -0
- package/cjs/highlevel/worker/worker.js.map +1 -1
- package/cjs/network/auth-key.js +8 -1
- package/cjs/network/auth-key.js.map +1 -1
- package/cjs/network/authorization.js.map +1 -1
- package/cjs/network/client.d.ts +1 -1
- package/cjs/network/client.js +39 -14
- package/cjs/network/client.js.map +1 -1
- package/cjs/network/config-manager.js.map +1 -1
- package/cjs/network/mtproto-session.d.ts +1 -1
- package/cjs/network/mtproto-session.js +40 -30
- package/cjs/network/mtproto-session.js.map +1 -1
- package/cjs/network/multi-session-connection.d.ts +2 -2
- package/cjs/network/multi-session-connection.js +13 -7
- package/cjs/network/multi-session-connection.js.map +1 -1
- package/cjs/network/network-manager.d.ts +2 -3
- package/cjs/network/network-manager.js +49 -28
- package/cjs/network/network-manager.js.map +1 -1
- package/cjs/network/persistent-connection.d.ts +3 -3
- package/cjs/network/persistent-connection.js +33 -22
- package/cjs/network/persistent-connection.js.map +1 -1
- package/cjs/network/server-salt.js +4 -5
- package/cjs/network/server-salt.js.map +1 -1
- package/cjs/network/session-connection.d.ts +1 -1
- package/cjs/network/session-connection.js +22 -12
- package/cjs/network/session-connection.js.map +1 -1
- package/cjs/network/transports/abstract.d.ts +2 -2
- package/cjs/network/transports/abstract.js +1 -0
- package/cjs/network/transports/abstract.js.map +1 -1
- package/cjs/network/transports/intermediate.js +1 -0
- package/cjs/network/transports/intermediate.js.map +1 -1
- package/cjs/network/transports/obfuscated.js +3 -0
- package/cjs/network/transports/obfuscated.js.map +1 -1
- package/cjs/network/transports/streamed.d.ts +1 -1
- package/cjs/network/transports/streamed.js +1 -4
- package/cjs/network/transports/streamed.js.map +1 -1
- package/cjs/network/transports/wrapped.d.ts +1 -1
- package/cjs/network/transports/wrapped.js +2 -0
- package/cjs/network/transports/wrapped.js.map +1 -1
- package/cjs/platform.js.map +1 -1
- package/cjs/storage/driver.js +3 -4
- package/cjs/storage/driver.js.map +1 -1
- package/cjs/storage/memory/driver.js +1 -3
- package/cjs/storage/memory/driver.js.map +1 -1
- package/cjs/storage/memory/index.js +5 -7
- package/cjs/storage/memory/index.js.map +1 -1
- package/cjs/storage/memory/repository/auth-keys.d.ts +1 -1
- package/cjs/storage/memory/repository/auth-keys.js +2 -0
- package/cjs/storage/memory/repository/auth-keys.js.map +1 -1
- package/cjs/storage/memory/repository/kv.d.ts +1 -1
- package/cjs/storage/memory/repository/kv.js +2 -0
- package/cjs/storage/memory/repository/kv.js.map +1 -1
- package/cjs/storage/memory/repository/peers.d.ts +1 -1
- package/cjs/storage/memory/repository/peers.js +2 -0
- package/cjs/storage/memory/repository/peers.js.map +1 -1
- package/cjs/storage/memory/repository/ref-messages.d.ts +1 -1
- package/cjs/storage/memory/repository/ref-messages.js +2 -0
- package/cjs/storage/memory/repository/ref-messages.js.map +1 -1
- package/cjs/storage/service/auth-keys.js +2 -0
- package/cjs/storage/service/auth-keys.js.map +1 -1
- package/cjs/storage/service/base.js +4 -0
- package/cjs/storage/service/base.js.map +1 -1
- package/cjs/storage/service/default-dcs.js +2 -0
- package/cjs/storage/service/default-dcs.js.map +1 -1
- package/cjs/storage/service/future-salts.js +2 -1
- package/cjs/storage/service/future-salts.js.map +1 -1
- package/cjs/storage/sqlite/driver.js +10 -10
- package/cjs/storage/sqlite/driver.js.map +1 -1
- package/cjs/storage/sqlite/index.d.ts +1 -1
- package/cjs/storage/sqlite/index.js +5 -0
- package/cjs/storage/sqlite/index.js.map +1 -1
- package/cjs/storage/sqlite/repository/auth-keys.js +9 -0
- package/cjs/storage/sqlite/repository/auth-keys.js.map +1 -1
- package/cjs/storage/sqlite/repository/kv.js +5 -0
- package/cjs/storage/sqlite/repository/kv.js.map +1 -1
- package/cjs/storage/sqlite/repository/peers.js +6 -0
- package/cjs/storage/sqlite/repository/peers.js.map +1 -1
- package/cjs/storage/sqlite/repository/ref-messages.d.ts +1 -1
- package/cjs/storage/sqlite/repository/ref-messages.js +6 -0
- package/cjs/storage/sqlite/repository/ref-messages.js.map +1 -1
- package/cjs/storage/storage.d.ts +1 -3
- package/cjs/storage/storage.js +21 -13
- package/cjs/storage/storage.js.map +1 -1
- package/cjs/types/errors.js +13 -0
- package/cjs/types/errors.js.map +1 -1
- package/cjs/types/utils.d.ts +1 -1
- package/cjs/types/utils.js.map +1 -1
- package/cjs/utils/async-lock.js +1 -3
- package/cjs/utils/async-lock.js.map +1 -1
- package/cjs/utils/bigint-utils.js.map +1 -1
- package/cjs/utils/binary/asn1-parser.js.map +1 -1
- package/cjs/utils/buffer-utils.js.map +1 -1
- package/cjs/utils/condition-variable.js +2 -0
- package/cjs/utils/condition-variable.js.map +1 -1
- package/cjs/utils/crypto/factorization.js.map +1 -1
- package/cjs/utils/crypto/keys.js.map +1 -1
- package/cjs/utils/crypto/miller-rabin.js.map +1 -1
- package/cjs/utils/crypto/password.js.map +1 -1
- package/cjs/utils/crypto/utils.js.map +1 -1
- package/cjs/utils/dcs.js +1 -1
- package/cjs/utils/dcs.js.map +1 -1
- package/cjs/utils/deque.js +8 -2
- package/cjs/utils/deque.js.map +1 -1
- package/cjs/utils/early-timer.js +4 -1
- package/cjs/utils/early-timer.js.map +1 -1
- package/cjs/utils/error-reporting.js.map +1 -1
- package/cjs/utils/function-utils.js.map +1 -1
- package/cjs/utils/linked-list.js +4 -1
- package/cjs/utils/linked-list.js.map +1 -1
- package/cjs/utils/links/bots.js.map +1 -1
- package/cjs/utils/links/chat.js.map +1 -1
- package/cjs/utils/links/common.js.map +1 -1
- package/cjs/utils/links/misc.js.map +1 -1
- package/cjs/utils/logger.d.ts +2 -2
- package/cjs/utils/logger.js +21 -14
- package/cjs/utils/logger.js.map +1 -1
- package/cjs/utils/long-utils.js +2 -6
- package/cjs/utils/long-utils.js.map +1 -1
- package/cjs/utils/lru-map.js +5 -1
- package/cjs/utils/lru-map.js.map +1 -1
- package/cjs/utils/lru-set.js +4 -0
- package/cjs/utils/lru-set.js.map +1 -1
- package/cjs/utils/peer-utils.js.map +1 -1
- package/cjs/utils/reloadable.d.ts +1 -1
- package/cjs/utils/reloadable.js +10 -7
- package/cjs/utils/reloadable.js.map +1 -1
- package/cjs/utils/sorted-array.js +2 -0
- package/cjs/utils/sorted-array.js.map +1 -1
- package/cjs/utils/tl-json.js.map +1 -1
- package/cjs/utils/type-assertions.js.map +1 -1
- package/esm/highlevel/base.d.ts +1 -1
- package/esm/highlevel/base.js +29 -23
- package/esm/highlevel/base.js.map +1 -1
- package/esm/highlevel/client.d.ts +2 -1
- package/esm/highlevel/client.js +1 -0
- package/esm/highlevel/client.js.map +1 -1
- package/esm/highlevel/managers/app-config-manager.js +7 -5
- package/esm/highlevel/managers/app-config-manager.js.map +1 -1
- package/esm/highlevel/methods/_init.js.map +1 -1
- package/esm/highlevel/methods/auth/start-test.js.map +1 -1
- package/esm/highlevel/methods/auth/start.js.map +1 -1
- package/esm/highlevel/methods/auth/utils.js.map +1 -1
- package/esm/highlevel/methods/bots/get-callback-answer.js.map +1 -1
- package/esm/highlevel/methods/bots/get-game-high-scores.js.map +1 -1
- package/esm/highlevel/methods/bots/normalize-command-scope.js.map +1 -1
- package/esm/highlevel/methods/bots/set-my-commands.js.map +1 -1
- package/esm/highlevel/methods/chats/add-chat-members.js.map +1 -1
- package/esm/highlevel/methods/chats/ban-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/batched-queries.js.map +1 -1
- package/esm/highlevel/methods/chats/delete-chat-photo.js.map +1 -1
- package/esm/highlevel/methods/chats/delete-history.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-event-log.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-members.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-preview.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/get-full-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
- package/esm/highlevel/methods/chats/get-similar-channels.js.map +1 -1
- package/esm/highlevel/methods/chats/iter-chat-event-log.js.map +1 -1
- package/esm/highlevel/methods/chats/iter-chat-members.js.map +1 -1
- package/esm/highlevel/methods/chats/join-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/kick-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/leave-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/open-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/reorder-usernames.js.map +1 -1
- package/esm/highlevel/methods/chats/restrict-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/save-draft.js.map +1 -1
- package/esm/highlevel/methods/chats/set-chat-color.js.map +1 -1
- package/esm/highlevel/methods/chats/set-chat-photo.js.map +1 -1
- package/esm/highlevel/methods/chats/set-chat-title.js.map +1 -1
- package/esm/highlevel/methods/chats/toggle-fragment-username.js.map +1 -1
- package/esm/highlevel/methods/chats/unarchive-chats.js.map +1 -1
- package/esm/highlevel/methods/chats/unban-chat-member.js.map +1 -1
- package/esm/highlevel/methods/contacts/delete-contacts.js.map +1 -1
- package/esm/highlevel/methods/dialogs/create-folder.js.map +1 -1
- package/esm/highlevel/methods/dialogs/edit-folder.js.map +1 -1
- package/esm/highlevel/methods/dialogs/find-folder.js.map +1 -1
- package/esm/highlevel/methods/dialogs/get-folders.js.map +1 -1
- package/esm/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
- package/esm/highlevel/methods/files/download-buffer.js.map +1 -1
- package/esm/highlevel/methods/files/download-iterable.js +1 -1
- package/esm/highlevel/methods/files/download-iterable.js.map +1 -1
- package/esm/highlevel/methods/files/download-node-stream.js.map +1 -1
- package/esm/highlevel/methods/files/download-stream.js.map +1 -1
- package/esm/highlevel/methods/files/normalize-file-to-document.js.map +1 -1
- package/esm/highlevel/methods/files/normalize-input-file.js.map +1 -1
- package/esm/highlevel/methods/files/normalize-input-media.js +1 -2
- package/esm/highlevel/methods/files/normalize-input-media.js.map +1 -1
- package/esm/highlevel/methods/files/upload-file.js +8 -7
- package/esm/highlevel/methods/files/upload-file.js.map +1 -1
- package/esm/highlevel/methods/files/upload-media.js.map +1 -1
- package/esm/highlevel/methods/forums/iter-forum-topics.js.map +1 -1
- package/esm/highlevel/methods/invite-links/get-primary-invite-link.js.map +1 -1
- package/esm/highlevel/methods/invite-links/iter-invite-link-members.js.map +1 -1
- package/esm/highlevel/methods/invite-links/iter-invite-links.js.map +1 -1
- package/esm/highlevel/methods/messages/close-poll.js.map +1 -1
- package/esm/highlevel/methods/messages/delete-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/edit-inline-message.js.map +1 -1
- package/esm/highlevel/methods/messages/edit-message.js.map +1 -1
- package/esm/highlevel/methods/messages/find-in-update.js.map +1 -1
- package/esm/highlevel/methods/messages/forward-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
- package/esm/highlevel/methods/messages/get-discussion-message.js.map +1 -1
- package/esm/highlevel/methods/messages/get-history.js +5 -1
- package/esm/highlevel/methods/messages/get-history.js.map +1 -1
- package/esm/highlevel/methods/messages/get-message-by-link.js.map +1 -1
- package/esm/highlevel/methods/messages/get-message-group.js.map +1 -1
- package/esm/highlevel/methods/messages/get-message-reactions.js.map +1 -1
- package/esm/highlevel/methods/messages/get-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/get-reply-to.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-history.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-reaction-users.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-search-global.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-search-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/read-history.js.map +1 -1
- package/esm/highlevel/methods/messages/send-answer.js.map +1 -1
- package/esm/highlevel/methods/messages/send-comment.js.map +1 -1
- package/esm/highlevel/methods/messages/send-common.js.map +1 -1
- package/esm/highlevel/methods/messages/send-copy-group.js.map +1 -1
- package/esm/highlevel/methods/messages/send-copy.js.map +1 -1
- package/esm/highlevel/methods/messages/send-media-group.js.map +1 -1
- package/esm/highlevel/methods/messages/send-media.js.map +1 -1
- package/esm/highlevel/methods/messages/send-quote.js.map +1 -1
- package/esm/highlevel/methods/messages/send-text.js.map +1 -1
- package/esm/highlevel/methods/messages/send-typing.js.map +1 -1
- package/esm/highlevel/methods/messages/send-vote.js.map +1 -1
- package/esm/highlevel/methods/messages/translate-text.js.map +1 -1
- package/esm/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
- package/esm/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
- package/esm/highlevel/methods/misc/normalize-text.js.map +1 -1
- package/esm/highlevel/methods/misc/with-params.js.map +1 -1
- package/esm/highlevel/methods/password/change-cloud-password.js.map +1 -1
- package/esm/highlevel/methods/password/enable-cloud-password.js.map +1 -1
- package/esm/highlevel/methods/password/remove-cloud-password.js.map +1 -1
- package/esm/highlevel/methods/premium/can-apply-boost.js.map +1 -1
- package/esm/highlevel/methods/premium/iter-boosters.js.map +1 -1
- package/esm/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
- package/esm/highlevel/methods/stickers/delete-sticker-from-set.js.map +1 -1
- package/esm/highlevel/methods/stickers/get-custom-emojis.js.map +1 -1
- package/esm/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
- package/esm/highlevel/methods/stories/can-send-story.js.map +1 -1
- package/esm/highlevel/methods/stories/edit-story.js.map +1 -1
- package/esm/highlevel/methods/stories/find-in-update.js.map +1 -1
- package/esm/highlevel/methods/stories/hide-my-stories-views.js.map +1 -1
- package/esm/highlevel/methods/stories/iter-all-stories.js.map +1 -1
- package/esm/highlevel/methods/stories/iter-profile-stories.js.map +1 -1
- package/esm/highlevel/methods/stories/iter-story-viewers.js.map +1 -1
- package/esm/highlevel/methods/stories/send-story.js.map +1 -1
- package/esm/highlevel/methods/users/delete-profile-photos.js.map +1 -1
- package/esm/highlevel/methods/users/get-users.js.map +1 -1
- package/esm/highlevel/methods/users/iter-profile-photos.js.map +1 -1
- package/esm/highlevel/methods/users/resolve-peer-many.js.map +1 -1
- package/esm/highlevel/methods/users/resolve-peer.js.map +1 -1
- package/esm/highlevel/methods/users/set-my-emoji-status.js.map +1 -1
- package/esm/highlevel/methods/users/set-my-profile-photo.js.map +1 -1
- package/esm/highlevel/storage/service/current-user.js +2 -0
- package/esm/highlevel/storage/service/current-user.js.map +1 -1
- package/esm/highlevel/storage/service/peers.js +5 -1
- package/esm/highlevel/storage/service/peers.js.map +1 -1
- package/esm/highlevel/storage/service/ref-messages.js +3 -0
- package/esm/highlevel/storage/service/ref-messages.js.map +1 -1
- package/esm/highlevel/storage/service/updates.js +1 -0
- package/esm/highlevel/storage/service/updates.js.map +1 -1
- package/esm/highlevel/storage/storage.d.ts +1 -1
- package/esm/highlevel/storage/storage.js +17 -4
- package/esm/highlevel/storage/storage.js.map +1 -1
- package/esm/highlevel/types/auth/sent-code.js +1 -0
- package/esm/highlevel/types/auth/sent-code.js.map +1 -1
- package/esm/highlevel/types/bots/game-high-score.js +2 -0
- package/esm/highlevel/types/bots/game-high-score.js.map +1 -1
- package/esm/highlevel/types/bots/inline-message/factories.js.map +1 -1
- package/esm/highlevel/types/bots/inline-result/factories.js.map +1 -1
- package/esm/highlevel/types/bots/keyboards/builder.js +2 -1
- package/esm/highlevel/types/bots/keyboards/builder.js.map +1 -1
- package/esm/highlevel/types/bots/keyboards/factories.js.map +1 -1
- package/esm/highlevel/types/calls/discard-reason.js.map +1 -1
- package/esm/highlevel/types/conversation.js +13 -7
- package/esm/highlevel/types/conversation.js.map +1 -1
- package/esm/highlevel/types/errors.js +3 -0
- package/esm/highlevel/types/errors.js.map +1 -1
- package/esm/highlevel/types/files/file-location.js +3 -0
- package/esm/highlevel/types/files/file-location.js.map +1 -1
- package/esm/highlevel/types/files/uploaded-file.js +1 -1
- package/esm/highlevel/types/files/uploaded-file.js.map +1 -1
- package/esm/highlevel/types/files/utils.d.ts +1 -1
- package/esm/highlevel/types/files/utils.js.map +1 -1
- package/esm/highlevel/types/files/web-document.js +1 -0
- package/esm/highlevel/types/files/web-document.js.map +1 -1
- package/esm/highlevel/types/media/audio.js +3 -2
- package/esm/highlevel/types/media/audio.js.map +1 -1
- package/esm/highlevel/types/media/contact.js +2 -1
- package/esm/highlevel/types/media/contact.js.map +1 -1
- package/esm/highlevel/types/media/dice.js +125 -124
- package/esm/highlevel/types/media/dice.js.map +1 -1
- package/esm/highlevel/types/media/document-utils.js.map +1 -1
- package/esm/highlevel/types/media/document.js +2 -4
- package/esm/highlevel/types/media/document.js.map +1 -1
- package/esm/highlevel/types/media/game.js +2 -1
- package/esm/highlevel/types/media/game.js.map +1 -1
- package/esm/highlevel/types/media/invoice.js +4 -1
- package/esm/highlevel/types/media/invoice.js.map +1 -1
- package/esm/highlevel/types/media/location.js +4 -5
- package/esm/highlevel/types/media/location.js.map +1 -1
- package/esm/highlevel/types/media/photo.js +8 -1
- package/esm/highlevel/types/media/photo.js.map +1 -1
- package/esm/highlevel/types/media/poll.js +4 -1
- package/esm/highlevel/types/media/poll.js.map +1 -1
- package/esm/highlevel/types/media/sticker.js +3 -1
- package/esm/highlevel/types/media/sticker.js.map +1 -1
- package/esm/highlevel/types/media/story.js +3 -1
- package/esm/highlevel/types/media/story.js.map +1 -1
- package/esm/highlevel/types/media/thumbnail.js +35 -22
- package/esm/highlevel/types/media/thumbnail.js.map +1 -1
- package/esm/highlevel/types/media/venue.js +2 -1
- package/esm/highlevel/types/media/venue.js.map +1 -1
- package/esm/highlevel/types/media/video.js +3 -1
- package/esm/highlevel/types/media/video.js.map +1 -1
- package/esm/highlevel/types/media/voice.js +2 -1
- package/esm/highlevel/types/media/voice.js.map +1 -1
- package/esm/highlevel/types/media/web-page.js +2 -1
- package/esm/highlevel/types/media/web-page.js.map +1 -1
- package/esm/highlevel/types/messages/dialog.js +3 -0
- package/esm/highlevel/types/messages/dialog.js.map +1 -1
- package/esm/highlevel/types/messages/draft-message.js +1 -0
- package/esm/highlevel/types/messages/draft-message.js.map +1 -1
- package/esm/highlevel/types/messages/message-action.js.map +1 -1
- package/esm/highlevel/types/messages/message-entity.js +2 -0
- package/esm/highlevel/types/messages/message-entity.js.map +1 -1
- package/esm/highlevel/types/messages/message-forward.js +2 -0
- package/esm/highlevel/types/messages/message-forward.js.map +1 -1
- package/esm/highlevel/types/messages/message-media.js.map +1 -1
- package/esm/highlevel/types/messages/message-reactions.js +4 -0
- package/esm/highlevel/types/messages/message-reactions.js.map +1 -1
- package/esm/highlevel/types/messages/message-replies.js +2 -0
- package/esm/highlevel/types/messages/message-replies.js.map +1 -1
- package/esm/highlevel/types/messages/message.js +6 -0
- package/esm/highlevel/types/messages/message.js.map +1 -1
- package/esm/highlevel/types/messages/replied-message.js +2 -0
- package/esm/highlevel/types/messages/replied-message.js.map +1 -1
- package/esm/highlevel/types/misc/sticker-set.js +7 -1
- package/esm/highlevel/types/misc/sticker-set.js.map +1 -1
- package/esm/highlevel/types/misc/takeout-session.js +5 -0
- package/esm/highlevel/types/misc/takeout-session.js.map +1 -1
- package/esm/highlevel/types/peers/chat-colors.js +2 -0
- package/esm/highlevel/types/peers/chat-colors.js.map +1 -1
- package/esm/highlevel/types/peers/chat-event/actions.js.map +1 -1
- package/esm/highlevel/types/peers/chat-event/filters.js.map +1 -1
- package/esm/highlevel/types/peers/chat-event/index.js +2 -0
- package/esm/highlevel/types/peers/chat-event/index.js.map +1 -1
- package/esm/highlevel/types/peers/chat-invite-link-member.js +2 -0
- package/esm/highlevel/types/peers/chat-invite-link-member.js.map +1 -1
- package/esm/highlevel/types/peers/chat-invite-link.js +2 -0
- package/esm/highlevel/types/peers/chat-invite-link.js.map +1 -1
- package/esm/highlevel/types/peers/chat-location.js +1 -0
- package/esm/highlevel/types/peers/chat-location.js.map +1 -1
- package/esm/highlevel/types/peers/chat-member.js +2 -0
- package/esm/highlevel/types/peers/chat-member.js.map +1 -1
- package/esm/highlevel/types/peers/chat-permissions.js +1 -0
- package/esm/highlevel/types/peers/chat-permissions.js.map +1 -1
- package/esm/highlevel/types/peers/chat-photo.js +5 -0
- package/esm/highlevel/types/peers/chat-photo.js.map +1 -1
- package/esm/highlevel/types/peers/chat-preview.js +2 -0
- package/esm/highlevel/types/peers/chat-preview.js.map +1 -1
- package/esm/highlevel/types/peers/chat.js +12 -1
- package/esm/highlevel/types/peers/chat.js.map +1 -1
- package/esm/highlevel/types/peers/forum-topic.js +9 -6
- package/esm/highlevel/types/peers/forum-topic.js.map +1 -1
- package/esm/highlevel/types/peers/peer.js.map +1 -1
- package/esm/highlevel/types/peers/peers-index.js +3 -1
- package/esm/highlevel/types/peers/peers-index.js.map +1 -1
- package/esm/highlevel/types/peers/user.js +5 -1
- package/esm/highlevel/types/peers/user.js.map +1 -1
- package/esm/highlevel/types/premium/boost-slot.js +2 -0
- package/esm/highlevel/types/premium/boost-slot.js.map +1 -1
- package/esm/highlevel/types/premium/boost-stats.js +1 -0
- package/esm/highlevel/types/premium/boost-stats.js.map +1 -1
- package/esm/highlevel/types/premium/boost.js +2 -0
- package/esm/highlevel/types/premium/boost.js.map +1 -1
- package/esm/highlevel/types/reactions/emoji-status.js +1 -0
- package/esm/highlevel/types/reactions/emoji-status.js.map +1 -1
- package/esm/highlevel/types/reactions/peer-reaction.js +2 -0
- package/esm/highlevel/types/reactions/peer-reaction.js.map +1 -1
- package/esm/highlevel/types/reactions/reaction-count.js +1 -0
- package/esm/highlevel/types/reactions/reaction-count.js.map +1 -1
- package/esm/highlevel/types/reactions/types.js.map +1 -1
- package/esm/highlevel/types/stories/all-stories.d.ts +2 -2
- package/esm/highlevel/types/stories/all-stories.js +3 -1
- package/esm/highlevel/types/stories/all-stories.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/base.js +1 -0
- package/esm/highlevel/types/stories/interactive/base.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/channel-post.js +3 -1
- package/esm/highlevel/types/stories/interactive/channel-post.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/index.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/input.js +1 -0
- package/esm/highlevel/types/stories/interactive/input.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/location.js +2 -1
- package/esm/highlevel/types/stories/interactive/location.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/reaction.js +2 -1
- package/esm/highlevel/types/stories/interactive/reaction.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/venue.js +2 -1
- package/esm/highlevel/types/stories/interactive/venue.js.map +1 -1
- package/esm/highlevel/types/stories/peer-stories.js +2 -0
- package/esm/highlevel/types/stories/peer-stories.js.map +1 -1
- package/esm/highlevel/types/stories/stealth-mode.js +1 -0
- package/esm/highlevel/types/stories/stealth-mode.js.map +1 -1
- package/esm/highlevel/types/stories/story-interactions.js +2 -0
- package/esm/highlevel/types/stories/story-interactions.js.map +1 -1
- package/esm/highlevel/types/stories/story-viewer.d.ts +1 -1
- package/esm/highlevel/types/stories/story-viewer.js +6 -0
- package/esm/highlevel/types/stories/story-viewer.js.map +1 -1
- package/esm/highlevel/types/stories/story.js +2 -0
- package/esm/highlevel/types/stories/story.js.map +1 -1
- package/esm/highlevel/types/updates/bot-chat-join-request.js +2 -0
- package/esm/highlevel/types/updates/bot-chat-join-request.js.map +1 -1
- package/esm/highlevel/types/updates/bot-reaction.js +4 -0
- package/esm/highlevel/types/updates/bot-reaction.js.map +1 -1
- package/esm/highlevel/types/updates/bot-stopped.js +2 -0
- package/esm/highlevel/types/updates/bot-stopped.js.map +1 -1
- package/esm/highlevel/types/updates/callback-query.js +4 -0
- package/esm/highlevel/types/updates/callback-query.js.map +1 -1
- package/esm/highlevel/types/updates/chat-join-request.js +2 -0
- package/esm/highlevel/types/updates/chat-join-request.js.map +1 -1
- package/esm/highlevel/types/updates/chat-member-update.js +2 -0
- package/esm/highlevel/types/updates/chat-member-update.js.map +1 -1
- package/esm/highlevel/types/updates/chosen-inline-result.js +2 -0
- package/esm/highlevel/types/updates/chosen-inline-result.js.map +1 -1
- package/esm/highlevel/types/updates/delete-message-update.js +1 -0
- package/esm/highlevel/types/updates/delete-message-update.js.map +1 -1
- package/esm/highlevel/types/updates/delete-story-update.js +2 -0
- package/esm/highlevel/types/updates/delete-story-update.js.map +1 -1
- package/esm/highlevel/types/updates/history-read-update.js +1 -0
- package/esm/highlevel/types/updates/history-read-update.js.map +1 -1
- package/esm/highlevel/types/updates/inline-query.js +2 -0
- package/esm/highlevel/types/updates/inline-query.js.map +1 -1
- package/esm/highlevel/types/updates/parse-update.js.map +1 -1
- package/esm/highlevel/types/updates/poll-update.js +2 -0
- package/esm/highlevel/types/updates/poll-update.js.map +1 -1
- package/esm/highlevel/types/updates/poll-vote.js +2 -0
- package/esm/highlevel/types/updates/poll-vote.js.map +1 -1
- package/esm/highlevel/types/updates/pre-checkout-query.js +2 -0
- package/esm/highlevel/types/updates/pre-checkout-query.js.map +1 -1
- package/esm/highlevel/types/updates/story-update.js +2 -0
- package/esm/highlevel/types/updates/story-update.js.map +1 -1
- package/esm/highlevel/types/updates/user-status-update.js +1 -0
- package/esm/highlevel/types/updates/user-status-update.js.map +1 -1
- package/esm/highlevel/types/updates/user-typing-update.js +1 -0
- package/esm/highlevel/types/updates/user-typing-update.js.map +1 -1
- package/esm/highlevel/updates/manager.js +50 -28
- package/esm/highlevel/updates/manager.js.map +1 -1
- package/esm/highlevel/updates/parsed.js.map +1 -1
- package/esm/highlevel/updates/utils.js.map +1 -1
- package/esm/highlevel/utils/convert-file-id.js.map +1 -1
- package/esm/highlevel/utils/entities.js.map +1 -1
- package/esm/highlevel/utils/file-type.d.ts +1 -0
- package/esm/highlevel/utils/file-type.js +34 -0
- package/esm/highlevel/utils/file-type.js.map +1 -1
- package/esm/highlevel/utils/file-utils.js +1 -1
- package/esm/highlevel/utils/file-utils.js.map +1 -1
- package/esm/highlevel/utils/inline-utils.js.map +1 -1
- package/esm/highlevel/utils/inspectable.js.map +1 -1
- package/esm/highlevel/utils/memoize.js.map +1 -1
- package/esm/highlevel/utils/peer-utils.js.map +1 -1
- package/esm/highlevel/utils/query-batcher.js.map +1 -1
- package/esm/highlevel/utils/rps-meter.js +3 -0
- package/esm/highlevel/utils/rps-meter.js.map +1 -1
- package/esm/highlevel/utils/stream-utils.js.map +1 -1
- package/esm/highlevel/utils/string-session.d.ts +1 -2
- package/esm/highlevel/utils/string-session.js +27 -7
- package/esm/highlevel/utils/string-session.js.map +1 -1
- package/esm/highlevel/utils/voice-utils.js.map +1 -1
- package/esm/highlevel/worker/app-config.d.ts +2 -3
- package/esm/highlevel/worker/app-config.js +6 -3
- package/esm/highlevel/worker/app-config.js.map +1 -1
- package/esm/highlevel/worker/errors.js.map +1 -1
- package/esm/highlevel/worker/invoker.js +3 -2
- package/esm/highlevel/worker/invoker.js.map +1 -1
- package/esm/highlevel/worker/port.d.ts +16 -17
- package/esm/highlevel/worker/port.js +74 -49
- package/esm/highlevel/worker/port.js.map +1 -1
- package/esm/highlevel/worker/protocol.d.ts +1 -1
- package/esm/highlevel/worker/protocol.js.map +1 -1
- package/esm/highlevel/worker/storage.d.ts +9 -13
- package/esm/highlevel/worker/storage.js +34 -19
- package/esm/highlevel/worker/storage.js.map +1 -1
- package/esm/highlevel/worker/worker.js +3 -0
- package/esm/highlevel/worker/worker.js.map +1 -1
- package/esm/network/auth-key.js +8 -1
- package/esm/network/auth-key.js.map +1 -1
- package/esm/network/authorization.js.map +1 -1
- package/esm/network/client.js +39 -14
- package/esm/network/client.js.map +1 -1
- package/esm/network/config-manager.js.map +1 -1
- package/esm/network/mtproto-session.js +40 -30
- package/esm/network/mtproto-session.js.map +1 -1
- package/esm/network/multi-session-connection.d.ts +1 -1
- package/esm/network/multi-session-connection.js +13 -7
- package/esm/network/multi-session-connection.js.map +1 -1
- package/esm/network/network-manager.d.ts +2 -3
- package/esm/network/network-manager.js +49 -28
- package/esm/network/network-manager.js.map +1 -1
- package/esm/network/persistent-connection.d.ts +2 -2
- package/esm/network/persistent-connection.js +33 -22
- package/esm/network/persistent-connection.js.map +1 -1
- package/esm/network/server-salt.js +4 -5
- package/esm/network/server-salt.js.map +1 -1
- package/esm/network/session-connection.d.ts +1 -1
- package/esm/network/session-connection.js +22 -12
- package/esm/network/session-connection.js.map +1 -1
- package/esm/network/transports/abstract.d.ts +1 -1
- package/esm/network/transports/abstract.js +1 -0
- package/esm/network/transports/abstract.js.map +1 -1
- package/esm/network/transports/intermediate.js +1 -0
- package/esm/network/transports/intermediate.js.map +1 -1
- package/esm/network/transports/obfuscated.js +3 -0
- package/esm/network/transports/obfuscated.js.map +1 -1
- package/esm/network/transports/streamed.js +1 -4
- package/esm/network/transports/streamed.js.map +1 -1
- package/esm/network/transports/wrapped.js +2 -0
- package/esm/network/transports/wrapped.js.map +1 -1
- package/esm/platform.js.map +1 -1
- package/esm/storage/driver.js +3 -4
- package/esm/storage/driver.js.map +1 -1
- package/esm/storage/memory/driver.js +1 -3
- package/esm/storage/memory/driver.js.map +1 -1
- package/esm/storage/memory/index.js +5 -7
- package/esm/storage/memory/index.js.map +1 -1
- package/esm/storage/memory/repository/auth-keys.d.ts +1 -1
- package/esm/storage/memory/repository/auth-keys.js +2 -0
- package/esm/storage/memory/repository/auth-keys.js.map +1 -1
- package/esm/storage/memory/repository/kv.d.ts +1 -1
- package/esm/storage/memory/repository/kv.js +2 -0
- package/esm/storage/memory/repository/kv.js.map +1 -1
- package/esm/storage/memory/repository/peers.d.ts +1 -1
- package/esm/storage/memory/repository/peers.js +2 -0
- package/esm/storage/memory/repository/peers.js.map +1 -1
- package/esm/storage/memory/repository/ref-messages.d.ts +1 -1
- package/esm/storage/memory/repository/ref-messages.js +2 -0
- package/esm/storage/memory/repository/ref-messages.js.map +1 -1
- package/esm/storage/service/auth-keys.js +2 -0
- package/esm/storage/service/auth-keys.js.map +1 -1
- package/esm/storage/service/base.js +4 -0
- package/esm/storage/service/base.js.map +1 -1
- package/esm/storage/service/default-dcs.js +2 -0
- package/esm/storage/service/default-dcs.js.map +1 -1
- package/esm/storage/service/future-salts.js +2 -1
- package/esm/storage/service/future-salts.js.map +1 -1
- package/esm/storage/sqlite/driver.js +10 -10
- package/esm/storage/sqlite/driver.js.map +1 -1
- package/esm/storage/sqlite/index.d.ts +1 -1
- package/esm/storage/sqlite/index.js +5 -0
- package/esm/storage/sqlite/index.js.map +1 -1
- package/esm/storage/sqlite/repository/auth-keys.js +9 -0
- package/esm/storage/sqlite/repository/auth-keys.js.map +1 -1
- package/esm/storage/sqlite/repository/kv.js +5 -0
- package/esm/storage/sqlite/repository/kv.js.map +1 -1
- package/esm/storage/sqlite/repository/peers.js +6 -0
- package/esm/storage/sqlite/repository/peers.js.map +1 -1
- package/esm/storage/sqlite/repository/ref-messages.d.ts +1 -1
- package/esm/storage/sqlite/repository/ref-messages.js +6 -0
- package/esm/storage/sqlite/repository/ref-messages.js.map +1 -1
- package/esm/storage/storage.d.ts +1 -3
- package/esm/storage/storage.js +21 -13
- package/esm/storage/storage.js.map +1 -1
- package/esm/types/errors.js +13 -0
- package/esm/types/errors.js.map +1 -1
- package/esm/types/utils.d.ts +1 -1
- package/esm/types/utils.js.map +1 -1
- package/esm/utils/async-lock.js +1 -3
- package/esm/utils/async-lock.js.map +1 -1
- package/esm/utils/bigint-utils.js.map +1 -1
- package/esm/utils/binary/asn1-parser.js.map +1 -1
- package/esm/utils/buffer-utils.js.map +1 -1
- package/esm/utils/condition-variable.js +2 -0
- package/esm/utils/condition-variable.js.map +1 -1
- package/esm/utils/crypto/factorization.js.map +1 -1
- package/esm/utils/crypto/keys.js.map +1 -1
- package/esm/utils/crypto/miller-rabin.js.map +1 -1
- package/esm/utils/crypto/password.js.map +1 -1
- package/esm/utils/crypto/utils.js.map +1 -1
- package/esm/utils/dcs.js +1 -1
- package/esm/utils/dcs.js.map +1 -1
- package/esm/utils/deque.js +8 -2
- package/esm/utils/deque.js.map +1 -1
- package/esm/utils/early-timer.js +4 -1
- package/esm/utils/early-timer.js.map +1 -1
- package/esm/utils/error-reporting.js.map +1 -1
- package/esm/utils/function-utils.js.map +1 -1
- package/esm/utils/linked-list.js +4 -1
- package/esm/utils/linked-list.js.map +1 -1
- package/esm/utils/links/bots.js.map +1 -1
- package/esm/utils/links/chat.js.map +1 -1
- package/esm/utils/links/common.js.map +1 -1
- package/esm/utils/links/misc.js.map +1 -1
- package/esm/utils/logger.d.ts +2 -2
- package/esm/utils/logger.js +21 -14
- package/esm/utils/logger.js.map +1 -1
- package/esm/utils/long-utils.js +2 -6
- package/esm/utils/long-utils.js.map +1 -1
- package/esm/utils/lru-map.js +5 -1
- package/esm/utils/lru-map.js.map +1 -1
- package/esm/utils/lru-set.js +4 -0
- package/esm/utils/lru-set.js.map +1 -1
- package/esm/utils/peer-utils.js.map +1 -1
- package/esm/utils/reloadable.js +10 -7
- package/esm/utils/reloadable.js.map +1 -1
- package/esm/utils/sorted-array.js +2 -0
- package/esm/utils/sorted-array.js.map +1 -1
- package/esm/utils/tl-json.js.map +1 -1
- package/esm/utils/type-assertions.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-permissions.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/chat-permissions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD;;GAEG;AACH,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"chat-permissions.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/chat-permissions.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { makeInspectable } from '../../utils/index.js'\n\n/**\n * Represents the permissions of a user in a {@link Chat}.\n */\nexport class ChatPermissions {\n readonly raw: tl.RawChatBannedRights\n\n constructor(bannedRights: tl.RawChatBannedRights) {\n this.raw = bannedRights\n }\n\n /**\n * Whether users can view messages\n */\n get canViewMessages(): boolean {\n return !this.raw.viewMessages\n }\n\n /**\n * Whether users can send text messages,\n * contacts, locations and venues\n */\n get canSendMessages(): boolean {\n return !this.raw.sendMessages\n }\n\n /**\n * Whether users can send media messages,\n * including documents, photos, videos, video notes and voice notes.\n *\n * Implies {@link canSendMessages}\n */\n get canSendMedia(): boolean {\n return !this.raw.sendMedia\n }\n\n /**\n * Whether users can send stickers.\n *\n * Implies {@link canSendMedia}\n */\n get canSendStickers(): boolean {\n return !this.raw.sendStickers\n }\n\n /**\n * Whether users can send GIFs.\n *\n * Implies {@link canSendMedia}\n */\n get canSendGifs(): boolean {\n return !this.raw.sendGifs\n }\n\n /**\n * Whether users can send photos.\n *\n * Implies {@link canSendMedia}\n */\n get canSendPhotos(): boolean {\n return !this.raw.sendPhotos\n }\n\n /**\n * Whether users can send videos.\n *\n * Implies {@link canSendMedia}\n */\n get canSendVideos(): boolean {\n return !this.raw.sendVideos\n }\n\n /**\n * Whether users can send round videos (i.e. video notes).\n *\n * Implies {@link canSendMedia}\n */\n get canSendRoundVideos(): boolean {\n return !this.raw.sendRoundvideos\n }\n\n /**\n * Whether users can send audio files.\n *\n * Implies {@link canSendMedia}\n */\n get canSendAudios(): boolean {\n return !this.raw.sendAudios\n }\n\n /**\n * Whether users can send voice notes.\n *\n * Implies {@link canSendMedia}\n */\n get canSendVoices(): boolean {\n return !this.raw.sendVoices\n }\n\n /**\n * Whether users can send files.\n *\n * Implies {@link canSendMedia}\n */\n get canSendFiles(): boolean {\n return !this.raw.sendDocs\n }\n\n /**\n * Whether users can send games.\n *\n * Implies {@link canSendMedia}\n */\n get canSendGames(): boolean {\n return !this.raw.sendGames\n }\n\n /**\n * Whether users can use inline bots.\n *\n * Implies {@link canSendMedia}\n */\n get canUseInline(): boolean {\n return !this.raw.sendInline\n }\n\n /**\n * Whether users can use inline bots.\n *\n * Implies {@link canSendMedia}\n */\n get canAddWebPreviews(): boolean {\n return !this.raw.embedLinks\n }\n\n /**\n * Whether users can send text messages.\n *\n * Implies {@link canSendMessages}\n */\n get canSendText(): boolean {\n return !this.raw.sendPlain\n }\n\n /**\n * Whether users can send polls.\n *\n * Implies {@link canSendMessages}\n */\n get canSendPolls(): boolean {\n return !this.raw.sendPolls\n }\n\n /**\n * Whether users can change the chat title,\n * photo and other settings.\n */\n get canChangeInfo(): boolean {\n return !this.raw.changeInfo\n }\n\n /**\n * Whether users can invite other users to the chat\n */\n get canInviteUsers(): boolean {\n return !this.raw.inviteUsers\n }\n\n /**\n * Whether users can pin messages\n */\n get canPinMessages(): boolean {\n return !this.raw.pinMessages\n }\n\n /**\n * Whether users can pin messages\n */\n get canManageTopics(): boolean {\n return !this.raw.manageTopics\n }\n\n /**\n * UNIX date until which these permissions are valid,\n * or `null` if forever.\n *\n * For example, represents the time when the restrictions\n * will be lifted from a {@link ChatMember}\n */\n get untilDate(): Date | null {\n return this.raw.untilDate === 0 ? null : new Date(this.raw.untilDate * 1000)\n }\n}\n\nmakeInspectable(ChatPermissions)\n"]}
|
|
@@ -11,6 +11,9 @@ import { FileLocation } from '../files/index.js';
|
|
|
11
11
|
* A size of a chat photo
|
|
12
12
|
*/
|
|
13
13
|
class ChatPhotoSize extends FileLocation {
|
|
14
|
+
peer;
|
|
15
|
+
obj;
|
|
16
|
+
big;
|
|
14
17
|
constructor(peer, obj, big) {
|
|
15
18
|
super({
|
|
16
19
|
_: 'inputPeerPhotoFileLocation',
|
|
@@ -89,6 +92,8 @@ const ChatPhotoSize$2 = /*#__PURE__*/makeInspectable(ChatPhotoSize$1, ['dcId',
|
|
|
89
92
|
* A chat photo
|
|
90
93
|
*/
|
|
91
94
|
class ChatPhoto {
|
|
95
|
+
peer;
|
|
96
|
+
raw;
|
|
92
97
|
constructor(peer, raw) {
|
|
93
98
|
this.peer = peer;
|
|
94
99
|
this.raw = raw;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-photo.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/chat-photo.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"chat-photo.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/chat-photo.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tdFileId, toFileId, toUniqueFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { toggleChannelIdMark } from '../../../utils/peer-utils.js'\nimport { strippedPhotoToJpg } from '../../utils/file-utils.js'\nimport { makeInspectable } from '../../utils/index.js'\nimport { memoizeGetters } from '../../utils/memoize.js'\nimport { FileLocation } from '../files/index.js'\n\n/**\n * A size of a chat photo\n */\nexport class ChatPhotoSize extends FileLocation {\n constructor(\n readonly peer: tl.TypeInputPeer,\n readonly obj: tl.RawUserProfilePhoto | tl.RawChatPhoto,\n readonly big: boolean,\n ) {\n super(\n {\n _: 'inputPeerPhotoFileLocation',\n peer,\n photoId: obj.photoId,\n big,\n },\n undefined,\n obj.dcId,\n )\n\n this.peer = peer\n this.obj = obj\n this.big = big\n }\n\n /**\n * TDLib and Bot API compatible File ID representing this size\n */\n get fileId(): string {\n const peer = this.peer\n\n let id: number\n let hash: tl.Long\n\n switch (peer._) {\n case 'inputPeerUser':\n id = peer.userId\n hash = peer.accessHash\n break\n case 'inputPeerChat':\n id = -peer.chatId\n hash = Long.ZERO\n break\n case 'inputPeerChannel':\n id = toggleChannelIdMark(peer.channelId)\n hash = peer.accessHash\n break\n default:\n // should not happen\n throw new MtArgumentError('Input peer was invalid')\n }\n\n return toFileId(getPlatform(), {\n dcId: this.obj.dcId,\n type: tdFileId.FileType.ProfilePhoto,\n fileReference: null,\n location: {\n _: 'photo',\n id: this.obj.photoId,\n accessHash: Long.ZERO,\n source: {\n _: 'dialogPhoto',\n big: this.big,\n id: id,\n accessHash: hash,\n },\n },\n })\n }\n\n /**\n * TDLib and Bot API compatible unique File ID representing this size\n */\n get uniqueFileId(): string {\n return toUniqueFileId(getPlatform(), tdFileId.FileType.ProfilePhoto, {\n _: 'photo',\n id: this.obj.photoId,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n source: {\n _: 'dialogPhoto',\n big: this.big,\n // will be looked into in MTQ-37\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any,\n })\n }\n}\n\nmemoizeGetters(ChatPhotoSize, ['fileId', 'uniqueFileId'])\nmakeInspectable(ChatPhotoSize, ['dcId', 'big'])\n\n/**\n * A chat photo\n */\nexport class ChatPhoto {\n constructor(\n readonly peer: tl.TypeInputPeer,\n readonly raw: tl.RawUserProfilePhoto | tl.RawChatPhoto,\n ) {}\n\n /**\n * Whether this photo is personal (i.e. you set it yourself for this peer)\n */\n get isPersonal(): boolean {\n return this.raw._ === 'userProfilePhoto' && this.raw.personal!\n }\n\n /** Chat photo file location in small resolution (160x160) */\n get small(): ChatPhotoSize {\n return new ChatPhotoSize(this.peer, this.raw, false)\n }\n\n /** Chat photo file location in big resolution (640x640) */\n get big(): ChatPhotoSize {\n return new ChatPhotoSize(this.peer, this.raw, true)\n }\n\n /**\n * Chat photo preview in *very* small resolution, if available\n */\n get thumb(): Uint8Array | null {\n if (!this.raw.strippedThumb) return null\n\n return strippedPhotoToJpg(this.raw.strippedThumb)\n }\n}\n\nmemoizeGetters(ChatPhoto, ['small', 'big', 'thumb'])\nmakeInspectable(ChatPhoto, [], ['thumb'])\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-preview.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/chat-preview.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAUhC,MAAM,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"chat-preview.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/chat-preview.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAUhC,MAAM,OAAO,WAAW;IAEP;IAIA;IALb,YACa,MAAwB;IACjC;;OAEG;IACM,IAAY;QAJZ,WAAM,GAAN,MAAM,CAAkB;QAIxB,SAAI,GAAJ,IAAI,CAAQ;IACtB,CAAC;IAEJ;;OAEG;IACH,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;IAC5B,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACJ,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,OAAO,SAAS,CAAA;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,YAAY,CAAA;QAErE,OAAO,OAAO,CAAA;IAClB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAO,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAA;IACxC,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,YAAY;YAAE,OAAO,IAAI,CAAA;QAErD,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACpE,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,aAAc,CAAA;IACrC,CAAC;CACJ;AAED,cAAc,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAA;AACrD,eAAe,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { makeInspectable } from '../../utils/index.js'\nimport { memoizeGetters } from '../../utils/memoize.js'\nimport { Photo } from '../media/photo.js'\nimport { User } from './user.js'\n\n/**\n * Chat type. Can be:\n * - `group`: Legacy group\n * - `supergroup`: Supergroup\n * - `channel`: Broadcast channel\n */\nexport type ChatPreviewType = 'group' | 'supergroup' | 'channel'\n\nexport class ChatPreview {\n constructor(\n readonly invite: tl.RawChatInvite,\n /**\n * Original invite link used to fetch this preview\n */\n readonly link: string,\n ) {}\n\n /**\n * Title of the chat\n */\n get title(): string {\n return this.invite.title\n }\n\n /**\n * Type of the chat\n */\n get type(): ChatPreviewType {\n if (this.invite.broadcast) return 'channel'\n if (this.invite.megagroup || this.invite.channel) return 'supergroup'\n\n return 'group'\n }\n\n /**\n * Whether this chat is public\n */\n get public(): boolean {\n return this.invite.public!\n }\n\n /**\n * Total chat member count\n */\n get memberCount(): number {\n return this.invite.participantsCount\n }\n\n /**\n * Chat photo\n */\n get photo(): Photo | null {\n if (this.invite.photo._ === 'photoEmpty') return null\n\n return new Photo(this.invite.photo)\n }\n\n /**\n * Preview of some of the chat members.\n *\n * This usually contains around 10 members,\n * and members that are inside your contacts list are\n * ordered before others.\n */\n get someMembers(): ReadonlyArray<User> {\n return this.invite.participants?.map((it) => new User(it)) ?? []\n }\n\n /**\n * Whether by using this link you'll also need\n * to wait for admin approval.\n */\n get withApproval(): boolean {\n return this.invite.requestNeeded!\n }\n}\n\nmemoizeGetters(ChatPreview, ['photo', 'someMembers'])\nmakeInspectable(ChatPreview, ['link'])\n"]}
|
|
@@ -14,9 +14,14 @@ import { User } from './user.js';
|
|
|
14
14
|
* A chat.
|
|
15
15
|
*/
|
|
16
16
|
class Chat {
|
|
17
|
+
fullPeer;
|
|
18
|
+
type = 'chat';
|
|
19
|
+
/**
|
|
20
|
+
* Raw peer object that this {@link Chat} represents.
|
|
21
|
+
*/
|
|
22
|
+
peer;
|
|
17
23
|
constructor(peer, fullPeer) {
|
|
18
24
|
this.fullPeer = fullPeer;
|
|
19
|
-
this.type = 'chat';
|
|
20
25
|
if (!peer)
|
|
21
26
|
throw new MtArgumentError('peer is not available');
|
|
22
27
|
switch (peer._) {
|
|
@@ -476,6 +481,11 @@ class Chat {
|
|
|
476
481
|
get adminRights() {
|
|
477
482
|
return 'adminRights' in this.peer ? this.peer.adminRights ?? null : null;
|
|
478
483
|
}
|
|
484
|
+
/**
|
|
485
|
+
* Distance in meters of this group chat from your location
|
|
486
|
+
* Returned only in {@link TelegramClient.getNearbyChats}
|
|
487
|
+
*/
|
|
488
|
+
distance;
|
|
479
489
|
/**
|
|
480
490
|
* Location of the chat.
|
|
481
491
|
* Returned only in {@link TelegramClient.getFullChat}
|
|
@@ -486,6 +496,7 @@ class Chat {
|
|
|
486
496
|
}
|
|
487
497
|
return new ChatLocation(this.fullPeer.location);
|
|
488
498
|
}
|
|
499
|
+
_linkedChat;
|
|
489
500
|
/**
|
|
490
501
|
* The linked discussion group (in case of channels)
|
|
491
502
|
* or the linked channel (in case of supergroups).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/chat.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError, MtTypeAssertionError } from '../../../types/errors.js'\nimport { getMarkedPeerId } from '../../../utils/peer-utils.js'\nimport { makeInspectable } from '../../utils/index.js'\nimport { memoizeGetters } from '../../utils/memoize.js'\nimport { Photo } from '../media/photo.js'\nimport { MessageEntity } from '../messages/message-entity.js'\nimport { EmojiStatus } from '../reactions/emoji-status.js'\nimport { ChatColors } from './chat-colors.js'\nimport { ChatLocation } from './chat-location.js'\nimport { ChatPermissions } from './chat-permissions.js'\nimport { ChatPhoto } from './chat-photo.js'\nimport { PeersIndex } from './peers-index.js'\nimport { User } from './user.js'\n\n/**\n * Chat type. Can be:\n * - `private`: PM with other users or yourself (Saved Messages)\n * - `bot`: PM with a bot\n * - `group`: Legacy group\n * - `supergroup`: Supergroup\n * - `channel`: Broadcast channel\n * - `gigagroup`: Gigagroup aka Broadcast group\n */\nexport type ChatType = 'private' | 'bot' | 'group' | 'supergroup' | 'channel' | 'gigagroup'\n\n/**\n * A chat.\n */\nexport class Chat {\n readonly type = 'chat' as const\n\n /**\n * Raw peer object that this {@link Chat} represents.\n */\n readonly peer: tl.RawUser | tl.RawChat | tl.RawChannel | tl.RawChatForbidden | tl.RawChannelForbidden\n\n constructor(\n peer: tl.TypeUser | tl.TypeChat,\n readonly fullPeer?: tl.TypeUserFull | tl.TypeChatFull,\n ) {\n if (!peer) throw new MtArgumentError('peer is not available')\n\n switch (peer._) {\n case 'user':\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n break\n default:\n throw new MtTypeAssertionError('peer', 'user | chat | channel', peer._)\n }\n\n this.peer = peer\n }\n\n /** Marked ID of this chat */\n get id(): number {\n return getMarkedPeerId(this.inputPeer)\n }\n\n /**\n * Whether this chat's information is incomplete.\n *\n * This usually only happens in large chats, where\n * the server sometimes sends only a part of the chat's\n * information. Basic info like name and profile photo\n * are always available, but other fields may be omitted\n * despite being available.\n *\n * It was observed that these fields may be missing:\n * - `isMember`\n * - and probably more\n *\n * This currently only ever happens for non-bot users, so if you are building\n * a normal bot, you can safely ignore this field.\n *\n * To fetch the \"complete\" user information, use one of these methods:\n * - {@link TelegramClient.getChat}\n * - {@link TelegramClient.getFullChat}.\n *\n * Learn more: [Incomplete peers](https://mtcute.dev/guide/topics/peers.html#incomplete-peers)\n */\n get isMin(): boolean {\n // avoid additional runtime checks\n return Boolean((this.peer as { min?: boolean }).min)\n }\n\n /**\n * Chat's input peer for advanced use-cases.\n *\n * > **Note**: for {@link min} chats, this method will return\n * > `mtcute.dummyInputPeerMin*`, which are actually not a valid input peer,\n * > These are used to indicate that the user is incomplete, and a message\n * > reference is needed to resolve the peer.\n * >\n * > Such objects are handled by {@link TelegramClient.resolvePeer} method,\n * so prefer using it whenever you need an input peer.\n */\n get inputPeer(): tl.TypeInputPeer {\n switch (this.peer._) {\n case 'user':\n if (this.peer.min) {\n return {\n _: 'mtcute.dummyInputPeerMinUser',\n userId: this.peer.id,\n }\n }\n\n if (!this.peer.accessHash) {\n throw new MtArgumentError(\"Peer's access hash is not available!\")\n }\n\n return {\n _: 'inputPeerUser',\n userId: this.peer.id,\n accessHash: this.peer.accessHash,\n }\n case 'chat':\n case 'chatForbidden':\n return {\n _: 'inputPeerChat',\n chatId: this.peer.id,\n }\n case 'channel':\n case 'channelForbidden':\n if ((this.peer as tl.RawChannel).min) {\n return {\n _: 'mtcute.dummyInputPeerMinChannel',\n channelId: this.peer.id,\n }\n }\n\n if (!this.peer.accessHash) {\n throw new MtArgumentError(\"Peer's access hash is not available!\")\n }\n\n return {\n _: 'inputPeerChannel',\n channelId: this.peer.id,\n accessHash: this.peer.accessHash,\n }\n }\n }\n\n /** Type of chat */\n get chatType(): ChatType {\n switch (this.peer._) {\n case 'user':\n return this.peer.bot ? 'bot' : 'private'\n case 'chat':\n case 'chatForbidden':\n return 'group'\n case 'channel':\n case 'channelForbidden':\n if (this.peer._ === 'channel' && this.peer.gigagroup) {\n return 'gigagroup'\n } else if (this.peer.broadcast) {\n return 'channel'\n }\n\n return 'supergroup'\n }\n }\n\n /**\n * Whether this chat is a group chat\n * (i.e. not a channel and not PM)\n */\n get isGroup(): boolean {\n switch (this.chatType) {\n case 'group':\n case 'supergroup':\n case 'gigagroup':\n return true\n }\n\n return false\n }\n\n /**\n * Whether this chat has been verified by Telegram.\n * Supergroups, channels and groups only\n */\n get isVerified(): boolean {\n return 'verified' in this.peer ? this.peer.verified! : false\n }\n\n /**\n * Whether this chat has been restricted.\n * See {@link restrictions} for details\n */\n get isRestricted(): boolean {\n return 'restricted' in this.peer ? this.peer.restricted! : false\n }\n\n /**\n * Whether this chat is owned by the current user.\n * Supergroups, channels and groups only\n */\n get isCreator(): boolean {\n return 'creator' in this.peer ? this.peer.creator! : false\n }\n\n /**\n * Whether current user has admin rights in this chat.\n * Supergroups, channels and groups only.\n */\n get isAdmin(): boolean {\n return 'adminRights' in this.peer && Boolean(this.peer.adminRights)\n }\n\n /** Whether this chat has been flagged for scam */\n get isScam(): boolean {\n return 'scam' in this.peer ? this.peer.scam! : false\n }\n\n /** Whether this chat has been flagged for impersonation */\n get isFake(): boolean {\n return 'fake' in this.peer ? this.peer.fake! : false\n }\n\n /** Whether this chat is part of the Telegram support team. Users and bots only */\n get isSupport(): boolean {\n return this.peer._ === 'user' && this.peer.support!\n }\n\n /** Whether this chat is chat with yourself (i.e. Saved Messages) */\n get isSelf(): boolean {\n return this.peer._ === 'user' && this.peer.self!\n }\n\n /** Whether this peer is your contact */\n get isContact(): boolean {\n return this.peer._ === 'user' && this.peer.contact!\n }\n\n /** Whether this peer is a forum supergroup */\n get isForum(): boolean {\n return this.peer._ === 'channel' && this.peer.forum!\n }\n\n /**\n * Whether the current user is a member of the chat.\n *\n * For users, this is always `true`.\n */\n get isMember(): boolean {\n switch (this.peer._) {\n case 'user':\n return true\n case 'channel':\n case 'chat':\n return !this.peer.left\n default:\n return false\n }\n }\n\n /** Whether you have hidden (arhived) this chat's stories */\n get storiesHidden(): boolean {\n return 'storiesHidden' in this.peer ? this.peer.storiesHidden! : false\n }\n\n get storiesUnavailable(): boolean {\n return 'storiesUnavailable' in this.peer ? this.peer.storiesUnavailable! : false\n }\n\n /** Whether this group is a channel/supergroup with join requests enabled */\n get hasJoinRequests(): boolean {\n return this.peer._ === 'channel' && this.peer.joinRequest!\n }\n\n /** Whether this group is a supergroup with join-to-send rule enabled */\n get hasJoinToSend(): boolean {\n return this.peer._ === 'channel' && this.peer.joinToSend!\n }\n\n /** Whether this group has content protection (i.e. disabled forwards) */\n get hasContentProtection(): boolean {\n return (this.peer._ === 'channel' || this.peer._ === 'chat') && this.peer.noforwards!\n }\n\n /**\n * Whether this chat (user) has restricted sending them voice/video messages.\n *\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get hasBlockedVoices(): boolean {\n return this.fullPeer?._ === 'userFull' && this.fullPeer.voiceMessagesForbidden!\n }\n\n /**\n * Title, for supergroups, channels and groups\n */\n get title(): string | null {\n return this.peer._ !== 'user' ? this.peer.title ?? null : null\n }\n\n /**\n * Username, for private chats, bots, supergroups and channels if available\n */\n get username(): string | null {\n if (!('username' in this.peer)) return null\n\n return this.peer.username ?? this.peer.usernames?.[0].username ?? null\n }\n\n /**\n * Usernames (inclufing collectibles), for private chats, bots, supergroups and channels if available\n */\n get usernames(): ReadonlyArray<tl.RawUsername> | null {\n if (!('usernames' in this.peer)) return null\n\n return (\n this.peer.usernames ??\n (this.peer.username ? [{ _: 'username', username: this.peer.username, active: true }] : null)\n )\n }\n\n /**\n * First name of the other party in a private chat,\n * for private chats and bots\n */\n get firstName(): string | null {\n return this.peer._ === 'user' ? this.peer.firstName ?? null : null\n }\n\n /**\n * Last name of the other party in a private chat, for private chats\n */\n get lastName(): string | null {\n return this.peer._ === 'user' ? this.peer.lastName ?? null : null\n }\n\n /**\n * Get the display name of the chat.\n *\n * Title for groups and channels,\n * name (and last name if available) for users\n */\n get displayName(): string {\n if (this.peer._ === 'user') {\n if (this.peer.lastName) {\n return this.peer.firstName + ' ' + this.peer.lastName\n }\n\n return this.peer.firstName ?? 'Deleted Account'\n }\n\n return this.peer.title\n }\n\n /**\n * Chat photo, if any.\n * Suitable for downloads only.\n *\n * If full chat information is available, prefer {@link fullPhoto} instead.\n */\n get photo(): ChatPhoto | null {\n if (\n !('photo' in this.peer) ||\n !this.peer.photo ||\n (this.peer.photo._ !== 'userProfilePhoto' && this.peer.photo._ !== 'chatPhoto')\n ) {\n return null\n }\n\n return new ChatPhoto(this.inputPeer, this.peer.photo)\n }\n\n /**\n * Full information about this chat's photo, if any.\n *\n * Unlike {@link Chat.photo}, this field contains additional information\n * about the photo, such as its date, more sizes, and is the only\n * way to get the animated profile photo.\n *\n * This field takes into account any personal/fallback photo\n * that the user may have set\n *\n * Only available in {@link TelegramClient.getFullChat}\n */\n get fullPhoto(): Photo | null {\n if (!this.fullPeer) return null\n\n let photo: tl.TypePhoto | undefined = undefined\n\n switch (this.fullPeer._) {\n case 'userFull':\n photo = this.fullPeer.personalPhoto ?? this.fullPeer.profilePhoto ?? this.fullPeer.fallbackPhoto\n break\n case 'chatFull':\n case 'channelFull':\n photo = this.fullPeer.chatPhoto\n }\n\n if (photo?._ !== 'photo') return null\n\n return new Photo(photo)\n }\n\n /**\n * A custom photo (set by the current user) that should be displayed\n * instead of the actual chat photo.\n *\n * Currently only available for users.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get personalPhoto(): Photo | null {\n if (!this.fullPeer || this.fullPeer._ !== 'userFull') return null\n if (this.fullPeer.personalPhoto?._ !== 'photo') return null\n\n return new Photo(this.fullPeer.personalPhoto)\n }\n\n /**\n * Actual profile photo of the user, bypassing the custom one.\n *\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get realPhoto(): Photo | null {\n if (!this.fullPeer) return null\n if (this.fullPeer._ !== 'userFull') return this.fullPhoto\n if (this.fullPeer.personalPhoto?._ !== 'photo') return null\n\n return new Photo(this.fullPeer.personalPhoto)\n }\n\n /**\n * A photo that the user has set to be shown\n * in case their actual profile photo is not available\n * due to privacy settings.\n *\n * Currently only available for users.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get publicPhoto(): Photo | null {\n if (!this.fullPeer || this.fullPeer._ !== 'userFull') return null\n if (this.fullPeer.fallbackPhoto?._ !== 'photo') return null\n\n return new Photo(this.fullPeer.fallbackPhoto)\n }\n\n /**\n * Bio of the other party in a private chat, or description of a\n * group, supergroup or channel.\n *\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get bio(): string | null {\n return this.fullPeer?.about ?? null\n }\n\n /**\n * User's or bot's assigned DC (data center).\n * Available only in case the user has set a public profile photo.\n *\n * **Note**: this information is approximate; it is based on where\n * Telegram stores the current chat photo. It is accurate only in case\n * the owner has set the chat photo, otherwise it will be the DC assigned\n * to the administrator who set the current profile photo.\n */\n get dcId(): number | null {\n if (!('photo' in this.peer)) return null\n\n return (\n (this.peer.photo as Exclude<typeof this.peer.photo, tl.RawChatPhotoEmpty | tl.RawUserProfilePhotoEmpty>)\n ?.dcId ?? null\n )\n }\n\n /**\n * Chat's permanent invite link, for groups, supergroups and channels.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get inviteLink(): string | null {\n if (this.fullPeer && this.fullPeer._ !== 'userFull') {\n switch (this.fullPeer.exportedInvite?._) {\n case 'chatInvitePublicJoinRequests':\n return null\n case 'chatInviteExported':\n return this.fullPeer.exportedInvite.link\n }\n }\n\n return null\n }\n\n /**\n * For supergroups, name of the group sticker set.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get stickerSetName(): string | null {\n return this.fullPeer && this.fullPeer._ === 'channelFull' ? this.fullPeer.stickerset?.shortName ?? null : null\n }\n\n /**\n * Whether the group sticker set can be changed by you.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get canSetStickerSet(): boolean | null {\n return this.fullPeer && this.fullPeer._ === 'channelFull' ? this.fullPeer.canSetStickers ?? null : null\n }\n\n /**\n * Chat members count, for groups, supergroups and channels only.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get membersCount(): number | null {\n if (this.fullPeer && this.fullPeer._ !== 'userFull') {\n if (this.fullPeer._ === 'chatFull' && this.fullPeer.participants._ === 'chatParticipants') {\n return this.fullPeer.participants.participants.length\n } else if (this.fullPeer._ === 'channelFull') {\n return this.fullPeer.participantsCount ?? null\n }\n }\n\n return null\n }\n\n /**\n * The list of reasons why this chat might be unavailable to some users.\n * This field is available only in case {@link isRestricted} is `true`\n */\n get restrictions(): ReadonlyArray<tl.RawRestrictionReason> | null {\n return 'restrictionReason' in this.peer ? this.peer.restrictionReason ?? null : null\n }\n\n /**\n * Current user's permissions, for supergroups.\n */\n get permissions(): ChatPermissions | null {\n if (!('bannedRights' in this.peer && this.peer.bannedRights)) {\n return null\n }\n\n return new ChatPermissions(this.peer.bannedRights)\n }\n\n /**\n * Default chat member permissions, for groups and supergroups.\n */\n get defaultPermissions(): ChatPermissions | null {\n if (!('defaultBannedRights' in this.peer) || !this.peer.defaultBannedRights) {\n return null\n }\n\n return new ChatPermissions(this.peer.defaultBannedRights)\n }\n\n /**\n * Admin rights of the current user in this chat.\n * `null` for PMs and non-administered chats\n */\n get adminRights(): tl.RawChatAdminRights | null {\n return 'adminRights' in this.peer ? this.peer.adminRights ?? null : null\n }\n\n /**\n * Distance in meters of this group chat from your location\n * Returned only in {@link TelegramClient.getNearbyChats}\n */\n readonly distance?: number\n\n /**\n * Location of the chat.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get location(): ChatLocation | null {\n if (!this.fullPeer || this.fullPeer._ !== 'channelFull' || this.fullPeer.location?._ !== 'channelLocation') {\n return null\n }\n\n return new ChatLocation(this.fullPeer.location)\n }\n\n private _linkedChat?: Chat\n /**\n * The linked discussion group (in case of channels)\n * or the linked channel (in case of supergroups).\n *\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get linkedChat(): Chat | null {\n return this._linkedChat ?? null\n }\n\n /**\n * TTL of all messages in this chat, in seconds\n *\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get ttlPeriod(): number | null {\n return this.fullPeer?.ttlPeriod ?? null\n }\n\n /**\n * Maximum ID of stories this chat has (or 0 if none)\n */\n get storiesMaxId(): number {\n switch (this.peer._) {\n case 'channel':\n case 'user':\n return this.peer.storiesMaxId ?? 0\n }\n\n return 0\n }\n\n /**\n * Color that should be used when rendering replies to\n * the messages and web previews sent by this chat,\n * as well as to render the chat title\n */\n get color(): ChatColors {\n const color = this.peer._ === 'user' || this.peer._ === 'channel' ? this.peer.color : undefined\n\n return new ChatColors(this.peer.id, color)\n }\n\n /**\n * Chat's emoji status, if any.\n */\n get emojiStatus(): EmojiStatus | null {\n if (this.peer._ !== 'user' && this.peer._ !== 'channel') return null\n if (!this.peer.emojiStatus || this.peer.emojiStatus._ === 'emojiStatusEmpty') return null\n\n return new EmojiStatus(this.peer.emojiStatus)\n }\n\n /**\n * Color that should be used when rendering the header of\n * the user's profile\n *\n * If `null`, a generic header should be used instead\n */\n get profileColors(): ChatColors {\n const color = this.peer._ === 'user' || this.peer._ === 'channel' ? this.peer.profileColor : undefined\n\n return new ChatColors(this.peer.id, color)\n }\n\n /** Boosts level this chat has (0 if none or is not a channel) */\n get boostsLevel(): number {\n return this.peer._ === 'channel' ? this.peer.level ?? 0 : 0\n }\n\n /**\n * Get a {@link User} from this chat.\n *\n * Returns `null` if this is not a chat with user\n */\n get user(): User | null {\n if (this.peer._ !== 'user') return null\n\n return new User(this.peer)\n }\n\n /** @internal */\n static _parseFromMessage(message: tl.RawMessage | tl.RawMessageService, peers: PeersIndex): Chat {\n return Chat._parseFromPeer(message.peerId, peers)\n }\n\n /** @internal */\n static _parseFromPeer(peer: tl.TypePeer, peers: PeersIndex): Chat {\n switch (peer._) {\n case 'peerUser':\n return new Chat(peers.user(peer.userId))\n case 'peerChat':\n return new Chat(peers.chat(peer.chatId))\n }\n\n return new Chat(peers.chat(peer.channelId))\n }\n\n /** @internal */\n static _parseFull(full: tl.messages.RawChatFull | tl.users.TypeUserFull): Chat {\n if (full._ === 'users.userFull') {\n const user = full.users.find((it) => it.id === full.fullUser.id)\n\n if (!user || user._ === 'userEmpty') {\n throw new MtTypeAssertionError('Chat._parseFull', 'user', user?._ ?? 'undefined')\n }\n\n return new Chat(user, full.fullUser)\n }\n\n const fullChat = full.fullChat\n let chat: tl.TypeChat | undefined = undefined\n let linked: tl.TypeChat | undefined = undefined\n\n for (const c of full.chats) {\n if (fullChat.id === c.id) {\n chat = c\n }\n if (fullChat._ === 'channelFull' && fullChat.linkedChatId === c.id) {\n linked = c\n }\n }\n\n const ret = new Chat(chat!, fullChat)\n ret._linkedChat = linked ? new Chat(linked) : undefined\n\n return ret\n }\n\n /**\n * Create a mention for the chat.\n *\n * If this is a user, works just like {@link User.mention}.\n * Otherwise, if the chat has a username, a `@username` is created\n * (or text link, if `text` is passed). If it does not, chat title is\n * simply returned without additional formatting.\n *\n * When available and `text` is omitted, this method will return `@username`.\n * Otherwise, text mention is created for the given (or default) parse mode\n *\n * Use `null` as `text` (first parameter) to force create a text\n * mention with display name, even if there is a username.\n *\n * > **Note**: This method doesn't format anything on its own.\n * > Instead, it returns a {@link MessageEntity} that can later\n * > be used with `html` or `md` template tags, or `unparse` method directly.\n *\n * @param text Text of the mention.\n * @example\n * ```typescript\n * msg.replyText(html`Hello, ${msg.chat.mention()`)\n * ```\n */\n mention(text?: string | null): string | MessageEntity {\n if (this.user) return this.user.mention(text)\n\n if (text === undefined && this.username) {\n return `@${this.username}`\n }\n\n if (!text) text = this.displayName\n if (!this.username) return text\n\n return new MessageEntity(\n {\n _: 'messageEntityTextUrl',\n offset: 0,\n length: text.length,\n url: `https://t.me/${this.username}`,\n },\n text,\n )\n }\n}\n\nmemoizeGetters(Chat, [\n 'inputPeer',\n 'chatType',\n 'usernames',\n 'photo',\n 'fullPhoto',\n 'personalPhoto',\n 'realPhoto',\n 'publicPhoto',\n 'permissions',\n 'defaultPermissions',\n 'location',\n 'user',\n 'color',\n])\nmakeInspectable(Chat, [], ['user'])\n"]}
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/chat.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError, MtTypeAssertionError } from '../../../types/errors.js'\nimport { getMarkedPeerId } from '../../../utils/peer-utils.js'\nimport { makeInspectable } from '../../utils/index.js'\nimport { memoizeGetters } from '../../utils/memoize.js'\nimport { Photo } from '../media/photo.js'\nimport { MessageEntity } from '../messages/message-entity.js'\nimport { EmojiStatus } from '../reactions/emoji-status.js'\nimport { ChatColors } from './chat-colors.js'\nimport { ChatLocation } from './chat-location.js'\nimport { ChatPermissions } from './chat-permissions.js'\nimport { ChatPhoto } from './chat-photo.js'\nimport { PeersIndex } from './peers-index.js'\nimport { User } from './user.js'\n\n/**\n * Chat type. Can be:\n * - `private`: PM with other users or yourself (Saved Messages)\n * - `bot`: PM with a bot\n * - `group`: Legacy group\n * - `supergroup`: Supergroup\n * - `channel`: Broadcast channel\n * - `gigagroup`: Gigagroup aka Broadcast group\n */\nexport type ChatType = 'private' | 'bot' | 'group' | 'supergroup' | 'channel' | 'gigagroup'\n\n/**\n * A chat.\n */\nexport class Chat {\n readonly type = 'chat' as const\n\n /**\n * Raw peer object that this {@link Chat} represents.\n */\n readonly peer: tl.RawUser | tl.RawChat | tl.RawChannel | tl.RawChatForbidden | tl.RawChannelForbidden\n\n constructor(\n peer: tl.TypeUser | tl.TypeChat,\n readonly fullPeer?: tl.TypeUserFull | tl.TypeChatFull,\n ) {\n if (!peer) throw new MtArgumentError('peer is not available')\n\n switch (peer._) {\n case 'user':\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n break\n default:\n throw new MtTypeAssertionError('peer', 'user | chat | channel', peer._)\n }\n\n this.peer = peer\n }\n\n /** Marked ID of this chat */\n get id(): number {\n return getMarkedPeerId(this.inputPeer)\n }\n\n /**\n * Whether this chat's information is incomplete.\n *\n * This usually only happens in large chats, where\n * the server sometimes sends only a part of the chat's\n * information. Basic info like name and profile photo\n * are always available, but other fields may be omitted\n * despite being available.\n *\n * It was observed that these fields may be missing:\n * - `isMember`\n * - and probably more\n *\n * This currently only ever happens for non-bot users, so if you are building\n * a normal bot, you can safely ignore this field.\n *\n * To fetch the \"complete\" user information, use one of these methods:\n * - {@link TelegramClient.getChat}\n * - {@link TelegramClient.getFullChat}.\n *\n * Learn more: [Incomplete peers](https://mtcute.dev/guide/topics/peers.html#incomplete-peers)\n */\n get isMin(): boolean {\n // avoid additional runtime checks\n return Boolean((this.peer as { min?: boolean }).min)\n }\n\n /**\n * Chat's input peer for advanced use-cases.\n *\n * > **Note**: for {@link min} chats, this method will return\n * > `mtcute.dummyInputPeerMin*`, which are actually not a valid input peer,\n * > These are used to indicate that the user is incomplete, and a message\n * > reference is needed to resolve the peer.\n * >\n * > Such objects are handled by {@link TelegramClient.resolvePeer} method,\n * so prefer using it whenever you need an input peer.\n */\n get inputPeer(): tl.TypeInputPeer {\n switch (this.peer._) {\n case 'user':\n if (this.peer.min) {\n return {\n _: 'mtcute.dummyInputPeerMinUser',\n userId: this.peer.id,\n }\n }\n\n if (!this.peer.accessHash) {\n throw new MtArgumentError(\"Peer's access hash is not available!\")\n }\n\n return {\n _: 'inputPeerUser',\n userId: this.peer.id,\n accessHash: this.peer.accessHash,\n }\n case 'chat':\n case 'chatForbidden':\n return {\n _: 'inputPeerChat',\n chatId: this.peer.id,\n }\n case 'channel':\n case 'channelForbidden':\n if ((this.peer as tl.RawChannel).min) {\n return {\n _: 'mtcute.dummyInputPeerMinChannel',\n channelId: this.peer.id,\n }\n }\n\n if (!this.peer.accessHash) {\n throw new MtArgumentError(\"Peer's access hash is not available!\")\n }\n\n return {\n _: 'inputPeerChannel',\n channelId: this.peer.id,\n accessHash: this.peer.accessHash,\n }\n }\n }\n\n /** Type of chat */\n get chatType(): ChatType {\n switch (this.peer._) {\n case 'user':\n return this.peer.bot ? 'bot' : 'private'\n case 'chat':\n case 'chatForbidden':\n return 'group'\n case 'channel':\n case 'channelForbidden':\n if (this.peer._ === 'channel' && this.peer.gigagroup) {\n return 'gigagroup'\n } else if (this.peer.broadcast) {\n return 'channel'\n }\n\n return 'supergroup'\n }\n }\n\n /**\n * Whether this chat is a group chat\n * (i.e. not a channel and not PM)\n */\n get isGroup(): boolean {\n switch (this.chatType) {\n case 'group':\n case 'supergroup':\n case 'gigagroup':\n return true\n }\n\n return false\n }\n\n /**\n * Whether this chat has been verified by Telegram.\n * Supergroups, channels and groups only\n */\n get isVerified(): boolean {\n return 'verified' in this.peer ? this.peer.verified! : false\n }\n\n /**\n * Whether this chat has been restricted.\n * See {@link restrictions} for details\n */\n get isRestricted(): boolean {\n return 'restricted' in this.peer ? this.peer.restricted! : false\n }\n\n /**\n * Whether this chat is owned by the current user.\n * Supergroups, channels and groups only\n */\n get isCreator(): boolean {\n return 'creator' in this.peer ? this.peer.creator! : false\n }\n\n /**\n * Whether current user has admin rights in this chat.\n * Supergroups, channels and groups only.\n */\n get isAdmin(): boolean {\n return 'adminRights' in this.peer && Boolean(this.peer.adminRights)\n }\n\n /** Whether this chat has been flagged for scam */\n get isScam(): boolean {\n return 'scam' in this.peer ? this.peer.scam! : false\n }\n\n /** Whether this chat has been flagged for impersonation */\n get isFake(): boolean {\n return 'fake' in this.peer ? this.peer.fake! : false\n }\n\n /** Whether this chat is part of the Telegram support team. Users and bots only */\n get isSupport(): boolean {\n return this.peer._ === 'user' && this.peer.support!\n }\n\n /** Whether this chat is chat with yourself (i.e. Saved Messages) */\n get isSelf(): boolean {\n return this.peer._ === 'user' && this.peer.self!\n }\n\n /** Whether this peer is your contact */\n get isContact(): boolean {\n return this.peer._ === 'user' && this.peer.contact!\n }\n\n /** Whether this peer is a forum supergroup */\n get isForum(): boolean {\n return this.peer._ === 'channel' && this.peer.forum!\n }\n\n /**\n * Whether the current user is a member of the chat.\n *\n * For users, this is always `true`.\n */\n get isMember(): boolean {\n switch (this.peer._) {\n case 'user':\n return true\n case 'channel':\n case 'chat':\n return !this.peer.left\n default:\n return false\n }\n }\n\n /** Whether you have hidden (arhived) this chat's stories */\n get storiesHidden(): boolean {\n return 'storiesHidden' in this.peer ? this.peer.storiesHidden! : false\n }\n\n get storiesUnavailable(): boolean {\n return 'storiesUnavailable' in this.peer ? this.peer.storiesUnavailable! : false\n }\n\n /** Whether this group is a channel/supergroup with join requests enabled */\n get hasJoinRequests(): boolean {\n return this.peer._ === 'channel' && this.peer.joinRequest!\n }\n\n /** Whether this group is a supergroup with join-to-send rule enabled */\n get hasJoinToSend(): boolean {\n return this.peer._ === 'channel' && this.peer.joinToSend!\n }\n\n /** Whether this group has content protection (i.e. disabled forwards) */\n get hasContentProtection(): boolean {\n return (this.peer._ === 'channel' || this.peer._ === 'chat') && this.peer.noforwards!\n }\n\n /**\n * Whether this chat (user) has restricted sending them voice/video messages.\n *\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get hasBlockedVoices(): boolean {\n return this.fullPeer?._ === 'userFull' && this.fullPeer.voiceMessagesForbidden!\n }\n\n /**\n * Title, for supergroups, channels and groups\n */\n get title(): string | null {\n return this.peer._ !== 'user' ? this.peer.title ?? null : null\n }\n\n /**\n * Username, for private chats, bots, supergroups and channels if available\n */\n get username(): string | null {\n if (!('username' in this.peer)) return null\n\n return this.peer.username ?? this.peer.usernames?.[0].username ?? null\n }\n\n /**\n * Usernames (inclufing collectibles), for private chats, bots, supergroups and channels if available\n */\n get usernames(): ReadonlyArray<tl.RawUsername> | null {\n if (!('usernames' in this.peer)) return null\n\n return (\n this.peer.usernames ??\n (this.peer.username ? [{ _: 'username', username: this.peer.username, active: true }] : null)\n )\n }\n\n /**\n * First name of the other party in a private chat,\n * for private chats and bots\n */\n get firstName(): string | null {\n return this.peer._ === 'user' ? this.peer.firstName ?? null : null\n }\n\n /**\n * Last name of the other party in a private chat, for private chats\n */\n get lastName(): string | null {\n return this.peer._ === 'user' ? this.peer.lastName ?? null : null\n }\n\n /**\n * Get the display name of the chat.\n *\n * Title for groups and channels,\n * name (and last name if available) for users\n */\n get displayName(): string {\n if (this.peer._ === 'user') {\n if (this.peer.lastName) {\n return this.peer.firstName + ' ' + this.peer.lastName\n }\n\n return this.peer.firstName ?? 'Deleted Account'\n }\n\n return this.peer.title\n }\n\n /**\n * Chat photo, if any.\n * Suitable for downloads only.\n *\n * If full chat information is available, prefer {@link fullPhoto} instead.\n */\n get photo(): ChatPhoto | null {\n if (\n !('photo' in this.peer) ||\n !this.peer.photo ||\n (this.peer.photo._ !== 'userProfilePhoto' && this.peer.photo._ !== 'chatPhoto')\n ) {\n return null\n }\n\n return new ChatPhoto(this.inputPeer, this.peer.photo)\n }\n\n /**\n * Full information about this chat's photo, if any.\n *\n * Unlike {@link Chat.photo}, this field contains additional information\n * about the photo, such as its date, more sizes, and is the only\n * way to get the animated profile photo.\n *\n * This field takes into account any personal/fallback photo\n * that the user may have set\n *\n * Only available in {@link TelegramClient.getFullChat}\n */\n get fullPhoto(): Photo | null {\n if (!this.fullPeer) return null\n\n let photo: tl.TypePhoto | undefined = undefined\n\n switch (this.fullPeer._) {\n case 'userFull':\n photo = this.fullPeer.personalPhoto ?? this.fullPeer.profilePhoto ?? this.fullPeer.fallbackPhoto\n break\n case 'chatFull':\n case 'channelFull':\n photo = this.fullPeer.chatPhoto\n }\n\n if (photo?._ !== 'photo') return null\n\n return new Photo(photo)\n }\n\n /**\n * A custom photo (set by the current user) that should be displayed\n * instead of the actual chat photo.\n *\n * Currently only available for users.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get personalPhoto(): Photo | null {\n if (!this.fullPeer || this.fullPeer._ !== 'userFull') return null\n if (this.fullPeer.personalPhoto?._ !== 'photo') return null\n\n return new Photo(this.fullPeer.personalPhoto)\n }\n\n /**\n * Actual profile photo of the user, bypassing the custom one.\n *\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get realPhoto(): Photo | null {\n if (!this.fullPeer) return null\n if (this.fullPeer._ !== 'userFull') return this.fullPhoto\n if (this.fullPeer.personalPhoto?._ !== 'photo') return null\n\n return new Photo(this.fullPeer.personalPhoto)\n }\n\n /**\n * A photo that the user has set to be shown\n * in case their actual profile photo is not available\n * due to privacy settings.\n *\n * Currently only available for users.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get publicPhoto(): Photo | null {\n if (!this.fullPeer || this.fullPeer._ !== 'userFull') return null\n if (this.fullPeer.fallbackPhoto?._ !== 'photo') return null\n\n return new Photo(this.fullPeer.fallbackPhoto)\n }\n\n /**\n * Bio of the other party in a private chat, or description of a\n * group, supergroup or channel.\n *\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get bio(): string | null {\n return this.fullPeer?.about ?? null\n }\n\n /**\n * User's or bot's assigned DC (data center).\n * Available only in case the user has set a public profile photo.\n *\n * **Note**: this information is approximate; it is based on where\n * Telegram stores the current chat photo. It is accurate only in case\n * the owner has set the chat photo, otherwise it will be the DC assigned\n * to the administrator who set the current profile photo.\n */\n get dcId(): number | null {\n if (!('photo' in this.peer)) return null\n\n return (\n (this.peer.photo as Exclude<typeof this.peer.photo, tl.RawChatPhotoEmpty | tl.RawUserProfilePhotoEmpty>)\n ?.dcId ?? null\n )\n }\n\n /**\n * Chat's permanent invite link, for groups, supergroups and channels.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get inviteLink(): string | null {\n if (this.fullPeer && this.fullPeer._ !== 'userFull') {\n switch (this.fullPeer.exportedInvite?._) {\n case 'chatInvitePublicJoinRequests':\n return null\n case 'chatInviteExported':\n return this.fullPeer.exportedInvite.link\n }\n }\n\n return null\n }\n\n /**\n * For supergroups, name of the group sticker set.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get stickerSetName(): string | null {\n return this.fullPeer && this.fullPeer._ === 'channelFull' ? this.fullPeer.stickerset?.shortName ?? null : null\n }\n\n /**\n * Whether the group sticker set can be changed by you.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get canSetStickerSet(): boolean | null {\n return this.fullPeer && this.fullPeer._ === 'channelFull' ? this.fullPeer.canSetStickers ?? null : null\n }\n\n /**\n * Chat members count, for groups, supergroups and channels only.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get membersCount(): number | null {\n if (this.fullPeer && this.fullPeer._ !== 'userFull') {\n if (this.fullPeer._ === 'chatFull' && this.fullPeer.participants._ === 'chatParticipants') {\n return this.fullPeer.participants.participants.length\n } else if (this.fullPeer._ === 'channelFull') {\n return this.fullPeer.participantsCount ?? null\n }\n }\n\n return null\n }\n\n /**\n * The list of reasons why this chat might be unavailable to some users.\n * This field is available only in case {@link isRestricted} is `true`\n */\n get restrictions(): ReadonlyArray<tl.RawRestrictionReason> | null {\n return 'restrictionReason' in this.peer ? this.peer.restrictionReason ?? null : null\n }\n\n /**\n * Current user's permissions, for supergroups.\n */\n get permissions(): ChatPermissions | null {\n if (!('bannedRights' in this.peer && this.peer.bannedRights)) {\n return null\n }\n\n return new ChatPermissions(this.peer.bannedRights)\n }\n\n /**\n * Default chat member permissions, for groups and supergroups.\n */\n get defaultPermissions(): ChatPermissions | null {\n if (!('defaultBannedRights' in this.peer) || !this.peer.defaultBannedRights) {\n return null\n }\n\n return new ChatPermissions(this.peer.defaultBannedRights)\n }\n\n /**\n * Admin rights of the current user in this chat.\n * `null` for PMs and non-administered chats\n */\n get adminRights(): tl.RawChatAdminRights | null {\n return 'adminRights' in this.peer ? this.peer.adminRights ?? null : null\n }\n\n /**\n * Distance in meters of this group chat from your location\n * Returned only in {@link TelegramClient.getNearbyChats}\n */\n readonly distance?: number\n\n /**\n * Location of the chat.\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get location(): ChatLocation | null {\n if (!this.fullPeer || this.fullPeer._ !== 'channelFull' || this.fullPeer.location?._ !== 'channelLocation') {\n return null\n }\n\n return new ChatLocation(this.fullPeer.location)\n }\n\n private _linkedChat?: Chat\n /**\n * The linked discussion group (in case of channels)\n * or the linked channel (in case of supergroups).\n *\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get linkedChat(): Chat | null {\n return this._linkedChat ?? null\n }\n\n /**\n * TTL of all messages in this chat, in seconds\n *\n * Returned only in {@link TelegramClient.getFullChat}\n */\n get ttlPeriod(): number | null {\n return this.fullPeer?.ttlPeriod ?? null\n }\n\n /**\n * Maximum ID of stories this chat has (or 0 if none)\n */\n get storiesMaxId(): number {\n switch (this.peer._) {\n case 'channel':\n case 'user':\n return this.peer.storiesMaxId ?? 0\n }\n\n return 0\n }\n\n /**\n * Color that should be used when rendering replies to\n * the messages and web previews sent by this chat,\n * as well as to render the chat title\n */\n get color(): ChatColors {\n const color = this.peer._ === 'user' || this.peer._ === 'channel' ? this.peer.color : undefined\n\n return new ChatColors(this.peer.id, color)\n }\n\n /**\n * Chat's emoji status, if any.\n */\n get emojiStatus(): EmojiStatus | null {\n if (this.peer._ !== 'user' && this.peer._ !== 'channel') return null\n if (!this.peer.emojiStatus || this.peer.emojiStatus._ === 'emojiStatusEmpty') return null\n\n return new EmojiStatus(this.peer.emojiStatus)\n }\n\n /**\n * Color that should be used when rendering the header of\n * the user's profile\n *\n * If `null`, a generic header should be used instead\n */\n get profileColors(): ChatColors {\n const color = this.peer._ === 'user' || this.peer._ === 'channel' ? this.peer.profileColor : undefined\n\n return new ChatColors(this.peer.id, color)\n }\n\n /** Boosts level this chat has (0 if none or is not a channel) */\n get boostsLevel(): number {\n return this.peer._ === 'channel' ? this.peer.level ?? 0 : 0\n }\n\n /**\n * Get a {@link User} from this chat.\n *\n * Returns `null` if this is not a chat with user\n */\n get user(): User | null {\n if (this.peer._ !== 'user') return null\n\n return new User(this.peer)\n }\n\n /** @internal */\n static _parseFromMessage(message: tl.RawMessage | tl.RawMessageService, peers: PeersIndex): Chat {\n return Chat._parseFromPeer(message.peerId, peers)\n }\n\n /** @internal */\n static _parseFromPeer(peer: tl.TypePeer, peers: PeersIndex): Chat {\n switch (peer._) {\n case 'peerUser':\n return new Chat(peers.user(peer.userId))\n case 'peerChat':\n return new Chat(peers.chat(peer.chatId))\n }\n\n return new Chat(peers.chat(peer.channelId))\n }\n\n /** @internal */\n static _parseFull(full: tl.messages.RawChatFull | tl.users.TypeUserFull): Chat {\n if (full._ === 'users.userFull') {\n const user = full.users.find((it) => it.id === full.fullUser.id)\n\n if (!user || user._ === 'userEmpty') {\n throw new MtTypeAssertionError('Chat._parseFull', 'user', user?._ ?? 'undefined')\n }\n\n return new Chat(user, full.fullUser)\n }\n\n const fullChat = full.fullChat\n let chat: tl.TypeChat | undefined = undefined\n let linked: tl.TypeChat | undefined = undefined\n\n for (const c of full.chats) {\n if (fullChat.id === c.id) {\n chat = c\n }\n if (fullChat._ === 'channelFull' && fullChat.linkedChatId === c.id) {\n linked = c\n }\n }\n\n const ret = new Chat(chat!, fullChat)\n ret._linkedChat = linked ? new Chat(linked) : undefined\n\n return ret\n }\n\n /**\n * Create a mention for the chat.\n *\n * If this is a user, works just like {@link User.mention}.\n * Otherwise, if the chat has a username, a `@username` is created\n * (or text link, if `text` is passed). If it does not, chat title is\n * simply returned without additional formatting.\n *\n * When available and `text` is omitted, this method will return `@username`.\n * Otherwise, text mention is created for the given (or default) parse mode\n *\n * Use `null` as `text` (first parameter) to force create a text\n * mention with display name, even if there is a username.\n *\n * > **Note**: This method doesn't format anything on its own.\n * > Instead, it returns a {@link MessageEntity} that can later\n * > be used with `html` or `md` template tags, or `unparse` method directly.\n *\n * @param text Text of the mention.\n * @example\n * ```typescript\n * msg.replyText(html`Hello, ${msg.chat.mention()`)\n * ```\n */\n mention(text?: string | null): string | MessageEntity {\n if (this.user) return this.user.mention(text)\n\n if (text === undefined && this.username) {\n return `@${this.username}`\n }\n\n if (!text) text = this.displayName\n if (!this.username) return text\n\n return new MessageEntity(\n {\n _: 'messageEntityTextUrl',\n offset: 0,\n length: text.length,\n url: `https://t.me/${this.username}`,\n },\n text,\n )\n }\n}\n\nmemoizeGetters(Chat, [\n 'inputPeer',\n 'chatType',\n 'usernames',\n 'photo',\n 'fullPhoto',\n 'personalPhoto',\n 'realPhoto',\n 'publicPhoto',\n 'permissions',\n 'defaultPermissions',\n 'location',\n 'user',\n 'color',\n])\nmakeInspectable(Chat, [], ['user'])\n"]}
|
|
@@ -6,6 +6,15 @@ import { DraftMessage, Message } from '../messages/index.js';
|
|
|
6
6
|
import { parsePeer } from './peer.js';
|
|
7
7
|
import { PeersIndex } from './peers-index.js';
|
|
8
8
|
class ForumTopic {
|
|
9
|
+
raw;
|
|
10
|
+
_peers;
|
|
11
|
+
_messages;
|
|
12
|
+
static COLOR_BLUE = 0x6fb9f0;
|
|
13
|
+
static COLOR_YELLOW = 0xffd67e;
|
|
14
|
+
static COLOR_PURPLE = 0xcb86db;
|
|
15
|
+
static COLOR_GREEN = 0x8eee98;
|
|
16
|
+
static COLOR_PINK = 0xff93b2;
|
|
17
|
+
static COLOR_RED = 0xfb6f5f;
|
|
9
18
|
constructor(raw, _peers, _messages) {
|
|
10
19
|
this.raw = raw;
|
|
11
20
|
this._peers = _peers;
|
|
@@ -143,12 +152,6 @@ class ForumTopic {
|
|
|
143
152
|
return new DraftMessage(this.raw.draft);
|
|
144
153
|
}
|
|
145
154
|
}
|
|
146
|
-
ForumTopic.COLOR_BLUE = 0x6fb9f0;
|
|
147
|
-
ForumTopic.COLOR_YELLOW = 0xffd67e;
|
|
148
|
-
ForumTopic.COLOR_PURPLE = 0xcb86db;
|
|
149
|
-
ForumTopic.COLOR_GREEN = 0x8eee98;
|
|
150
|
-
ForumTopic.COLOR_PINK = 0xff93b2;
|
|
151
|
-
ForumTopic.COLOR_RED = 0xfb6f5f;
|
|
152
155
|
const ForumTopic$1 = /*#__PURE__*/memoizeGetters(ForumTopic, ['creator', 'lastMessage', 'draftMessage']);
|
|
153
156
|
const ForumTopic$2 = /*#__PURE__*/makeInspectable(ForumTopic$1, );
|
|
154
157
|
//# sourceMappingURL=forum-topic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forum-topic.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/forum-topic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAQ,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"forum-topic.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/forum-topic.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { hasValueAtKey } from '../../../utils/type-assertions.js'\nimport { makeInspectable } from '../../utils/index.js'\nimport { memoizeGetters } from '../../utils/memoize.js'\nimport { MtMessageNotFoundError } from '../errors.js'\nimport { DraftMessage, Message } from '../messages/index.js'\nimport { parsePeer, Peer } from './peer.js'\nimport { PeersIndex } from './peers-index.js'\n\nexport class ForumTopic {\n static COLOR_BLUE = 0x6fb9f0\n static COLOR_YELLOW = 0xffd67e\n static COLOR_PURPLE = 0xcb86db\n static COLOR_GREEN = 0x8eee98\n static COLOR_PINK = 0xff93b2\n static COLOR_RED = 0xfb6f5f\n\n constructor(\n readonly raw: tl.RawForumTopic,\n readonly _peers: PeersIndex,\n readonly _messages?: Map<number, tl.TypeMessage>,\n ) {}\n\n static parseTlForumTopics(topics: tl.messages.TypeForumTopics): ForumTopic[] {\n const peers = PeersIndex.from(topics)\n const messages = new Map<number, tl.TypeMessage>()\n\n topics.messages.forEach((msg) => {\n if (!msg.peerId) return\n\n messages.set(msg.id, msg)\n })\n\n return topics.topics.filter(hasValueAtKey('_', 'forumTopic')).map((it) => new ForumTopic(it, peers, messages))\n }\n\n /**\n * Whether the topic was created by the current user\n */\n get isMy(): boolean {\n return this.raw.my!\n }\n\n /**\n * Whether the topic is closed\n */\n get isClosed(): boolean {\n return this.raw.closed!\n }\n\n /**\n * Whether the topic is pinned\n */\n get isPinned(): boolean {\n return this.raw.pinned!\n }\n\n /**\n * Whether this constructor is a reduced version of the full topic information.\n *\n * If `true`, only {@link isMy}, {@link isClosed}, {@link id}, {@link date},\n * {@link title}, {@link iconColor}, {@link iconCustomEmoji} and {@link creator}\n * parameters will contain valid information.\n */\n get isShort(): boolean {\n return this.raw.short!\n }\n\n /**\n * ID of the topic\n */\n get id(): number {\n return this.raw.id\n }\n\n /**\n * Date when the topic was created\n */\n get date(): Date {\n return new Date(this.raw.date * 1000)\n }\n\n /**\n * Title of the topic\n */\n get title(): string {\n return this.raw.title\n }\n\n /**\n * Color of the topic's icon, used as a fallback\n * in case {@link iconEmoji} is not set.\n *\n * One of the static `COLOR_*` fields.\n */\n get iconColor(): number | null {\n return this.raw.iconColor ?? null\n }\n\n /**\n * Emoji used as the topic's icon.\n */\n get iconCustomEmoji(): tl.Long | null {\n return this.raw.iconEmojiId ?? null\n }\n\n /**\n * Creator of the topic\n */\n get creator(): Peer {\n return parsePeer(this.raw.fromId, this._peers)\n }\n\n /**\n * The latest message sent in this topic\n */\n get lastMessage(): Message {\n const id = this.raw.topMessage\n\n if (this._messages?.has(id)) {\n return new Message(this._messages.get(id)!, this._peers)\n }\n\n throw new MtMessageNotFoundError(0, id)\n }\n\n /**\n * ID of the last read outgoing message in this topic\n */\n get lastReadIngoing(): number {\n return this.raw.readInboxMaxId\n }\n\n /**\n * ID of the last read ingoing message in this topic\n */\n get lastReadOutgoing(): number {\n return this.raw.readOutboxMaxId\n }\n\n /**\n * ID of the last read message in this topic\n */\n get lastRead(): number {\n return Math.max(this.raw.readOutboxMaxId, this.raw.readInboxMaxId)\n }\n\n /**\n * Number of unread messages in the topic\n */\n get unreadCount(): number {\n return this.raw.unreadCount\n }\n\n /**\n * Number of unread mentions in the topic\n */\n get unreadMentionsCount(): number {\n return this.raw.unreadMentionsCount\n }\n\n /**\n * Number of unread reactions in the topic\n */\n get unreadReactionsCount(): number {\n return this.raw.unreadReactionsCount\n }\n\n /**\n * Draft message in the topic\n */\n get draftMessage(): DraftMessage | null {\n if (!this.raw.draft || this.raw.draft._ === 'draftMessageEmpty') return null\n\n return new DraftMessage(this.raw.draft)\n }\n}\n\nmemoizeGetters(ForumTopic, ['creator', 'lastMessage', 'draftMessage'])\nmakeInspectable(ForumTopic)\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/peer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAsDhC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAiB,EAAE,KAAiB;IAC1D,QAAQ,IAAI,CAAC,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/peer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAsDhC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAiB,EAAE,KAAiB;IAC1D,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;QACb,KAAK,UAAU;YACX,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5C,KAAK,UAAU;YACX,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5C,KAAK,aAAa;YACd,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IACnD,CAAC;AACL,CAAC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { Chat } from './chat.js'\nimport { PeersIndex } from './peers-index.js'\nimport { User } from './user.js'\n\n/**\n * More extensive peer types, that differentiate between\n * users and bots, channels and supergroups.\n */\nexport type PeerType = 'user' | 'bot' | 'group' | 'channel' | 'supergroup'\n\n/**\n * Type that can be used as an input peer to most of the high-level methods. Can be:\n * - `number`, representing peer's marked ID*\n * - `string`, representing peer's username (without preceding `@`)\n * - `string`, representing user's phone number\n * - `\"me\"` and `\"self\"` which will be replaced with the current user/bot\n * - Any object with `inputPeer: tl.TypeInputPeer` property\n * - Raw TL object\n *\n * > * Telegram has moved to int64 IDs. Though, Levin [has confirmed](https://t.me/tdlibchat/25071)\n * > that new IDs *will* still fit into int53, meaning JS integers are fine.\n */\nexport type InputPeerLike =\n | string\n | number\n | tl.TypePeer\n | tl.TypeInputPeer\n | tl.TypeInputUser\n | tl.TypeInputChannel\n | { inputPeer: tl.TypeInputPeer }\n\n/**\n * Peer (a user or a chat)\n *\n * Type of the peer can be determined by the `.type` property\n */\nexport type Peer = User | Chat\n\n/**\n * An object representing an anonymous sender (e.g. for users that have forwards hidden)\n */\nexport interface AnonymousSender {\n readonly type: 'anonymous'\n\n /**\n * Name of the anonymous sender that should be displayed\n */\n readonly displayName: string\n}\n\n/**\n * Object representing a sender of a forwarded message,\n * which can be either a {@link Peer} or an {@link AnonymousSender}\n */\nexport type PeerSender = Peer | AnonymousSender\n\n/**\n * Given a `tl.TypePeer`, return a {@link Peer} object ({@link User} or {@link Chat})\n */\nexport function parsePeer(peer: tl.TypePeer, index: PeersIndex): Peer {\n switch (peer._) {\n case 'peerUser':\n return new User(index.user(peer.userId))\n case 'peerChat':\n return new Chat(index.chat(peer.chatId))\n case 'peerChannel':\n return new Chat(index.chat(peer.channelId))\n }\n}\n"]}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { MtArgumentError } from '../../../types/errors.js';
|
|
2
2
|
const ERROR_MSG = 'Given peer is not available in this index. This is most likely an internal library error.';
|
|
3
3
|
export class PeersIndex {
|
|
4
|
+
users;
|
|
5
|
+
chats;
|
|
4
6
|
constructor(users = new Map(), chats = new Map()) {
|
|
5
7
|
this.users = users;
|
|
6
8
|
this.chats = chats;
|
|
7
|
-
this.hasMin = false;
|
|
8
9
|
}
|
|
10
|
+
hasMin = false;
|
|
9
11
|
static from(obj) {
|
|
10
12
|
const index = new PeersIndex();
|
|
11
13
|
obj.users?.forEach((user) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peers-index.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/peers-index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,MAAM,SAAS,GAAG,2FAA2F,CAAA;AAE7G,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"peers-index.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/peers-index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,MAAM,SAAS,GAAG,2FAA2F,CAAA;AAE7G,MAAM,OAAO,UAAU;IAEN;IACA;IAFb,YACa,QAAkC,IAAI,GAAG,EAAE,EAC3C,QAAkC,IAAI,GAAG,EAAE;QAD3C,UAAK,GAAL,KAAK,CAAsC;QAC3C,UAAK,GAAL,KAAK,CAAsC;IACrD,CAAC;IAEJ,MAAM,GAAG,KAAK,CAAA;IAEd,MAAM,CAAC,IAAI,CAAC,GAAqD;QAC7D,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAA;QAE9B,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAE9B,IAAK,IAA8C,CAAC,GAAG,EAAE,CAAC;gBACtD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAA;YACvB,CAAC;QACL,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAE9B,IAEQ,IAIH,CAAC,GAAG,EACP,CAAC;gBACC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAA;YACvB,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAA;IACzD,CAAC;IAED,IAAI,CAAC,EAAU;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE5B,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,MAAM,IAAI,eAAe,CAAC,SAAS,CAAC,CAAA;QACxC,CAAC;QAED,OAAO,CAAC,CAAA;IACZ,CAAC;IAED,IAAI,CAAC,EAAU;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE5B,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,MAAM,IAAI,eAAe,CAAC,SAAS,CAAC,CAAA;QACxC,CAAC;QAED,OAAO,CAAC,CAAA;IACZ,CAAC;IAED,GAAG,CAAC,IAAiB;QACjB,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;YACb,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACjC,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACjC,KAAK,aAAa;gBACd,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACxC,CAAC;IACL,CAAC;CACJ","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../../../types/errors.js'\n\nconst ERROR_MSG = 'Given peer is not available in this index. This is most likely an internal library error.'\n\nexport class PeersIndex {\n constructor(\n readonly users: Map<number, tl.TypeUser> = new Map(),\n readonly chats: Map<number, tl.TypeChat> = new Map(),\n ) {}\n\n hasMin = false\n\n static from(obj: { users?: tl.TypeUser[]; chats?: tl.TypeChat[] }): PeersIndex {\n const index = new PeersIndex()\n\n obj.users?.forEach((user) => {\n index.users.set(user.id, user)\n\n if ((user as Exclude<typeof user, tl.RawUserEmpty>).min) {\n index.hasMin = true\n }\n })\n obj.chats?.forEach((chat) => {\n index.chats.set(chat.id, chat)\n\n if (\n (\n chat as Exclude<\n typeof chat,\n tl.RawChatEmpty | tl.RawChat | tl.RawChatForbidden | tl.RawChannelForbidden\n >\n ).min\n ) {\n index.hasMin = true\n }\n })\n\n return index\n }\n\n get empty(): boolean {\n return this.users.size === 0 && this.chats.size === 0\n }\n\n user(id: number): tl.TypeUser {\n const r = this.users.get(id)\n\n if (!r) {\n throw new MtArgumentError(ERROR_MSG)\n }\n\n return r\n }\n\n chat(id: number): tl.TypeChat {\n const r = this.chats.get(id)\n\n if (!r) {\n throw new MtArgumentError(ERROR_MSG)\n }\n\n return r\n }\n\n get(peer: tl.TypePeer): tl.TypeUser | tl.TypeChat {\n switch (peer._) {\n case 'peerUser':\n return this.user(peer.userId)\n case 'peerChat':\n return this.chat(peer.chatId)\n case 'peerChannel':\n return this.chat(peer.channelId)\n }\n }\n}\n"]}
|
|
@@ -7,8 +7,12 @@ import { EmojiStatus } from '../reactions/emoji-status.js';
|
|
|
7
7
|
import { ChatColors } from './chat-colors.js';
|
|
8
8
|
import { ChatPhoto } from './chat-photo.js';
|
|
9
9
|
class User {
|
|
10
|
+
type = 'user';
|
|
11
|
+
/**
|
|
12
|
+
* Underlying raw TL object
|
|
13
|
+
*/
|
|
14
|
+
raw;
|
|
10
15
|
constructor(user) {
|
|
11
|
-
this.type = 'user';
|
|
12
16
|
assertTypeIs('User#init', user, 'user');
|
|
13
17
|
this.raw = user;
|
|
14
18
|
}
|