diff --git a/packages/core/src/highlevel/client.ts b/packages/core/src/highlevel/client.ts index 48451023..eb8cfea3 100644 --- a/packages/core/src/highlevel/client.ts +++ b/packages/core/src/highlevel/client.ts @@ -130,6 +130,7 @@ import { deleteScheduledMessages } from './methods/messages/delete-scheduled-mes import { editInlineMessage } from './methods/messages/edit-inline-message.js' import { editMessage } from './methods/messages/edit-message.js' import { ForwardMessageOptions, forwardMessages, forwardMessagesById } from './methods/messages/forward-messages.js' +import { getAllScheduledMessages } from './methods/messages/get-all-scheduled-messages.js' import { getCallbackQueryMessage } from './methods/messages/get-callback-query-message.js' import { getDiscussionMessage } from './methods/messages/get-discussion-message.js' import { getHistory, GetHistoryOffset } from './methods/messages/get-history.js' @@ -3199,6 +3200,14 @@ export interface TelegramClient extends ITelegramClient { messages: Message[] }, ): Promise + /** + * Get all scheduled messages in chat + * + * **Available**: 👤 users only + * + * @param chatId Chat's marked ID, its username, phone or `"me"` or `"self"` + */ + getAllScheduledMessages(chatId: InputPeerLike): Promise /** * Get the message containing the button being clicked @@ -5802,6 +5811,9 @@ TelegramClient.prototype.forwardMessagesById = function (...args) { TelegramClient.prototype.forwardMessages = function (...args) { return forwardMessages(this._client, ...args) } +TelegramClient.prototype.getAllScheduledMessages = function (...args) { + return getAllScheduledMessages(this._client, ...args) +} TelegramClient.prototype.getCallbackQueryMessage = function (...args) { return getCallbackQueryMessage(this._client, ...args) } diff --git a/packages/core/src/highlevel/methods.ts b/packages/core/src/highlevel/methods.ts index 9b77586c..d2c6d68f 100644 --- a/packages/core/src/highlevel/methods.ts +++ b/packages/core/src/highlevel/methods.ts @@ -128,6 +128,7 @@ export { editMessage } from './methods/messages/edit-message.js' export type { ForwardMessageOptions } from './methods/messages/forward-messages.js' export { forwardMessagesById } from './methods/messages/forward-messages.js' export { forwardMessages } from './methods/messages/forward-messages.js' +export { getAllScheduledMessages } from './methods/messages/get-all-scheduled-messages.js' export { getCallbackQueryMessage } from './methods/messages/get-callback-query-message.js' export { getDiscussionMessage } from './methods/messages/get-discussion-message.js' export type { GetHistoryOffset } from './methods/messages/get-history.js' diff --git a/packages/core/src/highlevel/methods/messages/get-all-scheduled-messages.ts b/packages/core/src/highlevel/methods/messages/get-all-scheduled-messages.ts new file mode 100644 index 00000000..dd14daf5 --- /dev/null +++ b/packages/core/src/highlevel/methods/messages/get-all-scheduled-messages.ts @@ -0,0 +1,33 @@ +import Long from 'long' + +import { assertTypeIsNot } from '../../../utils/type-assertions.js' +import { ITelegramClient } from '../../client.types.js' +import { InputPeerLike, Message, PeersIndex } from '../../types/index.js' +import { resolvePeer } from '../users/resolve-peer.js' + +/** + * Get all scheduled messages in chat + * + * @param chatId Chat's marked ID, its username, phone or `"me"` or `"self"` + */ +export async function getAllScheduledMessages(client: ITelegramClient, chatId: InputPeerLike): Promise { + const peer = await resolvePeer(client, chatId) + + const res = await client.call({ + _: 'messages.getScheduledHistory', + peer, + hash: Long.ZERO, + }) + + assertTypeIsNot('getScheduledMessages', res, 'messages.messagesNotModified') + + const peers = PeersIndex.from(res) + + const ret = res.messages.map((msg) => { + assertTypeIsNot('getScheduledMessages', msg, 'messageEmpty') + + return new Message(msg, peers, true) + }) + + return ret +}