@mtcute/core 0.12.5 → 0.13.1
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/client.d.ts +104 -2
- package/cjs/highlevel/client.js +27 -0
- package/cjs/highlevel/client.js.map +1 -1
- package/cjs/highlevel/methods/_imports.js.map +1 -1
- package/cjs/highlevel/methods/chats/archive-chats.js +2 -1
- package/cjs/highlevel/methods/chats/archive-chats.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-nearby-chats.js +1 -1
- package/cjs/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/find-dialogs.d.ts +12 -0
- package/cjs/highlevel/methods/dialogs/find-dialogs.js +88 -0
- package/cjs/highlevel/methods/dialogs/find-dialogs.js.map +1 -0
- package/cjs/highlevel/methods/dialogs/get-chatlist-preview.d.ts +8 -0
- package/cjs/highlevel/methods/dialogs/get-chatlist-preview.js +18 -0
- package/cjs/highlevel/methods/dialogs/get-chatlist-preview.js.map +1 -0
- package/cjs/highlevel/methods/dialogs/get-peer-dialogs.js +2 -1
- package/cjs/highlevel/methods/dialogs/get-peer-dialogs.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/iter-dialogs.js +55 -4
- package/cjs/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/join-chatlist.d.ts +15 -0
- package/cjs/highlevel/methods/dialogs/join-chatlist.js +42 -0
- package/cjs/highlevel/methods/dialogs/join-chatlist.js.map +1 -0
- package/cjs/highlevel/methods/messages/_business-connection.d.ts +2 -1
- package/cjs/highlevel/methods/messages/_business-connection.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-available-effects.d.ts +6 -0
- package/cjs/highlevel/methods/messages/get-available-effects.js +26 -0
- package/cjs/highlevel/methods/messages/get-available-effects.js.map +1 -0
- package/cjs/highlevel/methods/messages/get-fact-check.d.ts +11 -0
- package/cjs/highlevel/methods/messages/get-fact-check.js +27 -0
- package/cjs/highlevel/methods/messages/get-fact-check.js.map +1 -0
- package/cjs/highlevel/methods/messages/get-message-reactions.js +1 -0
- package/cjs/highlevel/methods/messages/get-message-reactions.js.map +1 -1
- package/cjs/highlevel/methods/messages/search-hashtag.d.ts +44 -0
- package/cjs/highlevel/methods/messages/search-hashtag.js +75 -0
- package/cjs/highlevel/methods/messages/search-hashtag.js.map +1 -0
- package/cjs/highlevel/methods/messages/send-common.d.ts +5 -0
- package/cjs/highlevel/methods/messages/send-common.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-media-group.js +1 -0
- package/cjs/highlevel/methods/messages/send-media-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-media.js +1 -0
- package/cjs/highlevel/methods/messages/send-media.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-text.js +1 -0
- package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
- package/cjs/highlevel/methods/misc/normalize-privacy-rules.js +2 -1
- package/cjs/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
- package/cjs/highlevel/methods/premium/get-business-connection.js +1 -0
- package/cjs/highlevel/methods/premium/get-business-connection.js.map +1 -1
- package/cjs/highlevel/methods/users/resolve-peer-many.d.ts +6 -2
- package/cjs/highlevel/methods/users/resolve-peer-many.js +22 -6
- package/cjs/highlevel/methods/users/resolve-peer-many.js.map +1 -1
- package/cjs/highlevel/methods/users/resolve-peer.js +30 -11
- package/cjs/highlevel/methods/users/resolve-peer.js.map +1 -1
- package/cjs/highlevel/methods.d.ts +8 -0
- package/cjs/highlevel/methods.js +19 -4
- package/cjs/highlevel/methods.js.map +1 -1
- package/cjs/highlevel/types/conversation.js +1 -1
- package/cjs/highlevel/types/conversation.js.map +1 -1
- package/cjs/highlevel/types/messages/dialog.d.ts +2 -2
- package/cjs/highlevel/types/messages/dialog.js +2 -3
- package/cjs/highlevel/types/messages/dialog.js.map +1 -1
- package/cjs/highlevel/types/messages/fact-check.d.ts +30 -0
- package/cjs/highlevel/types/messages/fact-check.js +56 -0
- package/cjs/highlevel/types/messages/fact-check.js.map +1 -0
- package/cjs/highlevel/types/messages/index.d.ts +2 -0
- package/cjs/highlevel/types/messages/index.js +2 -0
- package/cjs/highlevel/types/messages/index.js.map +1 -1
- package/cjs/highlevel/types/messages/message-effect.d.ts +20 -0
- package/cjs/highlevel/types/messages/message-effect.js +69 -0
- package/cjs/highlevel/types/messages/message-effect.js.map +1 -0
- package/cjs/highlevel/types/messages/message-entity.d.ts +4 -1
- package/cjs/highlevel/types/messages/message-entity.js +1 -1
- package/cjs/highlevel/types/messages/message-entity.js.map +1 -1
- package/cjs/highlevel/types/messages/message.d.ts +12 -0
- package/cjs/highlevel/types/messages/message.js +23 -0
- package/cjs/highlevel/types/messages/message.js.map +1 -1
- package/cjs/highlevel/types/peers/chat.d.ts +2 -0
- package/cjs/highlevel/types/peers/chat.js +4 -0
- package/cjs/highlevel/types/peers/chat.js.map +1 -1
- package/cjs/highlevel/types/peers/chatlist-preview.d.ts +21 -0
- package/cjs/highlevel/types/peers/chatlist-preview.js +49 -0
- package/cjs/highlevel/types/peers/chatlist-preview.js.map +1 -0
- package/cjs/highlevel/types/peers/index.d.ts +1 -0
- package/cjs/highlevel/types/peers/index.js +1 -0
- package/cjs/highlevel/types/peers/index.js.map +1 -1
- package/cjs/network/network-manager.js +1 -1
- package/cjs/utils/links/misc.d.ts +6 -0
- package/cjs/utils/links/misc.js +24 -1
- package/cjs/utils/links/misc.js.map +1 -1
- package/esm/highlevel/client.d.ts +104 -2
- package/esm/highlevel/client.js +27 -0
- package/esm/highlevel/client.js.map +1 -1
- package/esm/highlevel/methods/_imports.js.map +1 -1
- package/esm/highlevel/methods/chats/archive-chats.js +2 -1
- package/esm/highlevel/methods/chats/archive-chats.js.map +1 -1
- package/esm/highlevel/methods/chats/get-nearby-chats.js +1 -1
- package/esm/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
- package/esm/highlevel/methods/dialogs/find-dialogs.d.ts +12 -0
- package/esm/highlevel/methods/dialogs/find-dialogs.js +84 -0
- package/esm/highlevel/methods/dialogs/find-dialogs.js.map +1 -0
- package/esm/highlevel/methods/dialogs/get-chatlist-preview.d.ts +8 -0
- package/esm/highlevel/methods/dialogs/get-chatlist-preview.js +14 -0
- package/esm/highlevel/methods/dialogs/get-chatlist-preview.js.map +1 -0
- package/esm/highlevel/methods/dialogs/get-peer-dialogs.js +2 -1
- package/esm/highlevel/methods/dialogs/get-peer-dialogs.js.map +1 -1
- package/esm/highlevel/methods/dialogs/iter-dialogs.js +56 -5
- package/esm/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
- package/esm/highlevel/methods/dialogs/join-chatlist.d.ts +15 -0
- package/esm/highlevel/methods/dialogs/join-chatlist.js +38 -0
- package/esm/highlevel/methods/dialogs/join-chatlist.js.map +1 -0
- package/esm/highlevel/methods/messages/_business-connection.d.ts +2 -1
- package/esm/highlevel/methods/messages/_business-connection.js.map +1 -1
- package/esm/highlevel/methods/messages/get-available-effects.d.ts +6 -0
- package/esm/highlevel/methods/messages/get-available-effects.js +22 -0
- package/esm/highlevel/methods/messages/get-available-effects.js.map +1 -0
- package/esm/highlevel/methods/messages/get-fact-check.d.ts +11 -0
- package/esm/highlevel/methods/messages/get-fact-check.js +23 -0
- package/esm/highlevel/methods/messages/get-fact-check.js.map +1 -0
- package/esm/highlevel/methods/messages/get-message-reactions.js +1 -0
- package/esm/highlevel/methods/messages/get-message-reactions.js.map +1 -1
- package/esm/highlevel/methods/messages/search-hashtag.d.ts +44 -0
- package/esm/highlevel/methods/messages/search-hashtag.js +70 -0
- package/esm/highlevel/methods/messages/search-hashtag.js.map +1 -0
- package/esm/highlevel/methods/messages/send-common.d.ts +5 -0
- package/esm/highlevel/methods/messages/send-common.js.map +1 -1
- package/esm/highlevel/methods/messages/send-media-group.js +1 -0
- package/esm/highlevel/methods/messages/send-media-group.js.map +1 -1
- package/esm/highlevel/methods/messages/send-media.js +1 -0
- package/esm/highlevel/methods/messages/send-media.js.map +1 -1
- package/esm/highlevel/methods/messages/send-text.js +1 -0
- package/esm/highlevel/methods/messages/send-text.js.map +1 -1
- package/esm/highlevel/methods/misc/normalize-privacy-rules.js +2 -1
- package/esm/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
- package/esm/highlevel/methods/premium/get-business-connection.js +1 -0
- package/esm/highlevel/methods/premium/get-business-connection.js.map +1 -1
- package/esm/highlevel/methods/users/resolve-peer-many.d.ts +6 -2
- package/esm/highlevel/methods/users/resolve-peer-many.js +22 -6
- package/esm/highlevel/methods/users/resolve-peer-many.js.map +1 -1
- package/esm/highlevel/methods/users/resolve-peer.js +30 -11
- package/esm/highlevel/methods/users/resolve-peer.js.map +1 -1
- package/esm/highlevel/methods.d.ts +8 -0
- package/esm/highlevel/methods.js +7 -0
- package/esm/highlevel/methods.js.map +1 -1
- package/esm/highlevel/types/conversation.js +1 -1
- package/esm/highlevel/types/conversation.js.map +1 -1
- package/esm/highlevel/types/messages/dialog.d.ts +2 -2
- package/esm/highlevel/types/messages/dialog.js +2 -3
- package/esm/highlevel/types/messages/dialog.js.map +1 -1
- package/esm/highlevel/types/messages/fact-check.d.ts +30 -0
- package/esm/highlevel/types/messages/fact-check.js +53 -0
- package/esm/highlevel/types/messages/fact-check.js.map +1 -0
- package/esm/highlevel/types/messages/index.d.ts +2 -0
- package/esm/highlevel/types/messages/index.js +2 -0
- package/esm/highlevel/types/messages/index.js.map +1 -1
- package/esm/highlevel/types/messages/message-effect.d.ts +20 -0
- package/esm/highlevel/types/messages/message-effect.js +66 -0
- package/esm/highlevel/types/messages/message-effect.js.map +1 -0
- package/esm/highlevel/types/messages/message-entity.d.ts +4 -1
- package/esm/highlevel/types/messages/message-entity.js +1 -1
- package/esm/highlevel/types/messages/message-entity.js.map +1 -1
- package/esm/highlevel/types/messages/message.d.ts +12 -0
- package/esm/highlevel/types/messages/message.js +23 -0
- package/esm/highlevel/types/messages/message.js.map +1 -1
- package/esm/highlevel/types/peers/chat.d.ts +2 -0
- package/esm/highlevel/types/peers/chat.js +4 -0
- package/esm/highlevel/types/peers/chat.js.map +1 -1
- package/esm/highlevel/types/peers/chatlist-preview.d.ts +21 -0
- package/esm/highlevel/types/peers/chatlist-preview.js +46 -0
- package/esm/highlevel/types/peers/chatlist-preview.js.map +1 -0
- package/esm/highlevel/types/peers/index.d.ts +1 -0
- package/esm/highlevel/types/peers/index.js +1 -0
- package/esm/highlevel/types/peers/index.js.map +1 -1
- package/esm/network/network-manager.js +1 -1
- package/esm/utils/links/misc.d.ts +6 -0
- package/esm/utils/links/misc.js +23 -0
- package/esm/utils/links/misc.js.map +1 -1
- package/package.json +4 -4
|
@@ -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 { MessageEntity } from '../messages/message-entity.js'\nimport { EmojiStatus } from '../reactions/emoji-status.js'\nimport { ChatColors } from './chat-colors.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(peer: tl.TypeUser | tl.TypeChat) {\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 * 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 FullChat#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 * 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 * 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 * 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 /**\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 'permissions',\n 'defaultPermissions',\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":";;;AAEA,wDAAgF;AAChF,gEAA8D;AAC9D,mDAAsD;AACtD,uDAAuD;AACvD,qEAA6D;AAC7D,kEAA0D;AAC1D,qDAA6C;AAC7C,+DAAuD;AACvD,mDAA2C;AAE3C,uCAAgC;AAahC;;GAEG;AACH,MAAa,IAAI;IACJ,IAAI,GAAG,MAAe,CAAA;IAE/B;;OAEG;IACM,IAAI,CAAwF;IAErG,YAAY,IAA+B;QACvC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,2BAAe,CAAC,uBAAuB,CAAC,CAAA;QAE7D,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;YACb,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC;YACf,KAAK,eAAe,CAAC;YACrB,KAAK,kBAAkB;gBACnB,MAAK;YACT;gBACI,MAAM,IAAI,gCAAoB,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/E,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,6BAA6B;IAC7B,IAAI,EAAE;QACF,OAAO,IAAA,+BAAe,EAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,IAAI,KAAK;QACL,kCAAkC;QAClC,OAAO,OAAO,CAAE,IAAI,CAAC,IAA0B,CAAC,GAAG,CAAC,CAAA;IACxD,CAAC;IAED;;;;;;;;;;OAUG;IACH,IAAI,SAAS;QACT,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClB,KAAK,MAAM;gBACP,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBAChB,OAAO;wBACH,CAAC,EAAE,8BAA8B;wBACjC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;qBACvB,CAAA;gBACL,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxB,MAAM,IAAI,2BAAe,CAAC,sCAAsC,CAAC,CAAA;gBACrE,CAAC;gBAED,OAAO;oBACH,CAAC,EAAE,eAAe;oBAClB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;iBACnC,CAAA;YACL,KAAK,MAAM,CAAC;YACZ,KAAK,eAAe;gBAChB,OAAO;oBACH,CAAC,EAAE,eAAe;oBAClB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;iBACvB,CAAA;YACL,KAAK,SAAS,CAAC;YACf,KAAK,kBAAkB;gBACnB,IAAK,IAAI,CAAC,IAAsB,CAAC,GAAG,EAAE,CAAC;oBACnC,OAAO;wBACH,CAAC,EAAE,iCAAiC;wBACpC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;qBAC1B,CAAA;gBACL,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxB,MAAM,IAAI,2BAAe,CAAC,sCAAsC,CAAC,CAAA;gBACrE,CAAC;gBAED,OAAO;oBACH,CAAC,EAAE,kBAAkB;oBACrB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;oBACvB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;iBACnC,CAAA;QACT,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,IAAI,QAAQ;QACR,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClB,KAAK,MAAM;gBACP,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;YAC5C,KAAK,MAAM,CAAC;YACZ,KAAK,eAAe;gBAChB,OAAO,OAAO,CAAA;YAClB,KAAK,SAAS,CAAC;YACf,KAAK,kBAAkB;gBACnB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnD,OAAO,WAAW,CAAA;gBACtB,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC7B,OAAO,SAAS,CAAA;gBACpB,CAAC;gBAED,OAAO,YAAY,CAAA;QAC3B,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACP,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,KAAK,OAAO,CAAC;YACb,KAAK,YAAY,CAAC;YAClB,KAAK,WAAW;gBACZ,OAAO,IAAI,CAAA;QACnB,CAAC;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QACV,OAAO,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC,CAAC,KAAK,CAAA;IAChE,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACZ,OAAO,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC,CAAC,KAAK,CAAA;IACpE,CAAC;IAED;;;OAGG;IACH,IAAI,SAAS;QACT,OAAO,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC,CAAC,KAAK,CAAA;IAC9D,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACP,OAAO,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvE,CAAC;IAED,kDAAkD;IAClD,IAAI,MAAM;QACN,OAAO,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,KAAK,CAAA;IACxD,CAAC;IAED,2DAA2D;IAC3D,IAAI,MAAM;QACN,OAAO,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,KAAK,CAAA;IACxD,CAAC;IAED,kFAAkF;IAClF,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAA;IACvD,CAAC;IAED,oEAAoE;IACpE,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAK,CAAA;IACpD,CAAC;IAED,wCAAwC;IACxC,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAA;IACvD,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAM,CAAA;IACxD,CAAC;IAED,sFAAsF;IACtF,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,kBAAkB,CAAA;IAChF,CAAC;IAED;;;;OAIG;IACH,IAAI,QAAQ;QACR,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClB,KAAK,MAAM;gBACP,OAAO,IAAI,CAAA;YACf,KAAK,SAAS,CAAC;YACf,KAAK,MAAM;gBACP,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;YAC1B;gBACI,OAAO,KAAK,CAAA;QACpB,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,IAAI,aAAa;QACb,OAAO,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC,CAAC,KAAK,CAAA;IAC1E,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAmB,CAAC,CAAC,CAAC,KAAK,CAAA;IACpF,CAAC;IAED,4EAA4E;IAC5E,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,WAAY,CAAA;IAC9D,CAAC;IAED,wEAAwE;IACxE,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,UAAW,CAAA;IAC7D,CAAC;IAED,yEAAyE;IACzE,IAAI,oBAAoB;QACpB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAW,CAAA;IACzF,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAClE,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACR,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAE3C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAA;IAC1E,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACT,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAE5C,OAAO,CACH,IAAI,CAAC,IAAI,CAAC,SAAS;YACnB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAChG,CAAA;IACL,CAAC;IAED;;;OAGG;IACH,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACtE,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACrE,CAAC;IAED;;;;;OAKG;IACH,IAAI,WAAW;QACX,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA;YACzD,CAAC;YAED,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAA;QACnD,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;IACH,IAAI,KAAK;QACL,IACI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC;YACvB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAChB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,WAAW,CAAC,EACjF,CAAC;YACC,OAAO,IAAI,CAAA;QACf,CAAC;QAED,OAAO,IAAI,yBAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzD,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,IAAI;QACJ,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAExC,OAAO,CACF,IAAI,CAAC,IAAI,CAAC,KAA6F;YACpG,EAAE,IAAI,IAAI,IAAI,CACrB,CAAA;IACL,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACZ,OAAO,mBAAmB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACxF,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACX,IAAI,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAA;QACf,CAAC;QAED,OAAO,IAAI,qCAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACtD,CAAC;IAED;;OAEG;IACH,IAAI,kBAAkB;QAClB,IAAI,CAAC,CAAC,qBAAqB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC1E,OAAO,IAAI,CAAA;QACf,CAAC;QAED,OAAO,IAAI,qCAAe,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC7D,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW;QACX,OAAO,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5E,CAAC;IAED;;;OAGG;IACM,QAAQ,CAAS;IAE1B;;OAEG;IACH,IAAI,YAAY;QACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClB,KAAK,SAAS,CAAC;YACf,KAAK,MAAM;gBACP,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,CAAC,CAAA;IACZ,CAAC;IAED;;;;OAIG;IACH,IAAI,KAAK;QACL,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QAE/F,OAAO,IAAI,2BAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IAC9C,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACX,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QACpE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,kBAAkB;YAAE,OAAO,IAAI,CAAA;QAEzF,OAAO,IAAI,6BAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC;IAED;;;;;OAKG;IACH,IAAI,aAAa;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAA;QAEtG,OAAO,IAAI,2BAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IAC9C,CAAC;IAED,iEAAiE;IACjE,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED;;;;OAIG;IACH,IAAI,IAAI;QACJ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QAEvC,OAAO,IAAI,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,gBAAgB;IAChB,MAAM,CAAC,iBAAiB,CAAC,OAA6C,EAAE,KAAiB;QACrF,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACrD,CAAC;IAED,gBAAgB;IAChB,MAAM,CAAC,cAAc,CAAC,IAAiB,EAAE,KAAiB;QACtD,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;YACb,KAAK,UAAU;gBACX,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YAC5C,KAAK,UAAU;gBACX,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAChD,CAAC;QAED,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,IAAoB;QACxB,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAE7C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC9B,CAAC;QAED,IAAI,CAAC,IAAI;YAAE,IAAI,GAAG,IAAI,CAAC,WAAW,CAAA;QAClC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAA;QAE/B,OAAO,IAAI,iCAAa,CACpB;YACI,CAAC,EAAE,sBAAsB;YACzB,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,gBAAgB,IAAI,CAAC,QAAQ,EAAE;SACvC,EACD,IAAI,CACP,CAAA;IACL,CAAC;CACJ;AAzgBD,oBAygBC;AAED,IAAA,2BAAc,EAAC,IAAI,EAAE;IACjB,WAAW;IACX,UAAU;IACV,WAAW;IACX,OAAO;IACP,aAAa;IACb,oBAAoB;IACpB,MAAM;IACN,OAAO;CACV,CAAC,CAAA;AACF,IAAA,0BAAe,EAAC,IAAI,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA","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 { MessageEntity } from '../messages/message-entity.js'\nimport { EmojiStatus } from '../reactions/emoji-status.js'\nimport { ChatColors } from './chat-colors.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(peer: tl.TypeUser | tl.TypeChat) {\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 /** Whether the chat is not available (e.g. because the user was banned from there) */\n get isUnavailable(): boolean {\n return this.peer._ === 'chatForbidden' || this.peer._ === 'channelForbidden'\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 * 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 FullChat#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 * 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 * 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 * 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 /**\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 'permissions',\n 'defaultPermissions',\n 'user',\n 'color',\n])\nmakeInspectable(Chat, [], ['user'])\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { tl } from '@mtcute/tl';
|
|
2
|
+
import { Chat } from './chat.js';
|
|
3
|
+
import { PeersIndex } from './peers-index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Information about a chatlist
|
|
6
|
+
*/
|
|
7
|
+
export declare class ChatlistPreview {
|
|
8
|
+
readonly raw: tl.chatlists.TypeChatlistInvite;
|
|
9
|
+
readonly peers: PeersIndex;
|
|
10
|
+
constructor(raw: tl.chatlists.TypeChatlistInvite);
|
|
11
|
+
/** Whether the current user has already joined this chatlist */
|
|
12
|
+
get isJoined(): boolean;
|
|
13
|
+
/** If we joined the chatlist, ID of the folder representing it */
|
|
14
|
+
get folderId(): number | null;
|
|
15
|
+
/** Title of the chatlist (only available for non-joined chatlists) */
|
|
16
|
+
get title(): string;
|
|
17
|
+
/** Emoji representing an icon of the chatlist (may only be available for non-joined chatlists) */
|
|
18
|
+
get emoji(): string | null;
|
|
19
|
+
/** List of all chats contained in the chatlist */
|
|
20
|
+
get chats(): Chat[];
|
|
21
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChatlistPreview = void 0;
|
|
4
|
+
const inspectable_js_1 = require("../../utils/inspectable.js");
|
|
5
|
+
const memoize_js_1 = require("../../utils/memoize.js");
|
|
6
|
+
const chat_js_1 = require("./chat.js");
|
|
7
|
+
const peers_index_js_1 = require("./peers-index.js");
|
|
8
|
+
/**
|
|
9
|
+
* Information about a chatlist
|
|
10
|
+
*/
|
|
11
|
+
class ChatlistPreview {
|
|
12
|
+
raw;
|
|
13
|
+
peers;
|
|
14
|
+
constructor(raw) {
|
|
15
|
+
this.raw = raw;
|
|
16
|
+
this.peers = peers_index_js_1.PeersIndex.from(raw);
|
|
17
|
+
}
|
|
18
|
+
/** Whether the current user has already joined this chatlist */
|
|
19
|
+
get isJoined() {
|
|
20
|
+
return this.raw._ === 'chatlists.chatlistInviteAlready';
|
|
21
|
+
}
|
|
22
|
+
/** If we joined the chatlist, ID of the folder representing it */
|
|
23
|
+
get folderId() {
|
|
24
|
+
return this.raw._ === 'chatlists.chatlistInviteAlready' ? this.raw.filterId : null;
|
|
25
|
+
}
|
|
26
|
+
/** Title of the chatlist (only available for non-joined chatlists) */
|
|
27
|
+
get title() {
|
|
28
|
+
return this.raw._ === 'chatlists.chatlistInvite' ? this.raw.title : '';
|
|
29
|
+
}
|
|
30
|
+
/** Emoji representing an icon of the chatlist (may only be available for non-joined chatlists) */
|
|
31
|
+
get emoji() {
|
|
32
|
+
return this.raw._ === 'chatlists.chatlistInvite' ? this.raw.emoticon ?? null : null;
|
|
33
|
+
}
|
|
34
|
+
/** List of all chats contained in the chatlist */
|
|
35
|
+
get chats() {
|
|
36
|
+
let peers;
|
|
37
|
+
if (this.raw._ === 'chatlists.chatlistInvite') {
|
|
38
|
+
peers = this.raw.peers;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
peers = [...this.raw.alreadyPeers, ...this.raw.missingPeers];
|
|
42
|
+
}
|
|
43
|
+
return peers.map((peer) => chat_js_1.Chat._parseFromPeer(peer, this.peers));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.ChatlistPreview = ChatlistPreview;
|
|
47
|
+
(0, memoize_js_1.memoizeGetters)(ChatlistPreview, ['chats']);
|
|
48
|
+
(0, inspectable_js_1.makeInspectable)(ChatlistPreview);
|
|
49
|
+
//# sourceMappingURL=chatlist-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatlist-preview.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/chatlist-preview.ts"],"names":[],"mappings":";;;AAEA,+DAA4D;AAC5D,uDAAuD;AACvD,uCAAgC;AAChC,qDAA6C;AAE7C;;GAEG;AACH,MAAa,eAAe;IAEH;IADZ,KAAK,CAAY;IAC1B,YAAqB,GAAoC;QAApC,QAAG,GAAH,GAAG,CAAiC;QACrD,IAAI,CAAC,KAAK,GAAG,2BAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC;IAED,gEAAgE;IAChE,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,iCAAiC,CAAA;IAC3D,CAAC;IAED,kEAAkE;IAClE,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,iCAAiC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;IACtF,CAAC;IAED,sEAAsE;IACtE,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1E,CAAC;IAED,kGAAkG;IAClG,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACvF,CAAC;IAED,kDAAkD;IAClD,IAAI,KAAK;QACL,IAAI,KAAK,CAAA;QAET,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,0BAA0B,EAAE,CAAC;YAC5C,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAA;QAC1B,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAChE,CAAC;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACrE,CAAC;CACJ;AAtCD,0CAsCC;AAED,IAAA,2BAAc,EAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;AAC1C,IAAA,gCAAe,EAAC,eAAe,CAAC,CAAA","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { makeInspectable } from '../../utils/inspectable.js'\nimport { memoizeGetters } from '../../utils/memoize.js'\nimport { Chat } from './chat.js'\nimport { PeersIndex } from './peers-index.js'\n\n/**\n * Information about a chatlist\n */\nexport class ChatlistPreview {\n readonly peers: PeersIndex\n constructor(readonly raw: tl.chatlists.TypeChatlistInvite) {\n this.peers = PeersIndex.from(raw)\n }\n\n /** Whether the current user has already joined this chatlist */\n get isJoined(): boolean {\n return this.raw._ === 'chatlists.chatlistInviteAlready'\n }\n\n /** If we joined the chatlist, ID of the folder representing it */\n get folderId(): number | null {\n return this.raw._ === 'chatlists.chatlistInviteAlready' ? this.raw.filterId : null\n }\n\n /** Title of the chatlist (only available for non-joined chatlists) */\n get title(): string {\n return this.raw._ === 'chatlists.chatlistInvite' ? this.raw.title : ''\n }\n\n /** Emoji representing an icon of the chatlist (may only be available for non-joined chatlists) */\n get emoji(): string | null {\n return this.raw._ === 'chatlists.chatlistInvite' ? this.raw.emoticon ?? null : null\n }\n\n /** List of all chats contained in the chatlist */\n get chats(): Chat[] {\n let peers\n\n if (this.raw._ === 'chatlists.chatlistInvite') {\n peers = this.raw.peers\n } else {\n peers = [...this.raw.alreadyPeers, ...this.raw.missingPeers]\n }\n\n return peers.map((peer) => Chat._parseFromPeer(peer, this.peers))\n }\n}\n\nmemoizeGetters(ChatlistPreview, ['chats'])\nmakeInspectable(ChatlistPreview)\n"]}
|
|
@@ -7,6 +7,7 @@ export * from './chat-member.js';
|
|
|
7
7
|
export * from './chat-permissions.js';
|
|
8
8
|
export * from './chat-photo.js';
|
|
9
9
|
export * from './chat-preview.js';
|
|
10
|
+
export * from './chatlist-preview.js';
|
|
10
11
|
export * from './forum-topic.js';
|
|
11
12
|
export * from './full-chat.js';
|
|
12
13
|
export * from './peer.js';
|
|
@@ -23,6 +23,7 @@ __exportStar(require("./chat-member.js"), exports);
|
|
|
23
23
|
__exportStar(require("./chat-permissions.js"), exports);
|
|
24
24
|
__exportStar(require("./chat-photo.js"), exports);
|
|
25
25
|
__exportStar(require("./chat-preview.js"), exports);
|
|
26
|
+
__exportStar(require("./chatlist-preview.js"), exports);
|
|
26
27
|
__exportStar(require("./forum-topic.js"), exports);
|
|
27
28
|
__exportStar(require("./full-chat.js"), exports);
|
|
28
29
|
__exportStar(require("./peer.js"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,wDAAqC;AACrC,wDAAqC;AACrC,+DAA4C;AAC5C,qDAAkC;AAClC,mDAAgC;AAChC,wDAAqC;AACrC,kDAA+B;AAC/B,oDAAiC;AACjC,mDAAgC;AAChC,iDAA8B;AAC9B,4CAAyB;AACzB,mDAAgC;AAChC,qDAAkC;AAClC,4CAAyB","sourcesContent":["export * from './chat.js'\nexport * from './chat-event/index.js'\nexport * from './chat-invite-link.js'\nexport * from './chat-invite-link-member.js'\nexport * from './chat-location.js'\nexport * from './chat-member.js'\nexport * from './chat-permissions.js'\nexport * from './chat-photo.js'\nexport * from './chat-preview.js'\nexport * from './forum-topic.js'\nexport * from './full-chat.js'\nexport * from './peer.js'\nexport * from './peers-index.js'\nexport * from './typing-status.js'\nexport * from './user.js'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/peers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,wDAAqC;AACrC,wDAAqC;AACrC,+DAA4C;AAC5C,qDAAkC;AAClC,mDAAgC;AAChC,wDAAqC;AACrC,kDAA+B;AAC/B,oDAAiC;AACjC,wDAAqC;AACrC,mDAAgC;AAChC,iDAA8B;AAC9B,4CAAyB;AACzB,mDAAgC;AAChC,qDAAkC;AAClC,4CAAyB","sourcesContent":["export * from './chat.js'\nexport * from './chat-event/index.js'\nexport * from './chat-invite-link.js'\nexport * from './chat-invite-link-member.js'\nexport * from './chat-location.js'\nexport * from './chat-member.js'\nexport * from './chat-permissions.js'\nexport * from './chat-photo.js'\nexport * from './chat-preview.js'\nexport * from './chatlist-preview.js'\nexport * from './forum-topic.js'\nexport * from './full-chat.js'\nexport * from './peer.js'\nexport * from './peers-index.js'\nexport * from './typing-status.js'\nexport * from './user.js'\n"]}
|
package/cjs/utils/links/misc.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.boost = exports.share = void 0;
|
|
3
|
+
exports.folder = exports.boost = exports.share = void 0;
|
|
4
4
|
const common_js_1 = require("./common.js");
|
|
5
5
|
/**
|
|
6
6
|
* Share links
|
|
@@ -74,4 +74,27 @@ exports.boost = (0, common_js_1.deeplinkBuilder)({
|
|
|
74
74
|
return { username: path };
|
|
75
75
|
},
|
|
76
76
|
});
|
|
77
|
+
/**
|
|
78
|
+
* Link to a shared folder (chat list)
|
|
79
|
+
*/
|
|
80
|
+
exports.folder = (0, common_js_1.deeplinkBuilder)({
|
|
81
|
+
// tg://addlist?slug=XXX
|
|
82
|
+
internalBuild: ({ slug }) => ['addlist', { slug }],
|
|
83
|
+
internalParse: (path, query) => {
|
|
84
|
+
if (path !== 'addlist')
|
|
85
|
+
return null;
|
|
86
|
+
const slug = query.get('slug');
|
|
87
|
+
if (!slug)
|
|
88
|
+
return null;
|
|
89
|
+
return { slug };
|
|
90
|
+
},
|
|
91
|
+
// https://t.me/addlist/XXX
|
|
92
|
+
externalBuild: ({ slug }) => [`addlist/${slug}`, null],
|
|
93
|
+
externalParse: (path) => {
|
|
94
|
+
const [prefix, slug] = path.split('/');
|
|
95
|
+
if (prefix !== 'addlist')
|
|
96
|
+
return null;
|
|
97
|
+
return { slug };
|
|
98
|
+
},
|
|
99
|
+
});
|
|
77
100
|
//# sourceMappingURL=misc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../../src/utils/links/misc.ts"],"names":[],"mappings":"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","sourcesContent":["import { deeplinkBuilder } from './common.js'\n\n/**\n * Share links\n *\n * Used to share a prepared message and URL into a chosen chat's text field.\n */\nexport const share = deeplinkBuilder<{ url: string; text?: string }>({\n internalBuild: ({ url, text }) => ['msg_url', { url, text }],\n internalParse: (path, query) => {\n if (path !== 'msg_url') return null\n\n const url = query.get('url')\n if (!url) return null\n\n const text = query.get('text')\n\n return { url, text: text || undefined }\n },\n externalBuild: ({ url, text }) => ['share', { url, text }],\n externalParse: (path, query) => {\n if (path !== 'share') return null\n\n const url = query.get('url')\n if (!url) return null\n\n const text = query.get('text')\n\n return { url, text: text || undefined }\n },\n})\n\n/**\n * Boost links\n *\n * Used by users to boost channels, granting them the ability to post stories.\n */\nexport const boost = deeplinkBuilder<{ username: string } | { channelId: number }>({\n internalBuild: (params) => {\n if ('username' in params) {\n return ['boost', { domain: params.username }]\n }\n\n return ['boost', { channel: params.channelId }]\n },\n internalParse: (path, query) => {\n if (path !== 'boost') return null\n\n const username = query.get('domain')\n\n if (username) {\n return { username }\n }\n\n const channelId = Number(query.get('channel'))\n\n if (!isNaN(channelId)) {\n return { channelId: Number(channelId) }\n }\n\n return null\n },\n externalBuild: (params) => {\n if ('username' in params) {\n return [params.username, { boost: true }]\n }\n\n return [`c/${params.channelId}`, { boost: true }]\n },\n externalParse: (path, query) => {\n if (!query.has('boost')) return null\n\n if (path.startsWith('c/')) {\n const channelId = Number(path.slice(2))\n if (isNaN(channelId)) return null\n\n return { channelId }\n }\n\n if (path.includes('/')) return null\n\n return { username: path }\n },\n})\n"]}
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../../src/utils/links/misc.ts"],"names":[],"mappings":"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","sourcesContent":["import { deeplinkBuilder } from './common.js'\n\n/**\n * Share links\n *\n * Used to share a prepared message and URL into a chosen chat's text field.\n */\nexport const share = deeplinkBuilder<{ url: string; text?: string }>({\n internalBuild: ({ url, text }) => ['msg_url', { url, text }],\n internalParse: (path, query) => {\n if (path !== 'msg_url') return null\n\n const url = query.get('url')\n if (!url) return null\n\n const text = query.get('text')\n\n return { url, text: text || undefined }\n },\n externalBuild: ({ url, text }) => ['share', { url, text }],\n externalParse: (path, query) => {\n if (path !== 'share') return null\n\n const url = query.get('url')\n if (!url) return null\n\n const text = query.get('text')\n\n return { url, text: text || undefined }\n },\n})\n\n/**\n * Boost links\n *\n * Used by users to boost channels, granting them the ability to post stories.\n */\nexport const boost = deeplinkBuilder<{ username: string } | { channelId: number }>({\n internalBuild: (params) => {\n if ('username' in params) {\n return ['boost', { domain: params.username }]\n }\n\n return ['boost', { channel: params.channelId }]\n },\n internalParse: (path, query) => {\n if (path !== 'boost') return null\n\n const username = query.get('domain')\n\n if (username) {\n return { username }\n }\n\n const channelId = Number(query.get('channel'))\n\n if (!isNaN(channelId)) {\n return { channelId: Number(channelId) }\n }\n\n return null\n },\n externalBuild: (params) => {\n if ('username' in params) {\n return [params.username, { boost: true }]\n }\n\n return [`c/${params.channelId}`, { boost: true }]\n },\n externalParse: (path, query) => {\n if (!query.has('boost')) return null\n\n if (path.startsWith('c/')) {\n const channelId = Number(path.slice(2))\n if (isNaN(channelId)) return null\n\n return { channelId }\n }\n\n if (path.includes('/')) return null\n\n return { username: path }\n },\n})\n\n/**\n * Link to a shared folder (chat list)\n */\nexport const folder = deeplinkBuilder<{ slug: string }>({\n // tg://addlist?slug=XXX\n internalBuild: ({ slug }) => ['addlist', { slug }],\n internalParse: (path, query) => {\n if (path !== 'addlist') return null\n\n const slug = query.get('slug')\n if (!slug) return null\n\n return { slug }\n },\n\n // https://t.me/addlist/XXX\n externalBuild: ({ slug }) => [`addlist/${slug}`, null],\n externalParse: (path) => {\n const [prefix, slug] = path.split('/')\n if (prefix !== 'addlist') return null\n\n return { slug }\n },\n})\n"]}
|
|
@@ -18,6 +18,7 @@ import { ForwardMessageOptions } from './methods/messages/forward-messages.js';
|
|
|
18
18
|
import { getHistory, GetHistoryOffset } from './methods/messages/get-history.js';
|
|
19
19
|
import { getReactionUsers, GetReactionUsersOffset } from './methods/messages/get-reaction-users.js';
|
|
20
20
|
import { searchGlobal, SearchGlobalOffset } from './methods/messages/search-global.js';
|
|
21
|
+
import { searchHashtag, SearchHashtagOffset } from './methods/messages/search-hashtag.js';
|
|
21
22
|
import { searchMessages, SearchMessagesOffset } from './methods/messages/search-messages.js';
|
|
22
23
|
import { CommonSendParams } from './methods/messages/send-common.js';
|
|
23
24
|
import { SendCopyParams } from './methods/messages/send-copy.js';
|
|
@@ -34,7 +35,7 @@ import { getProfileStories } from './methods/stories/get-profile-stories.js';
|
|
|
34
35
|
import { getStoryViewers } from './methods/stories/get-story-viewers.js';
|
|
35
36
|
import { getProfilePhotos } from './methods/users/get-profile-photos.js';
|
|
36
37
|
import { ITelegramStorageProvider } from './storage/provider.js';
|
|
37
|
-
import { AllStories, ArrayPaginated, ArrayWithTotal, Boost, BoostSlot, BoostStats, BotChatJoinRequestUpdate, BotCommands, BotReactionCountUpdate, BotReactionUpdate, BotStoppedUpdate, BusinessChatLink, BusinessConnection, BusinessMessage, BusinessWorkHoursDay, CallbackQuery, Chat, ChatEvent, ChatInviteLink, ChatInviteLinkMember, ChatJoinRequestUpdate, ChatMember, ChatMemberUpdate, ChatPreview, ChosenInlineResult, CollectibleInfo, DeleteBusinessMessageUpdate, DeleteMessageUpdate, DeleteStoryUpdate, Dialog, FileDownloadLocation, FileDownloadParameters, ForumTopic, FullChat, GameHighScore, HistoryReadUpdate, InlineCallbackQuery, InlineQuery, InputChatEventFilters, InputDialogFolder, InputFileLike, InputInlineResult, InputMediaLike, InputMediaSticker, InputMessageId, InputPeerLike, InputPrivacyRule, InputReaction, InputStickerSet, InputStickerSetItem, InputText, MaybeDynamic, Message, MessageMedia, MessageReactions, ParametersSkip2, ParsedUpdate, PeerReaction, PeersIndex, PeerStories, Photo, Poll, PollUpdate, PollVoteUpdate, PreCheckoutQuery, RawDocument, ReplyMarkup, SentCode, Sticker, StickerSet, StickerSourceType, StickerType, StoriesStealthMode, Story, StoryInteractions, StoryUpdate, StoryViewer, StoryViewersList, TakeoutSession, TextWithEntities, TypingStatus, UploadedFile, UploadFileLike, User, UserStatusUpdate, UserTypingUpdate } from './types/index.js';
|
|
38
|
+
import { AllStories, ArrayPaginated, ArrayWithTotal, Boost, BoostSlot, BoostStats, BotChatJoinRequestUpdate, BotCommands, BotReactionCountUpdate, BotReactionUpdate, BotStoppedUpdate, BusinessChatLink, BusinessConnection, BusinessMessage, BusinessWorkHoursDay, CallbackQuery, Chat, ChatEvent, ChatInviteLink, ChatInviteLinkMember, ChatJoinRequestUpdate, ChatlistPreview, ChatMember, ChatMemberUpdate, ChatPreview, ChosenInlineResult, CollectibleInfo, DeleteBusinessMessageUpdate, DeleteMessageUpdate, DeleteStoryUpdate, Dialog, FactCheck, FileDownloadLocation, FileDownloadParameters, ForumTopic, FullChat, GameHighScore, HistoryReadUpdate, InlineCallbackQuery, InlineQuery, InputChatEventFilters, InputDialogFolder, InputFileLike, InputInlineResult, InputMediaLike, InputMediaSticker, InputMessageId, InputPeerLike, InputPrivacyRule, InputReaction, InputStickerSet, InputStickerSetItem, InputText, MaybeDynamic, Message, MessageEffect, MessageMedia, MessageReactions, ParametersSkip2, ParsedUpdate, PeerReaction, PeersIndex, PeerStories, Photo, Poll, PollUpdate, PollVoteUpdate, PreCheckoutQuery, RawDocument, ReplyMarkup, SentCode, Sticker, StickerSet, StickerSourceType, StickerType, StoriesStealthMode, Story, StoryInteractions, StoryUpdate, StoryViewer, StoryViewersList, TakeoutSession, TextWithEntities, TypingStatus, UploadedFile, UploadFileLike, User, UserStatusUpdate, UserTypingUpdate } from './types/index.js';
|
|
38
39
|
import { ParsedUpdateHandlerParams } from './updates/parsed.js';
|
|
39
40
|
import { StringSessionData } from './utils/string-session.js';
|
|
40
41
|
type TelegramClientOptions = ((PartialOnly<Omit<BaseTelegramClientOptions, 'storage'>, 'transport' | 'crypto'> & {
|
|
@@ -698,6 +699,17 @@ export interface TelegramClient extends ITelegramClient {
|
|
|
698
699
|
* @default `10000` (10 sec)
|
|
699
700
|
*/
|
|
700
701
|
timeout?: number;
|
|
702
|
+
/**
|
|
703
|
+
* Whether to "fire and forget" this request,
|
|
704
|
+
* in which case the promise will resolve as soon
|
|
705
|
+
* as the request is sent with an empty response.
|
|
706
|
+
*
|
|
707
|
+
* Useful for interacting with bots that don't correctly
|
|
708
|
+
* answer to callback queries and the request always times out.
|
|
709
|
+
*
|
|
710
|
+
* **Note**: any errors will be silently ignored.
|
|
711
|
+
*/
|
|
712
|
+
fireAndForget?: boolean;
|
|
701
713
|
/**
|
|
702
714
|
* Whether this is a "play game" button
|
|
703
715
|
*/
|
|
@@ -1723,6 +1735,17 @@ export interface TelegramClient extends ITelegramClient {
|
|
|
1723
1735
|
/** Modification to be applied to this folder */
|
|
1724
1736
|
modification: Partial<Omit<tl.RawDialogFilter, 'id' | '_'>>;
|
|
1725
1737
|
}): Promise<tl.RawDialogFilter>;
|
|
1738
|
+
/**
|
|
1739
|
+
* Try to find a dialog (dialogs) with a given peer (peers) by their ID, username or phone number.
|
|
1740
|
+
*
|
|
1741
|
+
* This might be an expensive call, as it will potentially iterate over all
|
|
1742
|
+
* dialogs to find the one with the given peer
|
|
1743
|
+
*
|
|
1744
|
+
* **Available**: 👤 users only
|
|
1745
|
+
*
|
|
1746
|
+
* @throws {MtPeerNotFoundError} If a dialog with any of the given peers was not found
|
|
1747
|
+
*/
|
|
1748
|
+
findDialogs(peers: MaybeArray<string | number>): Promise<Dialog[]>;
|
|
1726
1749
|
/**
|
|
1727
1750
|
* Find a folder by its parameter.
|
|
1728
1751
|
*
|
|
@@ -1742,6 +1765,14 @@ export interface TelegramClient extends ITelegramClient {
|
|
|
1742
1765
|
/** Folder ID */
|
|
1743
1766
|
id?: number;
|
|
1744
1767
|
}): Promise<tl.RawDialogFilter | null>;
|
|
1768
|
+
/**
|
|
1769
|
+
* Get a preview of a chatlist by its invite link
|
|
1770
|
+
*
|
|
1771
|
+
* **Available**: ✅ both users and bots
|
|
1772
|
+
*
|
|
1773
|
+
* @param link Invite link
|
|
1774
|
+
*/
|
|
1775
|
+
getChatlistPreview(link: string): Promise<ChatlistPreview>;
|
|
1745
1776
|
/**
|
|
1746
1777
|
* Get list of folders.
|
|
1747
1778
|
* **Available**: 👤 users only
|
|
@@ -1858,6 +1889,19 @@ export interface TelegramClient extends ITelegramClient {
|
|
|
1858
1889
|
*/
|
|
1859
1890
|
filter?: Partial<Omit<tl.RawDialogFilter, '_' | 'id' | 'title'>>;
|
|
1860
1891
|
}): AsyncIterableIterator<Dialog>;
|
|
1892
|
+
/**
|
|
1893
|
+
* Join a chatlist by its link
|
|
1894
|
+
*
|
|
1895
|
+
* **Available**: ✅ both users and bots
|
|
1896
|
+
*
|
|
1897
|
+
* @param link Invite link to the chatlist
|
|
1898
|
+
* @param params Additional parameters
|
|
1899
|
+
* @returns Folder representing the chatlist
|
|
1900
|
+
*/
|
|
1901
|
+
joinChatlist(link: string, params?: {
|
|
1902
|
+
/** Chats to join from the chatlist (all by default) */
|
|
1903
|
+
peers?: MaybeArray<InputPeerLike>;
|
|
1904
|
+
}): Promise<tl.RawDialogFilterChatlist>;
|
|
1861
1905
|
/**
|
|
1862
1906
|
* Reorder folders
|
|
1863
1907
|
*
|
|
@@ -2678,6 +2722,12 @@ export interface TelegramClient extends ITelegramClient {
|
|
|
2678
2722
|
* @param chatId Chat's marked ID, its username, phone or `"me"` or `"self"`
|
|
2679
2723
|
*/
|
|
2680
2724
|
getAllScheduledMessages(chatId: InputPeerLike): Promise<Message[]>;
|
|
2725
|
+
/**
|
|
2726
|
+
* Get a list of available message effects
|
|
2727
|
+
* **Available**: 👤 users only
|
|
2728
|
+
*
|
|
2729
|
+
*/
|
|
2730
|
+
getAvailableMessageEffects(): Promise<MessageEffect[]>;
|
|
2681
2731
|
/**
|
|
2682
2732
|
* Get the message containing the button being clicked
|
|
2683
2733
|
* in the given callback query.
|
|
@@ -2706,6 +2756,15 @@ export interface TelegramClient extends ITelegramClient {
|
|
|
2706
2756
|
* @param message ID of the channel post
|
|
2707
2757
|
*/
|
|
2708
2758
|
getDiscussionMessage(params: InputMessageId): Promise<Message | null>;
|
|
2759
|
+
/**
|
|
2760
|
+
* Get fact check information for one or more messages in a chat
|
|
2761
|
+
*
|
|
2762
|
+
* **Available**: 👤 users only
|
|
2763
|
+
*
|
|
2764
|
+
* @param chatId Chat where the messages are located
|
|
2765
|
+
* @param msgIds One or more message IDs
|
|
2766
|
+
*/
|
|
2767
|
+
getFactCheck(chatId: InputPeerLike, msgIds: MaybeArray<number>): Promise<(FactCheck | null)[]>;
|
|
2709
2768
|
/**
|
|
2710
2769
|
* Get chat history.
|
|
2711
2770
|
*
|
|
@@ -3077,6 +3136,45 @@ export interface TelegramClient extends ITelegramClient {
|
|
|
3077
3136
|
*/
|
|
3078
3137
|
onlyChannels?: boolean;
|
|
3079
3138
|
}): Promise<ArrayPaginated<Message, SearchGlobalOffset>>;
|
|
3139
|
+
/**
|
|
3140
|
+
* Perform a global hashtag search, across the entire Telegram
|
|
3141
|
+
*
|
|
3142
|
+
* **Available**: 👤 users only
|
|
3143
|
+
*
|
|
3144
|
+
* @param hashtag Hashtag to search for
|
|
3145
|
+
* @param params Additional parameters
|
|
3146
|
+
*/
|
|
3147
|
+
searchHashtag(hashtag: string, params?: {
|
|
3148
|
+
/** Offset for the search */
|
|
3149
|
+
offset?: SearchHashtagOffset;
|
|
3150
|
+
/** Limit the number of results */
|
|
3151
|
+
limit?: number;
|
|
3152
|
+
}): Promise<ArrayPaginated<Message, SearchHashtagOffset>>;
|
|
3153
|
+
/**
|
|
3154
|
+
* Perform a global hashtag search, across the entire Telegram
|
|
3155
|
+
*
|
|
3156
|
+
* Iterable version of {@link searchHashtag}
|
|
3157
|
+
*
|
|
3158
|
+
* **Available**: ✅ both users and bots
|
|
3159
|
+
*
|
|
3160
|
+
* @param hashtag Hashtag to search for
|
|
3161
|
+
* @param params Additional parameters
|
|
3162
|
+
*/
|
|
3163
|
+
iterSearchHashtag(hashtag: string, params?: Parameters<typeof searchHashtag>[2] & {
|
|
3164
|
+
/**
|
|
3165
|
+
* Limits the number of messages to be retrieved.
|
|
3166
|
+
*
|
|
3167
|
+
* @default `Infinity`, i.e. all messages are returned
|
|
3168
|
+
*/
|
|
3169
|
+
limit?: number;
|
|
3170
|
+
/**
|
|
3171
|
+
* Chunk size, which will be passed as `limit` parameter
|
|
3172
|
+
* for `messages.search`. Usually you shouldn't care about this.
|
|
3173
|
+
*
|
|
3174
|
+
* @default 100
|
|
3175
|
+
*/
|
|
3176
|
+
chunkSize?: number;
|
|
3177
|
+
}): AsyncIterableIterator<Message>;
|
|
3080
3178
|
/**
|
|
3081
3179
|
* Search for messages inside a specific chat
|
|
3082
3180
|
*
|
|
@@ -4471,6 +4569,8 @@ export interface TelegramClient extends ITelegramClient {
|
|
|
4471
4569
|
* while also normalizing and removing
|
|
4472
4570
|
* peers that can't be normalized to that type.
|
|
4473
4571
|
*
|
|
4572
|
+
* If a peer was not found, it will be skipped.
|
|
4573
|
+
*
|
|
4474
4574
|
* Uses async pool internally, with a concurrent limit of 8
|
|
4475
4575
|
*
|
|
4476
4576
|
* @param peerIds Peer Ids
|
|
@@ -4480,11 +4580,13 @@ export interface TelegramClient extends ITelegramClient {
|
|
|
4480
4580
|
/**
|
|
4481
4581
|
* Get multiple `InputPeer`s at once.
|
|
4482
4582
|
*
|
|
4583
|
+
* If a peer was not found, `null` will be returned instead
|
|
4584
|
+
*
|
|
4483
4585
|
* Uses async pool internally, with a concurrent limit of 8
|
|
4484
4586
|
*
|
|
4485
4587
|
* @param peerIds Peer Ids
|
|
4486
4588
|
*/
|
|
4487
|
-
resolvePeerMany(peerIds: InputPeerLike[]): Promise<tl.TypeInputPeer[]>;
|
|
4589
|
+
resolvePeerMany(peerIds: InputPeerLike[]): Promise<(tl.TypeInputPeer | null)[]>;
|
|
4488
4590
|
/**
|
|
4489
4591
|
* Get the `InputPeer` of a known peer id.
|
|
4490
4592
|
* Useful when an `InputPeer` is needed in Raw API.
|
package/esm/highlevel/client.js
CHANGED
|
@@ -82,10 +82,13 @@ import { importContacts } from './methods/contacts/import-contacts.js';
|
|
|
82
82
|
import { createFolder } from './methods/dialogs/create-folder.js';
|
|
83
83
|
import { deleteFolder } from './methods/dialogs/delete-folder.js';
|
|
84
84
|
import { editFolder } from './methods/dialogs/edit-folder.js';
|
|
85
|
+
import { findDialogs } from './methods/dialogs/find-dialogs.js';
|
|
85
86
|
import { findFolder } from './methods/dialogs/find-folder.js';
|
|
87
|
+
import { getChatlistPreview } from './methods/dialogs/get-chatlist-preview.js';
|
|
86
88
|
import { getFolders } from './methods/dialogs/get-folders.js';
|
|
87
89
|
import { getPeerDialogs } from './methods/dialogs/get-peer-dialogs.js';
|
|
88
90
|
import { iterDialogs } from './methods/dialogs/iter-dialogs.js';
|
|
91
|
+
import { joinChatlist } from './methods/dialogs/join-chatlist.js';
|
|
89
92
|
import { setFoldersOrder } from './methods/dialogs/set-folders-order.js';
|
|
90
93
|
import { downloadAsBuffer } from './methods/files/download-buffer.js';
|
|
91
94
|
import { downloadAsIterable } from './methods/files/download-iterable.js';
|
|
@@ -124,8 +127,10 @@ import { editInlineMessage } from './methods/messages/edit-inline-message.js';
|
|
|
124
127
|
import { editMessage } from './methods/messages/edit-message.js';
|
|
125
128
|
import { forwardMessages, forwardMessagesById } from './methods/messages/forward-messages.js';
|
|
126
129
|
import { getAllScheduledMessages } from './methods/messages/get-all-scheduled-messages.js';
|
|
130
|
+
import { getAvailableMessageEffects } from './methods/messages/get-available-effects.js';
|
|
127
131
|
import { getCallbackQueryMessage } from './methods/messages/get-callback-query-message.js';
|
|
128
132
|
import { getDiscussionMessage } from './methods/messages/get-discussion-message.js';
|
|
133
|
+
import { getFactCheck } from './methods/messages/get-fact-check.js';
|
|
129
134
|
import { getHistory } from './methods/messages/get-history.js';
|
|
130
135
|
import { getMessageByLink } from './methods/messages/get-message-by-link.js';
|
|
131
136
|
import { getMessageGroup } from './methods/messages/get-message-group.js';
|
|
@@ -143,6 +148,7 @@ import { pinMessage } from './methods/messages/pin-message.js';
|
|
|
143
148
|
import { readHistory } from './methods/messages/read-history.js';
|
|
144
149
|
import { readReactions } from './methods/messages/read-reactions.js';
|
|
145
150
|
import { searchGlobal } from './methods/messages/search-global.js';
|
|
151
|
+
import { iterSearchHashtag, searchHashtag } from './methods/messages/search-hashtag.js';
|
|
146
152
|
import { searchMessages } from './methods/messages/search-messages.js';
|
|
147
153
|
import { answerMedia, answerMediaGroup, answerText } from './methods/messages/send-answer.js';
|
|
148
154
|
import { commentMedia, commentMediaGroup, commentText } from './methods/messages/send-comment.js';
|
|
@@ -524,9 +530,15 @@ TelegramClient.prototype.deleteFolder = function (...args) {
|
|
|
524
530
|
TelegramClient.prototype.editFolder = function (...args) {
|
|
525
531
|
return editFolder(this._client, ...args);
|
|
526
532
|
};
|
|
533
|
+
TelegramClient.prototype.findDialogs = function (...args) {
|
|
534
|
+
return findDialogs(this._client, ...args);
|
|
535
|
+
};
|
|
527
536
|
TelegramClient.prototype.findFolder = function (...args) {
|
|
528
537
|
return findFolder(this._client, ...args);
|
|
529
538
|
};
|
|
539
|
+
TelegramClient.prototype.getChatlistPreview = function (...args) {
|
|
540
|
+
return getChatlistPreview(this._client, ...args);
|
|
541
|
+
};
|
|
530
542
|
TelegramClient.prototype.getFolders = function (...args) {
|
|
531
543
|
return getFolders(this._client, ...args);
|
|
532
544
|
};
|
|
@@ -536,6 +548,9 @@ TelegramClient.prototype.getPeerDialogs = function (...args) {
|
|
|
536
548
|
TelegramClient.prototype.iterDialogs = function (...args) {
|
|
537
549
|
return iterDialogs(this._client, ...args);
|
|
538
550
|
};
|
|
551
|
+
TelegramClient.prototype.joinChatlist = function (...args) {
|
|
552
|
+
return joinChatlist(this._client, ...args);
|
|
553
|
+
};
|
|
539
554
|
TelegramClient.prototype.setFoldersOrder = function (...args) {
|
|
540
555
|
return setFoldersOrder(this._client, ...args);
|
|
541
556
|
};
|
|
@@ -656,12 +671,18 @@ TelegramClient.prototype.forwardMessages = function (...args) {
|
|
|
656
671
|
TelegramClient.prototype.getAllScheduledMessages = function (...args) {
|
|
657
672
|
return getAllScheduledMessages(this._client, ...args);
|
|
658
673
|
};
|
|
674
|
+
TelegramClient.prototype.getAvailableMessageEffects = function (...args) {
|
|
675
|
+
return getAvailableMessageEffects(this._client, ...args);
|
|
676
|
+
};
|
|
659
677
|
TelegramClient.prototype.getCallbackQueryMessage = function (...args) {
|
|
660
678
|
return getCallbackQueryMessage(this._client, ...args);
|
|
661
679
|
};
|
|
662
680
|
TelegramClient.prototype.getDiscussionMessage = function (...args) {
|
|
663
681
|
return getDiscussionMessage(this._client, ...args);
|
|
664
682
|
};
|
|
683
|
+
TelegramClient.prototype.getFactCheck = function (...args) {
|
|
684
|
+
return getFactCheck(this._client, ...args);
|
|
685
|
+
};
|
|
665
686
|
TelegramClient.prototype.getHistory = function (...args) {
|
|
666
687
|
return getHistory(this._client, ...args);
|
|
667
688
|
};
|
|
@@ -716,6 +737,12 @@ TelegramClient.prototype.readReactions = function (...args) {
|
|
|
716
737
|
TelegramClient.prototype.searchGlobal = function (...args) {
|
|
717
738
|
return searchGlobal(this._client, ...args);
|
|
718
739
|
};
|
|
740
|
+
TelegramClient.prototype.searchHashtag = function (...args) {
|
|
741
|
+
return searchHashtag(this._client, ...args);
|
|
742
|
+
};
|
|
743
|
+
TelegramClient.prototype.iterSearchHashtag = function (...args) {
|
|
744
|
+
return iterSearchHashtag(this._client, ...args);
|
|
745
|
+
};
|
|
719
746
|
TelegramClient.prototype.searchMessages = function (...args) {
|
|
720
747
|
return searchMessages(this._client, ...args);
|
|
721
748
|
};
|