From 99bd1bc313b6a971340a4158b20a34af4628a020 Mon Sep 17 00:00:00 2001 From: Alina Sireneva Date: Tue, 6 Feb 2024 00:25:08 +0300 Subject: [PATCH] feat: resolveUser and resolveChannel methods + refactor to use them --- packages/core/src/highlevel/client.ts | 20 +++++++++++++++- .../highlevel/methods/bots/get-bot-info.ts | 5 ++-- .../methods/bots/get-bot-menu-button.ts | 5 ++-- .../methods/bots/get-game-high-scores.ts | 7 +++--- .../methods/bots/normalize-command-scope.ts | 5 ++-- .../highlevel/methods/bots/set-bot-info.ts | 5 ++-- .../methods/bots/set-bot-menu-button.ts | 5 ++-- .../highlevel/methods/bots/set-game-score.ts | 7 +++--- .../methods/chats/add-chat-members.ts | 4 ++-- .../highlevel/methods/chats/delete-channel.ts | 5 ++-- .../methods/chats/delete-user-history.ts | 5 ++-- .../methods/chats/edit-admin-rights.ts | 7 +++--- .../methods/chats/get-chat-event-log.ts | 6 ++--- .../methods/chats/get-similar-channels.ts | 5 ++-- .../methods/chats/iter-chat-event-log.ts | 6 ++--- .../src/highlevel/methods/chats/join-chat.ts | 6 ++--- .../methods/chats/set-chat-username.ts | 5 ++-- .../highlevel/methods/chats/set-slow-mode.ts | 5 ++-- .../methods/chats/toggle-join-requests.ts | 5 ++-- .../methods/chats/toggle-join-to-send.ts | 11 +++------ .../highlevel/methods/contacts/add-contact.ts | 5 ++-- .../methods/forums/create-forum-topic.ts | 5 ++-- .../forums/delete-forum-topic-history.ts | 5 ++-- .../methods/forums/edit-forum-topic.ts | 5 ++-- .../methods/forums/get-forum-topics-by-id.ts | 5 ++-- .../methods/forums/get-forum-topics.ts | 5 ++-- .../methods/forums/iter-forum-topics.ts | 5 ++-- .../forums/reorder-pinned-forum-topics.ts | 5 ++-- .../forums/toggle-forum-topic-closed.ts | 5 ++-- .../forums/toggle-forum-topic-pinned.ts | 5 ++-- .../highlevel/methods/forums/toggle-forum.ts | 5 ++-- .../forums/toggle-general-topic-hidden.ts | 5 ++-- .../methods/invite-links/get-invite-links.ts | 5 ++-- .../methods/invite-links/hide-join-request.ts | 5 ++-- .../highlevel/methods/misc/normalize-text.ts | 5 ++-- .../methods/stickers/create-sticker-set.ts | 5 ++-- .../methods/stickers/set-chat-sticker-set.ts | 5 ++-- .../methods/users/get-common-chats.ts | 5 ++-- .../methods/users/get-profile-photo.ts | 5 ++-- .../methods/users/get-profile-photos.ts | 5 ++-- .../src/highlevel/methods/users/get-users.ts | 4 ++-- .../methods/users/iter-profile-photos.ts | 5 ++-- .../highlevel/methods/users/resolve-peer.ts | 24 ++++++++++++++++++- .../types/messages/replied-message.ts | 3 +++ 44 files changed, 134 insertions(+), 131 deletions(-) diff --git a/packages/core/src/highlevel/client.ts b/packages/core/src/highlevel/client.ts index 8ff17f80..1774d822 100644 --- a/packages/core/src/highlevel/client.ts +++ b/packages/core/src/highlevel/client.ts @@ -223,7 +223,7 @@ import { getProfilePhoto } from './methods/users/get-profile-photo.js' import { getProfilePhotos } from './methods/users/get-profile-photos.js' import { getUsers } from './methods/users/get-users.js' import { iterProfilePhotos } from './methods/users/iter-profile-photos.js' -import { resolvePeer } from './methods/users/resolve-peer.js' +import { resolveChannel, resolvePeer, resolveUser } from './methods/users/resolve-peer.js' import { resolvePeerMany } from './methods/users/resolve-peer-many.js' import { setGlobalTtl } from './methods/users/set-global-ttl.js' import { setMyEmojiStatus } from './methods/users/set-my-emoji-status.js' @@ -5024,6 +5024,18 @@ export interface TelegramClient extends ITelegramClient { * @param [force=false] Whether to force re-fetch the peer from the server (only for usernames and phone numbers) */ resolvePeer(peerId: InputPeerLike, force?: boolean): Promise + /** + * Shorthand for `resolvePeer` that converts the input peer to `InputUser`. + * **Available**: ✅ both users and bots + * + */ + resolveUser(peerId: InputPeerLike, force?: boolean): Promise + /** + * Shorthand for `resolvePeer` that converts the input peer to `InputChannel`. + * **Available**: ✅ both users and bots + * + */ + resolveChannel(peerId: InputPeerLike, force?: boolean): Promise /** * Changes the current default value of the Time-To-Live setting, * applied to all new chats. @@ -5867,6 +5879,12 @@ TelegramClient.prototype.resolvePeerMany = function (...args) { TelegramClient.prototype.resolvePeer = function (...args) { return resolvePeer(this._client, ...args) } +TelegramClient.prototype.resolveUser = function (...args) { + return resolveUser(this._client, ...args) +} +TelegramClient.prototype.resolveChannel = function (...args) { + return resolveChannel(this._client, ...args) +} TelegramClient.prototype.setGlobalTtl = function (...args) { return setGlobalTtl(this._client, ...args) } diff --git a/packages/core/src/highlevel/methods/bots/get-bot-info.ts b/packages/core/src/highlevel/methods/bots/get-bot-info.ts index 8b16ac10..b5ba3777 100644 --- a/packages/core/src/highlevel/methods/bots/get-bot-info.ts +++ b/packages/core/src/highlevel/methods/bots/get-bot-info.ts @@ -2,8 +2,7 @@ import { tl } from '@mtcute/tl' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveUser } from '../users/resolve-peer.js' /** * Gets information about a bot the current uzer owns (or the current bot) @@ -28,7 +27,7 @@ export async function getBotInfo( return client.call({ _: 'bots.getBotInfo', - bot: bot ? toInputUser(await resolvePeer(client, bot), bot) : undefined, + bot: bot ? await resolveUser(client, bot) : undefined, langCode: langCode, }) } diff --git a/packages/core/src/highlevel/methods/bots/get-bot-menu-button.ts b/packages/core/src/highlevel/methods/bots/get-bot-menu-button.ts index 4164dd22..9b9fb255 100644 --- a/packages/core/src/highlevel/methods/bots/get-bot-menu-button.ts +++ b/packages/core/src/highlevel/methods/bots/get-bot-menu-button.ts @@ -2,8 +2,7 @@ import { tl } from '@mtcute/tl' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveUser } from '../users/resolve-peer.js' /** * Fetches the menu button set for the given user. @@ -11,6 +10,6 @@ import { resolvePeer } from '../users/resolve-peer.js' export async function getBotMenuButton(client: ITelegramClient, user: InputPeerLike): Promise { return await client.call({ _: 'bots.getBotMenuButton', - userId: toInputUser(await resolvePeer(client, user), user), + userId: await resolveUser(client, user), }) } diff --git a/packages/core/src/highlevel/methods/bots/get-game-high-scores.ts b/packages/core/src/highlevel/methods/bots/get-game-high-scores.ts index c3fa6bc2..9efde994 100644 --- a/packages/core/src/highlevel/methods/bots/get-game-high-scores.ts +++ b/packages/core/src/highlevel/methods/bots/get-game-high-scores.ts @@ -3,8 +3,7 @@ import { tl } from '@mtcute/tl' import { ITelegramClient } from '../../client.types.js' import { GameHighScore, InputMessageId, InputPeerLike, normalizeInputMessageId, PeersIndex } from '../../types/index.js' import { normalizeInlineId } from '../../utils/inline-utils.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolvePeer, resolveUser } from '../users/resolve-peer.js' /** * Get high scores of a game @@ -24,7 +23,7 @@ export async function getGameHighScores( let user: tl.TypeInputUser if (userId) { - user = toInputUser(await resolvePeer(client, userId), userId) + user = await resolveUser(client, userId) } else { user = { _: 'inputUserEmpty' } } @@ -57,7 +56,7 @@ export async function getInlineGameHighScores( let user: tl.TypeInputUser if (userId) { - user = toInputUser(await resolvePeer(client, userId), userId) + user = await resolveUser(client, userId) } else { user = { _: 'inputUserEmpty' } } diff --git a/packages/core/src/highlevel/methods/bots/normalize-command-scope.ts b/packages/core/src/highlevel/methods/bots/normalize-command-scope.ts index 65eb11fe..67a931d4 100644 --- a/packages/core/src/highlevel/methods/bots/normalize-command-scope.ts +++ b/packages/core/src/highlevel/methods/bots/normalize-command-scope.ts @@ -3,8 +3,7 @@ import { tl } from '@mtcute/tl' import { assertNever } from '../../../types/utils.js' import { ITelegramClient } from '../../client.types.js' import { BotCommands } from '../../types/index.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolvePeer, resolveUser } from '../users/resolve-peer.js' /** @internal */ export async function _normalizeCommandScope( @@ -24,7 +23,7 @@ export async function _normalizeCommandScope( } } case 'member': { - const user = toInputUser(await resolvePeer(client, scope.user), scope.user) + const user = await resolveUser(client, scope.user) const chat = await resolvePeer(client, scope.chat) return { diff --git a/packages/core/src/highlevel/methods/bots/set-bot-info.ts b/packages/core/src/highlevel/methods/bots/set-bot-info.ts index ddbd2303..d27462c0 100644 --- a/packages/core/src/highlevel/methods/bots/set-bot-info.ts +++ b/packages/core/src/highlevel/methods/bots/set-bot-info.ts @@ -1,8 +1,7 @@ import { assertTrue } from '../../../utils/type-assertions.js' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveUser } from '../users/resolve-peer.js' /** * Sets information about a bot the current uzer owns (or the current bot) @@ -36,7 +35,7 @@ export async function setBotInfo( const r = await client.call({ _: 'bots.setBotInfo', - bot: bot ? toInputUser(await resolvePeer(client, bot), bot) : undefined, + bot: bot ? await resolveUser(client, bot) : undefined, langCode: langCode, name, about: bio, diff --git a/packages/core/src/highlevel/methods/bots/set-bot-menu-button.ts b/packages/core/src/highlevel/methods/bots/set-bot-menu-button.ts index 8378e66e..e1beca7a 100644 --- a/packages/core/src/highlevel/methods/bots/set-bot-menu-button.ts +++ b/packages/core/src/highlevel/methods/bots/set-bot-menu-button.ts @@ -3,8 +3,7 @@ import { tl } from '@mtcute/tl' import { assertTrue } from '../../../utils/type-assertions.js' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveUser } from '../users/resolve-peer.js' /** * Sets a menu button for the given user. @@ -16,7 +15,7 @@ export async function setBotMenuButton( ): Promise { const r = await client.call({ _: 'bots.setBotMenuButton', - userId: toInputUser(await resolvePeer(client, user), user), + userId: await resolveUser(client, user), button, }) diff --git a/packages/core/src/highlevel/methods/bots/set-game-score.ts b/packages/core/src/highlevel/methods/bots/set-game-score.ts index 2403b624..21178ebe 100644 --- a/packages/core/src/highlevel/methods/bots/set-game-score.ts +++ b/packages/core/src/highlevel/methods/bots/set-game-score.ts @@ -4,9 +4,8 @@ import { assertTrue } from '../../../utils/type-assertions.js' import { ITelegramClient } from '../../client.types.js' import { InputMessageId, InputPeerLike, Message, normalizeInputMessageId } from '../../types/index.js' import { normalizeInlineId } from '../../utils/inline-utils.js' -import { toInputUser } from '../../utils/peer-utils.js' import { _findMessageInUpdate } from '../messages/find-in-update.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolvePeer, resolveUser } from '../users/resolve-peer.js' /** * Set a score of a user in a game @@ -45,7 +44,7 @@ export async function setGameScore( const { userId, score, noEdit, force, shouldDispatch } = params const { chatId, message } = normalizeInputMessageId(params) - const user = toInputUser(await resolvePeer(client, userId), userId) + const user = await resolveUser(client, userId) const chat = await resolvePeer(client, chatId) const res = await client.call({ @@ -91,7 +90,7 @@ export async function setInlineGameScore( ): Promise { const { messageId, userId, score, noEdit, force } = params - const user = toInputUser(await resolvePeer(client, userId), userId) + const user = await resolveUser(client, userId) const id = normalizeInlineId(messageId) diff --git a/packages/core/src/highlevel/methods/chats/add-chat-members.ts b/packages/core/src/highlevel/methods/chats/add-chat-members.ts index 9afec6a3..f2ed40c0 100644 --- a/packages/core/src/highlevel/methods/chats/add-chat-members.ts +++ b/packages/core/src/highlevel/methods/chats/add-chat-members.ts @@ -2,7 +2,7 @@ import { MaybeArray } from '../../../types/utils.js' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike, MtInvalidPeerTypeError } from '../../types/index.js' import { isInputPeerChannel, isInputPeerChat, toInputChannel, toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolvePeer, resolveUser } from '../users/resolve-peer.js' import { resolvePeerMany } from '../users/resolve-peer-many.js' /** @@ -33,7 +33,7 @@ export async function addChatMembers( if (isInputPeerChat(chat)) { for (const user of users) { - const p = toInputUser(await resolvePeer(client, user)) + const p = await resolveUser(client, user) const updates = await client.call({ _: 'messages.addChatUser', diff --git a/packages/core/src/highlevel/methods/chats/delete-channel.ts b/packages/core/src/highlevel/methods/chats/delete-channel.ts index 31b5fd0e..8496e31b 100644 --- a/packages/core/src/highlevel/methods/chats/delete-channel.ts +++ b/packages/core/src/highlevel/methods/chats/delete-channel.ts @@ -1,7 +1,6 @@ import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' // @alias=deleteSupergroup /** @@ -12,7 +11,7 @@ import { resolvePeer } from '../users/resolve-peer.js' export async function deleteChannel(client: ITelegramClient, chatId: InputPeerLike): Promise { const res = await client.call({ _: 'channels.deleteChannel', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), }) client.handleClientUpdate(res) } diff --git a/packages/core/src/highlevel/methods/chats/delete-user-history.ts b/packages/core/src/highlevel/methods/chats/delete-user-history.ts index a9ae8944..d0fbcaaf 100644 --- a/packages/core/src/highlevel/methods/chats/delete-user-history.ts +++ b/packages/core/src/highlevel/methods/chats/delete-user-history.ts @@ -3,8 +3,7 @@ import { tl } from '@mtcute/tl' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' import { createDummyUpdate } from '../../updates/utils.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel, resolvePeer } from '../users/resolve-peer.js' /** * Delete all messages of a user (or channel) in a supergroup @@ -20,7 +19,7 @@ export async function deleteUserHistory( ): Promise { const { chatId, participantId } = params - const channel = toInputChannel(await resolvePeer(client, chatId), chatId) + const channel = await resolveChannel(client, chatId) const peer = await resolvePeer(client, participantId) diff --git a/packages/core/src/highlevel/methods/chats/edit-admin-rights.ts b/packages/core/src/highlevel/methods/chats/edit-admin-rights.ts index b5dac765..1df177b2 100644 --- a/packages/core/src/highlevel/methods/chats/edit-admin-rights.ts +++ b/packages/core/src/highlevel/methods/chats/edit-admin-rights.ts @@ -2,8 +2,7 @@ import { tl } from '@mtcute/tl' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputChannel, toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel, resolveUser } from '../users/resolve-peer.js' /** * Edit supergroup/channel admin rights of a user. @@ -23,8 +22,8 @@ export async function editAdminRights( ): Promise { const { chatId, userId, rights, rank = '' } = params - const chat = toInputChannel(await resolvePeer(client, chatId), chatId) - const user = toInputUser(await resolvePeer(client, userId), userId) + const chat = await resolveChannel(client, chatId) + const user = await resolveUser(client, userId) const res = await client.call({ _: 'channels.editAdmin', diff --git a/packages/core/src/highlevel/methods/chats/get-chat-event-log.ts b/packages/core/src/highlevel/methods/chats/get-chat-event-log.ts index 27120083..6dfbc4ae 100644 --- a/packages/core/src/highlevel/methods/chats/get-chat-event-log.ts +++ b/packages/core/src/highlevel/methods/chats/get-chat-event-log.ts @@ -5,8 +5,8 @@ import { tl } from '@mtcute/tl' import { ITelegramClient } from '../../client.types.js' import { ChatEvent, InputPeerLike, PeersIndex } from '../../types/index.js' import { InputChatEventFilters, normalizeChatEventFilters } from '../../types/peers/chat-event/filters.js' -import { toInputChannel, toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { toInputUser } from '../../utils/peer-utils.js' +import { resolveChannel } from '../users/resolve-peer.js' import { resolvePeerMany } from '../users/resolve-peer-many.js' /** @@ -77,7 +77,7 @@ export async function getChatEventLog( ): Promise { const { maxId = Long.ZERO, minId = Long.ZERO, query = '', limit = 100, users, filters } = params ?? {} - const channel = toInputChannel(await resolvePeer(client, chatId), chatId) + const channel = await resolveChannel(client, chatId) const admins: tl.TypeInputUser[] | undefined = users ? await resolvePeerMany(client, users, toInputUser) : undefined diff --git a/packages/core/src/highlevel/methods/chats/get-similar-channels.ts b/packages/core/src/highlevel/methods/chats/get-similar-channels.ts index 0ddd5588..d5080de1 100644 --- a/packages/core/src/highlevel/methods/chats/get-similar-channels.ts +++ b/packages/core/src/highlevel/methods/chats/get-similar-channels.ts @@ -1,8 +1,7 @@ import { ITelegramClient } from '../../client.types.js' import { ArrayWithTotal, Chat, InputPeerLike } from '../../types/index.js' import { makeArrayWithTotal } from '../../utils/misc-utils.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' // @available=user /** @@ -20,7 +19,7 @@ export async function getSimilarChannels( ): Promise> { const res = await client.call({ _: 'channels.getChannelRecommendations', - channel: toInputChannel(await resolvePeer(client, channel), channel), + channel: await resolveChannel(client, channel), }) const parsed = res.chats.map((chat) => new Chat(chat)) diff --git a/packages/core/src/highlevel/methods/chats/iter-chat-event-log.ts b/packages/core/src/highlevel/methods/chats/iter-chat-event-log.ts index 2220687b..ed324bf2 100644 --- a/packages/core/src/highlevel/methods/chats/iter-chat-event-log.ts +++ b/packages/core/src/highlevel/methods/chats/iter-chat-event-log.ts @@ -5,8 +5,8 @@ import { tl } from '@mtcute/tl' import { ITelegramClient } from '../../client.types.js' import { ChatEvent, InputPeerLike } from '../../types/index.js' import { normalizeChatEventFilters } from '../../types/peers/chat-event/filters.js' -import { toInputChannel, toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { toInputUser } from '../../utils/peer-utils.js' +import { resolveChannel } from '../users/resolve-peer.js' import { resolvePeerMany } from '../users/resolve-peer-many.js' import { getChatEventLog } from './get-chat-event-log.js' @@ -40,7 +40,7 @@ export async function* iterChatEventLog( ): AsyncIterableIterator { if (!params) params = {} - const channel = toInputChannel(await resolvePeer(client, chatId), chatId) + const channel = await resolveChannel(client, chatId) const { minId = Long.ZERO, query = '', limit = Infinity, chunkSize = 100, users, filters } = params diff --git a/packages/core/src/highlevel/methods/chats/join-chat.ts b/packages/core/src/highlevel/methods/chats/join-chat.ts index d4124b17..c0eb6d14 100644 --- a/packages/core/src/highlevel/methods/chats/join-chat.ts +++ b/packages/core/src/highlevel/methods/chats/join-chat.ts @@ -1,8 +1,8 @@ import { ITelegramClient } from '../../client.types.js' import { Chat, InputPeerLike } from '../../types/index.js' import { assertIsUpdatesGroup } from '../../updates/utils.js' -import { INVITE_LINK_REGEX, toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { INVITE_LINK_REGEX } from '../../utils/peer-utils.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Join a channel or supergroup @@ -34,7 +34,7 @@ export async function joinChat(client: ITelegramClient, chatId: InputPeerLike): const res = await client.call({ _: 'channels.joinChannel', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), }) assertIsUpdatesGroup('channels.joinChannel', res) diff --git a/packages/core/src/highlevel/methods/chats/set-chat-username.ts b/packages/core/src/highlevel/methods/chats/set-chat-username.ts index a1e218ba..99313f42 100644 --- a/packages/core/src/highlevel/methods/chats/set-chat-username.ts +++ b/packages/core/src/highlevel/methods/chats/set-chat-username.ts @@ -1,8 +1,7 @@ import { assertTrue } from '../../../utils/type-assertions.js' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Change supergroup/channel username @@ -19,7 +18,7 @@ export async function setChatUsername( ): Promise { const r = await client.call({ _: 'channels.updateUsername', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), username: username || '', }) diff --git a/packages/core/src/highlevel/methods/chats/set-slow-mode.ts b/packages/core/src/highlevel/methods/chats/set-slow-mode.ts index 6b05a0d1..b3052861 100644 --- a/packages/core/src/highlevel/methods/chats/set-slow-mode.ts +++ b/packages/core/src/highlevel/methods/chats/set-slow-mode.ts @@ -1,7 +1,6 @@ import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Set supergroup's slow mode interval. @@ -15,7 +14,7 @@ import { resolvePeer } from '../users/resolve-peer.js' export async function setSlowMode(client: ITelegramClient, chatId: InputPeerLike, seconds = 0): Promise { const res = await client.call({ _: 'channels.toggleSlowMode', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), seconds, }) client.handleClientUpdate(res) diff --git a/packages/core/src/highlevel/methods/chats/toggle-join-requests.ts b/packages/core/src/highlevel/methods/chats/toggle-join-requests.ts index ed6bb5c1..45d28d0f 100644 --- a/packages/core/src/highlevel/methods/chats/toggle-join-requests.ts +++ b/packages/core/src/highlevel/methods/chats/toggle-join-requests.ts @@ -1,7 +1,6 @@ import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Set whether a channel/supergroup has join requests enabled. @@ -19,7 +18,7 @@ export async function toggleJoinRequests( ): Promise { const res = await client.call({ _: 'channels.toggleJoinRequest', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), enabled, }) client.handleClientUpdate(res) diff --git a/packages/core/src/highlevel/methods/chats/toggle-join-to-send.ts b/packages/core/src/highlevel/methods/chats/toggle-join-to-send.ts index 2374f018..d7ca9237 100644 --- a/packages/core/src/highlevel/methods/chats/toggle-join-to-send.ts +++ b/packages/core/src/highlevel/methods/chats/toggle-join-to-send.ts @@ -1,7 +1,6 @@ import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Set whether a channel/supergroup has join-to-send setting enabled. @@ -12,14 +11,10 @@ import { resolvePeer } from '../users/resolve-peer.js' * @param chatId Chat ID or username * @param enabled Whether join-to-send setting should be enabled */ -export async function toggleJoinToSend( - client: ITelegramClient, - chatId: InputPeerLike, - enabled = false, -): Promise { +export async function toggleJoinToSend(client: ITelegramClient, chatId: InputPeerLike, enabled = false): Promise { const res = await client.call({ _: 'channels.toggleJoinToSend', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), enabled, }) client.handleClientUpdate(res) diff --git a/packages/core/src/highlevel/methods/contacts/add-contact.ts b/packages/core/src/highlevel/methods/contacts/add-contact.ts index aee93f8a..eed9f33b 100644 --- a/packages/core/src/highlevel/methods/contacts/add-contact.ts +++ b/packages/core/src/highlevel/methods/contacts/add-contact.ts @@ -1,8 +1,7 @@ import { ITelegramClient } from '../../client.types.js' import { InputPeerLike, User } from '../../types/index.js' import { assertIsUpdatesGroup } from '../../updates/utils.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveUser } from '../users/resolve-peer.js' /** * Add an existing Telegram user as a contact @@ -38,7 +37,7 @@ export async function addContact( }, ): Promise { const { userId, firstName, lastName = '', phone = '', sharePhone = false } = params - const peer = toInputUser(await resolvePeer(client, userId), userId) + const peer = await resolveUser(client, userId) const res = await client.call({ _: 'contacts.addContact', diff --git a/packages/core/src/highlevel/methods/forums/create-forum-topic.ts b/packages/core/src/highlevel/methods/forums/create-forum-topic.ts index 16ab1c2d..d4efcd6f 100644 --- a/packages/core/src/highlevel/methods/forums/create-forum-topic.ts +++ b/packages/core/src/highlevel/methods/forums/create-forum-topic.ts @@ -3,9 +3,8 @@ import { tl } from '@mtcute/tl' import { randomLong } from '../../../utils/long-utils.js' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike, Message } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' import { _findMessageInUpdate } from '../messages/find-in-update.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel, resolvePeer } from '../users/resolve-peer.js' /** * Create a topic in a forum @@ -51,7 +50,7 @@ export async function createForumTopic( const res = await client.call({ _: 'channels.createForumTopic', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), title, iconColor: typeof icon === 'number' ? icon : undefined, iconEmojiId: typeof icon !== 'number' ? icon : undefined, diff --git a/packages/core/src/highlevel/methods/forums/delete-forum-topic-history.ts b/packages/core/src/highlevel/methods/forums/delete-forum-topic-history.ts index e6634103..5704a5e3 100644 --- a/packages/core/src/highlevel/methods/forums/delete-forum-topic-history.ts +++ b/packages/core/src/highlevel/methods/forums/delete-forum-topic-history.ts @@ -2,8 +2,7 @@ import { assertTypeIsNot } from '../../../utils/type-assertions.js' import { ITelegramClient } from '../../client.types.js' import type { ForumTopic, InputPeerLike } from '../../types/index.js' import { createDummyUpdate } from '../../updates/utils.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Delete a forum topic and all its history @@ -16,7 +15,7 @@ export async function deleteForumTopicHistory( chat: InputPeerLike, topicId: number | ForumTopic, ): Promise { - const channel = toInputChannel(await resolvePeer(client, chat), chat) + const channel = await resolveChannel(client, chat) assertTypeIsNot('deleteForumTopicHistory', channel, 'inputChannelEmpty') const res = await client.call({ diff --git a/packages/core/src/highlevel/methods/forums/edit-forum-topic.ts b/packages/core/src/highlevel/methods/forums/edit-forum-topic.ts index 3504caf3..298ddf58 100644 --- a/packages/core/src/highlevel/methods/forums/edit-forum-topic.ts +++ b/packages/core/src/highlevel/methods/forums/edit-forum-topic.ts @@ -4,9 +4,8 @@ import { tl } from '@mtcute/tl' import { ITelegramClient } from '../../client.types.js' import type { ForumTopic, InputPeerLike, Message } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' import { _findMessageInUpdate } from '../messages/find-in-update.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Modify a topic in a forum @@ -50,7 +49,7 @@ export async function editForumTopic( const res = await client.call({ _: 'channels.editForumTopic', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), topicId: typeof topicId === 'number' ? topicId : topicId.id, title, iconEmojiId: icon ? icon ?? Long.ZERO : undefined, diff --git a/packages/core/src/highlevel/methods/forums/get-forum-topics-by-id.ts b/packages/core/src/highlevel/methods/forums/get-forum-topics-by-id.ts index 32cb8ee9..6aeb85c4 100644 --- a/packages/core/src/highlevel/methods/forums/get-forum-topics-by-id.ts +++ b/packages/core/src/highlevel/methods/forums/get-forum-topics-by-id.ts @@ -1,8 +1,7 @@ import { MaybeArray } from '../../../types/utils.js' import { ITelegramClient } from '../../client.types.js' import { ForumTopic, InputPeerLike } from '../../types/index.js' -import { toInputChannel } from '../../utils/index.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Get forum topics by their IDs @@ -18,7 +17,7 @@ export async function getForumTopicsById( const res = await client.call({ _: 'channels.getForumTopicsByID', - channel: toInputChannel(await resolvePeer(client, chatId)), + channel: await resolveChannel(client, chatId), topics: ids, }) diff --git a/packages/core/src/highlevel/methods/forums/get-forum-topics.ts b/packages/core/src/highlevel/methods/forums/get-forum-topics.ts index e0018bea..b31c48f1 100644 --- a/packages/core/src/highlevel/methods/forums/get-forum-topics.ts +++ b/packages/core/src/highlevel/methods/forums/get-forum-topics.ts @@ -1,8 +1,7 @@ import { ITelegramClient } from '../../client.types.js' import { ArrayPaginated, ForumTopic, InputPeerLike } from '../../types/index.js' import { makeArrayPaginated } from '../../utils/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' // @exported export interface GetForumTopicsOffset { @@ -54,7 +53,7 @@ export async function getForumTopics( const res = await client.call({ _: 'channels.getForumTopics', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), q: query, offsetDate, offsetId, diff --git a/packages/core/src/highlevel/methods/forums/iter-forum-topics.ts b/packages/core/src/highlevel/methods/forums/iter-forum-topics.ts index 28d83634..79906afe 100644 --- a/packages/core/src/highlevel/methods/forums/iter-forum-topics.ts +++ b/packages/core/src/highlevel/methods/forums/iter-forum-topics.ts @@ -1,7 +1,6 @@ import { ITelegramClient } from '../../client.types.js' import { ForumTopic, InputPeerLike } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' import { getForumTopics } from './get-forum-topics.js' /** @@ -30,7 +29,7 @@ export async function* iterForumTopics( const { query, limit = Infinity, chunkSize = 100 } = params - const peer = toInputChannel(await resolvePeer(client, chatId)) + const peer = await resolveChannel(client, chatId) let { offset } = params let current = 0 diff --git a/packages/core/src/highlevel/methods/forums/reorder-pinned-forum-topics.ts b/packages/core/src/highlevel/methods/forums/reorder-pinned-forum-topics.ts index 4ee86846..5c840979 100644 --- a/packages/core/src/highlevel/methods/forums/reorder-pinned-forum-topics.ts +++ b/packages/core/src/highlevel/methods/forums/reorder-pinned-forum-topics.ts @@ -1,7 +1,6 @@ import { ITelegramClient } from '../../client.types.js' import type { ForumTopic, InputPeerLike } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Reorder pinned forum topics @@ -28,7 +27,7 @@ export async function reorderPinnedForumTopics( const { chatId, order, force } = params await client.call({ _: 'channels.reorderPinnedForumTopics', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), order: order.map((it) => (typeof it === 'number' ? it : it.id)), force, }) diff --git a/packages/core/src/highlevel/methods/forums/toggle-forum-topic-closed.ts b/packages/core/src/highlevel/methods/forums/toggle-forum-topic-closed.ts index 34f35935..3e49d3c0 100644 --- a/packages/core/src/highlevel/methods/forums/toggle-forum-topic-closed.ts +++ b/packages/core/src/highlevel/methods/forums/toggle-forum-topic-closed.ts @@ -1,8 +1,7 @@ import { ITelegramClient } from '../../client.types.js' import type { ForumTopic, InputPeerLike, Message } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' import { _findMessageInUpdate } from '../messages/find-in-update.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Toggle open/close status of a topic in a forum @@ -34,7 +33,7 @@ export async function toggleForumTopicClosed( const res = await client.call({ _: 'channels.editForumTopic', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), topicId: typeof topicId === 'number' ? topicId : topicId.id, closed, }) diff --git a/packages/core/src/highlevel/methods/forums/toggle-forum-topic-pinned.ts b/packages/core/src/highlevel/methods/forums/toggle-forum-topic-pinned.ts index 42ef5ead..2f9dd0ea 100644 --- a/packages/core/src/highlevel/methods/forums/toggle-forum-topic-pinned.ts +++ b/packages/core/src/highlevel/methods/forums/toggle-forum-topic-pinned.ts @@ -1,7 +1,6 @@ import { ITelegramClient } from '../../client.types.js' import { ForumTopic, InputPeerLike } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Toggle whether a topic in a forum is pinned @@ -23,7 +22,7 @@ export async function toggleForumTopicPinned( await client.call({ _: 'channels.updatePinnedForumTopic', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), topicId: typeof topicId === 'number' ? topicId : topicId.id, pinned, }) diff --git a/packages/core/src/highlevel/methods/forums/toggle-forum.ts b/packages/core/src/highlevel/methods/forums/toggle-forum.ts index 7d53a09e..845b32b7 100644 --- a/packages/core/src/highlevel/methods/forums/toggle-forum.ts +++ b/packages/core/src/highlevel/methods/forums/toggle-forum.ts @@ -1,7 +1,6 @@ import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Set whether a supergroup is a forum. @@ -14,7 +13,7 @@ import { resolvePeer } from '../users/resolve-peer.js' export async function toggleForum(client: ITelegramClient, chatId: InputPeerLike, enabled = false): Promise { const res = await client.call({ _: 'channels.toggleForum', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), enabled, }) client.handleClientUpdate(res) diff --git a/packages/core/src/highlevel/methods/forums/toggle-general-topic-hidden.ts b/packages/core/src/highlevel/methods/forums/toggle-general-topic-hidden.ts index d9f631eb..45670897 100644 --- a/packages/core/src/highlevel/methods/forums/toggle-general-topic-hidden.ts +++ b/packages/core/src/highlevel/methods/forums/toggle-general-topic-hidden.ts @@ -1,8 +1,7 @@ import { ITelegramClient } from '../../client.types.js' import { InputPeerLike, Message } from '../../types/index.js' -import { toInputChannel } from '../../utils/peer-utils.js' import { _findMessageInUpdate } from '../messages/find-in-update.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Toggle whether "General" topic in a forum is hidden or not @@ -29,7 +28,7 @@ export async function toggleGeneralTopicHidden( const { chatId, hidden, shouldDispatch } = params const res = await client.call({ _: 'channels.editForumTopic', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), topicId: 1, hidden, }) diff --git a/packages/core/src/highlevel/methods/invite-links/get-invite-links.ts b/packages/core/src/highlevel/methods/invite-links/get-invite-links.ts index 97d327bd..a2f135e2 100644 --- a/packages/core/src/highlevel/methods/invite-links/get-invite-links.ts +++ b/packages/core/src/highlevel/methods/invite-links/get-invite-links.ts @@ -1,8 +1,7 @@ import { ITelegramClient } from '../../client.types.js' import { ArrayPaginated, ChatInviteLink, InputPeerLike, PeersIndex } from '../../types/index.js' import { makeArrayPaginated } from '../../utils/index.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolvePeer, resolveUser } from '../users/resolve-peer.js' // @exported export interface GetInviteLinksOffset { @@ -58,7 +57,7 @@ export async function getInviteLinks( _: 'messages.getExportedChatInvites', peer: await resolvePeer(client, chatId), revoked, - adminId: admin ? toInputUser(await resolvePeer(client, admin), admin) : { _: 'inputUserSelf' }, + adminId: admin ? await resolveUser(client, admin) : { _: 'inputUserSelf' }, limit, offsetDate: offset?.date, offsetLink: offset?.link, diff --git a/packages/core/src/highlevel/methods/invite-links/hide-join-request.ts b/packages/core/src/highlevel/methods/invite-links/hide-join-request.ts index 66257157..2d1870b1 100644 --- a/packages/core/src/highlevel/methods/invite-links/hide-join-request.ts +++ b/packages/core/src/highlevel/methods/invite-links/hide-join-request.ts @@ -1,7 +1,6 @@ import { ITelegramClient } from '../../client.types.js' import { InputPeerLike } from '../../types/index.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolvePeer, resolveUser } from '../users/resolve-peer.js' /** * Approve or decline join request to a chat. @@ -19,7 +18,7 @@ export async function hideJoinRequest( ): Promise { const { chatId, user, action } = params - const userId = toInputUser(await resolvePeer(client, user), user) + const userId = await resolveUser(client, user) await client.call({ _: 'messages.hideChatJoinRequest', diff --git a/packages/core/src/highlevel/methods/misc/normalize-text.ts b/packages/core/src/highlevel/methods/misc/normalize-text.ts index 42ab4388..4ef135aa 100644 --- a/packages/core/src/highlevel/methods/misc/normalize-text.ts +++ b/packages/core/src/highlevel/methods/misc/normalize-text.ts @@ -2,8 +2,7 @@ import { tl } from '@mtcute/tl' import { ITelegramClient } from '../../client.types.js' import { InputText } from '../../types/misc/entities.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveUser } from '../users/resolve-peer.js' const empty: [string, undefined] = ['', undefined] @@ -27,7 +26,7 @@ export async function _normalizeInputText( for (const ent of entities) { if (ent._ === 'messageEntityMentionName') { try { - const inputPeer = toInputUser(await resolvePeer(client, ent.userId), ent.userId) + const inputPeer = await resolveUser(client, ent.userId) const ent_ = ent as unknown as tl.RawInputMessageEntityMentionName ent_._ = 'inputMessageEntityMentionName' diff --git a/packages/core/src/highlevel/methods/stickers/create-sticker-set.ts b/packages/core/src/highlevel/methods/stickers/create-sticker-set.ts index e343bd97..0b00e251 100644 --- a/packages/core/src/highlevel/methods/stickers/create-sticker-set.ts +++ b/packages/core/src/highlevel/methods/stickers/create-sticker-set.ts @@ -10,9 +10,8 @@ import { StickerSourceType, StickerType, } from '../../types/index.js' -import { toInputUser } from '../../utils/peer-utils.js' import { _normalizeFileToDocument } from '../files/normalize-file-to-document.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveUser } from '../users/resolve-peer.js' /** * Create a new sticker set. @@ -98,7 +97,7 @@ export async function createStickerSet( progressCallback?: (idx: number, uploaded: number, total: number) => void }, ): Promise { - const owner = toInputUser(await resolvePeer(client, params.owner), params.owner) + const owner = await resolveUser(client, params.owner) const inputStickers: tl.TypeInputStickerSetItem[] = [] diff --git a/packages/core/src/highlevel/methods/stickers/set-chat-sticker-set.ts b/packages/core/src/highlevel/methods/stickers/set-chat-sticker-set.ts index d230c51f..0199322b 100644 --- a/packages/core/src/highlevel/methods/stickers/set-chat-sticker-set.ts +++ b/packages/core/src/highlevel/methods/stickers/set-chat-sticker-set.ts @@ -1,8 +1,7 @@ import { assertTrue } from '../../../utils/type-assertions.js' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike, InputStickerSet, normalizeInputStickerSet } from '../../types/index.js' -import { toInputChannel } from '../../utils/index.js' -import { resolvePeer } from '../users/resolve-peer.js' +import { resolveChannel } from '../users/resolve-peer.js' /** * Set group sticker set for a supergroup @@ -19,7 +18,7 @@ export async function setChatStickerSet( ): Promise { const r = await client.call({ _: 'channels.setStickers', - channel: toInputChannel(await resolvePeer(client, chatId), chatId), + channel: await resolveChannel(client, chatId), stickerset: normalizeInputStickerSet(setId), }) diff --git a/packages/core/src/highlevel/methods/users/get-common-chats.ts b/packages/core/src/highlevel/methods/users/get-common-chats.ts index 44050388..f4ac1fb1 100644 --- a/packages/core/src/highlevel/methods/users/get-common-chats.ts +++ b/packages/core/src/highlevel/methods/users/get-common-chats.ts @@ -1,7 +1,6 @@ import { ITelegramClient } from '../../client.types.js' import { Chat, InputPeerLike } from '../../types/index.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from './resolve-peer.js' +import { resolveUser } from './resolve-peer.js' /** * Get a list of common chats you have with a given user @@ -13,7 +12,7 @@ export async function getCommonChats(client: ITelegramClient, userId: InputPeerL return client .call({ _: 'messages.getCommonChats', - userId: toInputUser(await resolvePeer(client, userId), userId), + userId: await resolveUser(client, userId), maxId: 0, limit: 100, }) diff --git a/packages/core/src/highlevel/methods/users/get-profile-photo.ts b/packages/core/src/highlevel/methods/users/get-profile-photo.ts index 9cb7cf96..5be3e22d 100644 --- a/packages/core/src/highlevel/methods/users/get-profile-photo.ts +++ b/packages/core/src/highlevel/methods/users/get-profile-photo.ts @@ -3,8 +3,7 @@ import { tl } from '@mtcute/tl' import { assertTypeIs } from '../../../utils/type-assertions.js' import { ITelegramClient } from '../../client.types.js' import { InputPeerLike, Photo } from '../../types/index.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from './resolve-peer.js' +import { resolveUser } from './resolve-peer.js' /** * Get a single profile picture of a user by its ID @@ -20,7 +19,7 @@ export async function getProfilePhoto( ): Promise { const res = await client.call({ _: 'photos.getUserPhotos', - userId: toInputUser(await resolvePeer(client, userId), userId), + userId: await resolveUser(client, userId), offset: -1, limit: 1, maxId: photoId, diff --git a/packages/core/src/highlevel/methods/users/get-profile-photos.ts b/packages/core/src/highlevel/methods/users/get-profile-photos.ts index 9b8df9ae..63806884 100644 --- a/packages/core/src/highlevel/methods/users/get-profile-photos.ts +++ b/packages/core/src/highlevel/methods/users/get-profile-photos.ts @@ -6,8 +6,7 @@ import { assertTypeIs } from '../../../utils/type-assertions.js' import { ITelegramClient } from '../../client.types.js' import { ArrayPaginated, InputPeerLike, Photo } from '../../types/index.js' import { makeArrayPaginated } from '../../utils/index.js' -import { toInputUser } from '../../utils/peer-utils.js' -import { resolvePeer } from './resolve-peer.js' +import { resolveUser } from './resolve-peer.js' /** * Get a list of profile pictures of a user @@ -40,7 +39,7 @@ export async function getProfilePhotos( const res = await client.call({ _: 'photos.getUserPhotos', - userId: toInputUser(await resolvePeer(client, userId), userId), + userId: await resolveUser(client, userId), offset, limit, maxId: Long.ZERO, diff --git a/packages/core/src/highlevel/methods/users/get-users.ts b/packages/core/src/highlevel/methods/users/get-users.ts index 4306824a..2b1e6a63 100644 --- a/packages/core/src/highlevel/methods/users/get-users.ts +++ b/packages/core/src/highlevel/methods/users/get-users.ts @@ -3,7 +3,7 @@ import { ITelegramClient } from '../../client.types.js' import { InputPeerLike, User } from '../../types/index.js' import { toInputUser } from '../../utils/peer-utils.js' import { _getUsersBatched } from '../chats/batched-queries.js' -import { resolvePeer } from './resolve-peer.js' +import { resolveUser } from './resolve-peer.js' import { resolvePeerMany } from './resolve-peer-many.js' /** @@ -17,7 +17,7 @@ import { resolvePeerMany } from './resolve-peer-many.js' export async function getUsers(client: ITelegramClient, ids: MaybeArray): Promise<(User | null)[]> { if (!Array.isArray(ids)) { // avoid unnecessary overhead of Promise.all and resolvePeerMany - const res = await _getUsersBatched(client, toInputUser(await resolvePeer(client, ids))) + const res = await _getUsersBatched(client, await resolveUser(client, ids)) return [res ? new User(res) : null] } diff --git a/packages/core/src/highlevel/methods/users/iter-profile-photos.ts b/packages/core/src/highlevel/methods/users/iter-profile-photos.ts index d076efe5..50d5a62f 100644 --- a/packages/core/src/highlevel/methods/users/iter-profile-photos.ts +++ b/packages/core/src/highlevel/methods/users/iter-profile-photos.ts @@ -1,8 +1,7 @@ import { ITelegramClient } from '../../client.types.js' import { InputPeerLike, Photo } from '../../types/index.js' -import { toInputUser } from '../../utils/peer-utils.js' import { getProfilePhotos } from './get-profile-photos.js' -import { resolvePeer } from './resolve-peer.js' +import { resolveUser } from './resolve-peer.js' /** * Iterate over profile photos @@ -31,7 +30,7 @@ export async function* iterProfilePhotos( ): AsyncIterableIterator { if (!params) params = {} - const peer = toInputUser(await resolvePeer(client, userId), userId) + const peer = await resolveUser(client, userId) const { limit = Infinity, chunkSize = 100 } = params diff --git a/packages/core/src/highlevel/methods/users/resolve-peer.ts b/packages/core/src/highlevel/methods/users/resolve-peer.ts index f68cb103..142092af 100644 --- a/packages/core/src/highlevel/methods/users/resolve-peer.ts +++ b/packages/core/src/highlevel/methods/users/resolve-peer.ts @@ -7,7 +7,7 @@ import { getMarkedPeerId, parseMarkedPeerId, toggleChannelIdMark } from '../../. import { ITelegramClient } from '../../client.types.js' import { MtPeerNotFoundError } from '../../types/errors.js' import { InputPeerLike } from '../../types/peers/index.js' -import { toInputPeer } from '../../utils/peer-utils.js' +import { toInputChannel, toInputPeer, toInputUser } from '../../utils/peer-utils.js' // @available=both /** @@ -159,3 +159,25 @@ export async function resolvePeer( } } } + +/** + * Shorthand for `resolvePeer` that converts the input peer to `InputUser`. + */ +export async function resolveUser( + client: ITelegramClient, + peerId: InputPeerLike, + force = false, +): Promise { + return toInputUser(await resolvePeer(client, peerId, force), peerId) +} + +/** + * Shorthand for `resolvePeer` that converts the input peer to `InputChannel`. + */ +export async function resolveChannel( + client: ITelegramClient, + peerId: InputPeerLike, + force = false, +): Promise { + return toInputChannel(await resolvePeer(client, peerId, force), peerId) +} diff --git a/packages/core/src/highlevel/types/messages/replied-message.ts b/packages/core/src/highlevel/types/messages/replied-message.ts index dfa45d85..a011086a 100644 --- a/packages/core/src/highlevel/types/messages/replied-message.ts +++ b/packages/core/src/highlevel/types/messages/replied-message.ts @@ -184,6 +184,9 @@ export class RepliedMessageInfo { /** * Offset of the start of the {@link quoteText} in the replied-to message. * + * Note that this offset should only be used as a hint, as the actual + * quote offset may be different due to message being edited after the quote + * * `null` if not available, in which case it should be assumed that the quote * starts at `.indexOf(quoteText)` of the replied-to message text. */