diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index 2c6394f5..c4546f97 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -95,6 +95,7 @@ import { sendMedia } from './methods/messages/send-media' import { sendText } from './methods/messages/send-text' import { sendTyping } from './methods/messages/send-typing' import { sendVote } from './methods/messages/send-vote' +import { unpinAllMessages } from './methods/messages/unpin-all-messages' import { unpinMessage } from './methods/messages/unpin-message' import { initTakeoutSession } from './methods/misc/init-takeout-session' import { @@ -2313,6 +2314,12 @@ export interface TelegramClient extends BaseTelegramClient { message: number, options: null | MaybeArray ): Promise + /** + * Unpin all pinned messages in a chat. + * + * @param chatId Chat or user ID + */ + unpinAllMessages(chatId: InputPeerLike): Promise /** * Unpin a message in a group, supergroup, channel or PM. * @@ -2937,6 +2944,7 @@ export class TelegramClient extends BaseTelegramClient { sendText = sendText sendTyping = sendTyping sendVote = sendVote + unpinAllMessages = unpinAllMessages unpinMessage = unpinMessage initTakeoutSession = initTakeoutSession registerParseMode = registerParseMode diff --git a/packages/client/src/methods/messages/delete-messages.ts b/packages/client/src/methods/messages/delete-messages.ts index f90b579e..b9926f89 100644 --- a/packages/client/src/methods/messages/delete-messages.ts +++ b/packages/client/src/methods/messages/delete-messages.ts @@ -31,7 +31,7 @@ export async function deleteMessages( channel, id: ids }) - upd = createDummyUpdate(res.pts, res.ptsCount, (channel as tl.RawInputChannel).channelId) + upd = createDummyUpdate(res.pts, res.ptsCount, peer.channelId) } else { const res = await this.call({ _: 'messages.deleteMessages', diff --git a/packages/client/src/methods/messages/unpin-all-messages.ts b/packages/client/src/methods/messages/unpin-all-messages.ts new file mode 100644 index 00000000..16066620 --- /dev/null +++ b/packages/client/src/methods/messages/unpin-all-messages.ts @@ -0,0 +1,28 @@ +import { TelegramClient } from '../../client' +import { InputPeerLike } from '../../types' +import { isInputPeerChannel, normalizeToInputPeer } from '../../utils/peer-utils' +import { createDummyUpdate } from '../../utils/updates-utils' + +/** + * Unpin all pinned messages in a chat. + * + * @param chatId Chat or user ID + * @internal + */ +export async function unpinAllMessages( + this: TelegramClient, + chatId: InputPeerLike +): Promise { + const peer = normalizeToInputPeer(await this.resolvePeer(chatId)) + + const res = await this.call({ + _: 'messages.unpinAllMessages', + peer + }) + + if (isInputPeerChannel(peer)) { + this._handleUpdate(createDummyUpdate(res.pts, res.ptsCount, peer.channelId)) + } else { + createDummyUpdate(res.pts, res.ptsCount) + } +}