diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index 43b0fccd..87553c41 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -1587,6 +1587,7 @@ export interface TelegramClient extends BaseTelegramClient { params: { parseMode?: string | null progressCallback?: (uploaded: number, total: number) => void + uploadPeer?: tl.TypeInputPeer }, uploadMedia?: boolean ): Promise diff --git a/packages/client/src/methods/files/normalize-input-media.ts b/packages/client/src/methods/files/normalize-input-media.ts index 1bfeb2dd..767f4919 100644 --- a/packages/client/src/methods/files/normalize-input-media.ts +++ b/packages/client/src/methods/files/normalize-input-media.ts @@ -29,6 +29,7 @@ export async function _normalizeInputMedia( params: { parseMode?: string | null progressCallback?: (uploaded: number, total: number) => void + uploadPeer?: tl.TypeInputPeer }, uploadMedia = false ): Promise { @@ -216,6 +217,8 @@ export async function _normalizeInputMedia( mime = uploaded.mime } + const uploadPeer = params.uploadPeer ?? { _: 'inputPeerSelf' } + const uploadMediaIfNeeded = async ( inputMedia: tl.TypeInputMedia, photo: boolean @@ -224,7 +227,7 @@ export async function _normalizeInputMedia( const res = await this.call({ _: 'messages.uploadMedia', - peer: { _: 'inputPeerSelf' }, + peer: uploadPeer, media: inputMedia, }) diff --git a/packages/client/src/methods/messages/send-media-group.ts b/packages/client/src/methods/messages/send-media-group.ts index b5f9cdaf..2535524a 100644 --- a/packages/client/src/methods/messages/send-media-group.ts +++ b/packages/client/src/methods/messages/send-media-group.ts @@ -148,7 +148,11 @@ export async function sendMediaGroup( const inputMedia = await this._normalizeInputMedia(media, { progressCallback: params.progressCallback?.bind(null, i), - }) + // i have no fucking clue why we should upload it manually, + // but otherwise Telegram throws MEDIA_INVALID + // fuck my life + uploadPeer: peer + }, true) const [message, entities] = await this._parseEntities( // some types dont have `caption` field, and ts warns us,