@mtcute/core 0.30.3 → 0.32.0
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/client.cjs +85 -0
- package/client.js +85 -0
- package/highlevel/client.d.cts +411 -116
- package/highlevel/client.d.ts +411 -116
- package/highlevel/methods/auth/sign-in-qr.cjs +2 -0
- package/highlevel/methods/auth/sign-in-qr.js +2 -0
- package/highlevel/methods/auth/sign-in-qr.test.d.cts +1 -0
- package/highlevel/methods/auth/sign-in-qr.test.d.ts +1 -0
- package/highlevel/methods/chats/build-peers-index.cjs +45 -0
- package/highlevel/methods/chats/build-peers-index.d.cts +13 -0
- package/highlevel/methods/chats/build-peers-index.d.ts +13 -0
- package/highlevel/methods/chats/build-peers-index.js +40 -0
- package/highlevel/methods/chats/join-chat.cjs +1 -1
- package/highlevel/methods/chats/join-chat.d.cts +2 -1
- package/highlevel/methods/chats/join-chat.d.ts +2 -1
- package/highlevel/methods/chats/join-chat.js +1 -1
- package/highlevel/methods/chats/transfer-chat-ownership.cjs +6 -17
- package/highlevel/methods/chats/transfer-chat-ownership.js +6 -17
- package/highlevel/methods/communities/ban-community-participant.cjs +30 -0
- package/highlevel/methods/communities/ban-community-participant.d.cts +20 -0
- package/highlevel/methods/communities/ban-community-participant.d.ts +20 -0
- package/highlevel/methods/communities/ban-community-participant.js +25 -0
- package/highlevel/methods/communities/create-community.cjs +29 -0
- package/highlevel/methods/communities/create-community.d.cts +22 -0
- package/highlevel/methods/communities/create-community.d.ts +22 -0
- package/highlevel/methods/communities/create-community.js +24 -0
- package/highlevel/methods/communities/get-community-link-requests.cjs +27 -0
- package/highlevel/methods/communities/get-community-link-requests.d.cts +17 -0
- package/highlevel/methods/communities/get-community-link-requests.d.ts +17 -0
- package/highlevel/methods/communities/get-community-link-requests.js +22 -0
- package/highlevel/methods/communities/get-community-participant-chats.cjs +24 -0
- package/highlevel/methods/communities/get-community-participant-chats.d.cts +17 -0
- package/highlevel/methods/communities/get-community-participant-chats.d.ts +17 -0
- package/highlevel/methods/communities/get-community-participant-chats.js +19 -0
- package/highlevel/methods/communities/get-joined-communities.cjs +21 -0
- package/highlevel/methods/communities/get-joined-communities.d.cts +6 -0
- package/highlevel/methods/communities/get-joined-communities.d.ts +6 -0
- package/highlevel/methods/communities/get-joined-communities.js +16 -0
- package/highlevel/methods/communities/hide-community-link-request.cjs +30 -0
- package/highlevel/methods/communities/hide-community-link-request.d.cts +22 -0
- package/highlevel/methods/communities/hide-community-link-request.d.ts +22 -0
- package/highlevel/methods/communities/hide-community-link-request.js +25 -0
- package/highlevel/methods/communities/link-community-peer.cjs +32 -0
- package/highlevel/methods/communities/link-community-peer.d.cts +22 -0
- package/highlevel/methods/communities/link-community-peer.d.ts +22 -0
- package/highlevel/methods/communities/link-community-peer.js +27 -0
- package/highlevel/methods/communities/toggle-community-collapsed.cjs +18 -0
- package/highlevel/methods/communities/toggle-community-collapsed.d.cts +16 -0
- package/highlevel/methods/communities/toggle-community-collapsed.d.ts +16 -0
- package/highlevel/methods/communities/toggle-community-collapsed.js +13 -0
- package/highlevel/methods/ephemeral/delete-all-welcome-messages.cjs +17 -0
- package/highlevel/methods/ephemeral/delete-all-welcome-messages.d.cts +8 -0
- package/highlevel/methods/ephemeral/delete-all-welcome-messages.d.ts +8 -0
- package/highlevel/methods/ephemeral/delete-all-welcome-messages.js +12 -0
- package/highlevel/methods/ephemeral/delete-ephemeral-message.cjs +20 -0
- package/highlevel/methods/ephemeral/delete-ephemeral-message.d.cts +13 -0
- package/highlevel/methods/ephemeral/delete-ephemeral-message.d.ts +13 -0
- package/highlevel/methods/ephemeral/delete-ephemeral-message.js +15 -0
- package/highlevel/methods/ephemeral/delete-welcome-message.cjs +18 -0
- package/highlevel/methods/ephemeral/delete-welcome-message.d.cts +9 -0
- package/highlevel/methods/ephemeral/delete-welcome-message.d.ts +9 -0
- package/highlevel/methods/ephemeral/delete-welcome-message.js +13 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.cjs +41 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.d.cts +39 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.d.ts +39 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.js +36 -0
- package/highlevel/methods/ephemeral/find-in-update.cjs +27 -0
- package/highlevel/methods/ephemeral/find-in-update.d.cts +8 -0
- package/highlevel/methods/ephemeral/find-in-update.d.ts +8 -0
- package/highlevel/methods/ephemeral/find-in-update.js +22 -0
- package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.cjs +31 -0
- package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.d.cts +29 -0
- package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.d.ts +29 -0
- package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.js +26 -0
- package/highlevel/methods/ephemeral/get-welcome-messages.cjs +29 -0
- package/highlevel/methods/ephemeral/get-welcome-messages.d.cts +8 -0
- package/highlevel/methods/ephemeral/get-welcome-messages.d.ts +8 -0
- package/highlevel/methods/ephemeral/get-welcome-messages.js +24 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.cjs +48 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.d.cts +47 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.d.ts +47 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.js +43 -0
- package/highlevel/methods/files/download-iterable.cjs +7 -2
- package/highlevel/methods/files/download-iterable.js +7 -2
- package/highlevel/methods/files/download-iterable.test.d.cts +1 -0
- package/highlevel/methods/files/download-iterable.test.d.ts +1 -0
- package/highlevel/methods/files/download-stream.cjs +5 -6
- package/highlevel/methods/files/download-stream.js +5 -6
- package/highlevel/methods/files/normalize-input-media.cjs +25 -4
- package/highlevel/methods/files/normalize-input-media.js +25 -4
- package/highlevel/methods/forums/create-forum-topic.d.cts +7 -0
- package/highlevel/methods/forums/create-forum-topic.d.ts +7 -0
- package/highlevel/methods/forums/delete-forum-topic-history.d.cts +1 -1
- package/highlevel/methods/forums/delete-forum-topic-history.d.ts +1 -1
- package/highlevel/methods/forums/edit-forum-topic.cjs +2 -2
- package/highlevel/methods/forums/edit-forum-topic.d.cts +2 -2
- package/highlevel/methods/forums/edit-forum-topic.d.ts +2 -2
- package/highlevel/methods/forums/edit-forum-topic.js +2 -2
- package/highlevel/methods/forums/get-forum-topics-by-id.cjs +5 -1
- package/highlevel/methods/forums/get-forum-topics-by-id.d.cts +9 -1
- package/highlevel/methods/forums/get-forum-topics-by-id.d.ts +9 -1
- package/highlevel/methods/forums/get-forum-topics-by-id.js +5 -1
- package/highlevel/methods/forums/get-forum-topics-by-id.test.d.cts +1 -0
- package/highlevel/methods/forums/get-forum-topics-by-id.test.d.ts +1 -0
- package/highlevel/methods/forums/get-forum-topics.cjs +1 -1
- package/highlevel/methods/forums/get-forum-topics.js +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-closed.cjs +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-closed.d.cts +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-closed.d.ts +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-closed.js +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-pinned.d.cts +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-pinned.d.ts +1 -1
- package/highlevel/methods/forums/toggle-general-topic-hidden.cjs +3 -3
- package/highlevel/methods/forums/toggle-general-topic-hidden.js +4 -4
- package/highlevel/methods/gifts/buy-resale-gift.cjs +5 -2
- package/highlevel/methods/gifts/buy-resale-gift.d.cts +11 -1
- package/highlevel/methods/gifts/buy-resale-gift.d.ts +11 -1
- package/highlevel/methods/gifts/buy-resale-gift.js +5 -2
- package/highlevel/methods/messages/forward-messages.cjs +1 -0
- package/highlevel/methods/messages/forward-messages.d.cts +2 -0
- package/highlevel/methods/messages/forward-messages.d.ts +2 -0
- package/highlevel/methods/messages/forward-messages.js +1 -0
- package/highlevel/methods/messages/normalize-rich-message.cjs +3 -0
- package/highlevel/methods/messages/normalize-rich-message.js +3 -0
- package/highlevel/methods/messages/send-common.d.cts +7 -1
- package/highlevel/methods/messages/send-common.d.ts +7 -1
- package/highlevel/methods/messages/send-text.cjs +70 -35
- package/highlevel/methods/messages/send-text.js +70 -35
- package/highlevel/methods/messages/send-typing.d.cts +3 -3
- package/highlevel/methods/messages/send-typing.d.ts +3 -3
- package/highlevel/methods/messages/set-typing.cjs +1 -1
- package/highlevel/methods/messages/set-typing.d.cts +2 -2
- package/highlevel/methods/messages/set-typing.d.ts +2 -2
- package/highlevel/methods/messages/set-typing.js +1 -1
- package/highlevel/methods/users/resolve-peer.cjs +11 -1
- package/highlevel/methods/users/resolve-peer.js +11 -1
- package/highlevel/methods.d.cts +19 -0
- package/highlevel/methods.d.ts +19 -0
- package/highlevel/storage/service/peers.cjs +25 -0
- package/highlevel/storage/service/peers.js +25 -0
- package/highlevel/storage/service/peers.test.d.cts +1 -0
- package/highlevel/storage/service/peers.test.d.ts +1 -0
- package/highlevel/types/bots/keyboards/builder.cjs +5 -5
- package/highlevel/types/bots/keyboards/builder.d.cts +8 -9
- package/highlevel/types/bots/keyboards/builder.d.ts +8 -9
- package/highlevel/types/bots/keyboards/builder.js +5 -5
- package/highlevel/types/bots/keyboards/factories.cjs +51 -103
- package/highlevel/types/bots/keyboards/factories.d.cts +58 -89
- package/highlevel/types/bots/keyboards/factories.d.ts +58 -89
- package/highlevel/types/bots/keyboards/factories.js +51 -103
- package/highlevel/types/bots/keyboards/index.d.cts +3 -3
- package/highlevel/types/bots/keyboards/index.d.ts +3 -3
- package/highlevel/types/bots/keyboards/normalize.cjs +131 -0
- package/highlevel/types/bots/keyboards/normalize.d.cts +10 -0
- package/highlevel/types/bots/keyboards/normalize.d.ts +10 -0
- package/highlevel/types/bots/keyboards/normalize.js +126 -0
- package/highlevel/types/bots/keyboards/types.d.cts +160 -4
- package/highlevel/types/bots/keyboards/types.d.ts +160 -4
- package/highlevel/types/conversation.cjs +8 -0
- package/highlevel/types/conversation.d.cts +1 -0
- package/highlevel/types/conversation.d.ts +1 -0
- package/highlevel/types/conversation.js +10 -2
- package/highlevel/types/conversation.test.d.cts +1 -0
- package/highlevel/types/conversation.test.d.ts +1 -0
- package/highlevel/types/messages/dialog.cjs +8 -1
- package/highlevel/types/messages/dialog.d.cts +3 -0
- package/highlevel/types/messages/dialog.d.ts +3 -0
- package/highlevel/types/messages/dialog.js +8 -1
- package/highlevel/types/messages/dialog.test.d.cts +1 -0
- package/highlevel/types/messages/dialog.test.d.ts +1 -0
- package/highlevel/types/messages/ephemeral-message.cjs +135 -0
- package/highlevel/types/messages/ephemeral-message.d.cts +75 -0
- package/highlevel/types/messages/ephemeral-message.d.ts +75 -0
- package/highlevel/types/messages/ephemeral-message.js +130 -0
- package/highlevel/types/messages/index.d.cts +1 -0
- package/highlevel/types/messages/index.d.ts +1 -0
- package/highlevel/types/messages/message-action.cjs +14 -1
- package/highlevel/types/messages/message-action.d.cts +18 -1
- package/highlevel/types/messages/message-action.d.ts +18 -1
- package/highlevel/types/messages/message-action.js +14 -1
- package/highlevel/types/messages/message.cjs +7 -2
- package/highlevel/types/messages/message.d.cts +2 -2
- package/highlevel/types/messages/message.d.ts +2 -2
- package/highlevel/types/messages/message.js +8 -3
- package/highlevel/types/messages/replied-message.cjs +5 -1
- package/highlevel/types/messages/replied-message.d.cts +5 -1
- package/highlevel/types/messages/replied-message.d.ts +5 -1
- package/highlevel/types/messages/replied-message.js +5 -1
- package/highlevel/types/messages/rich/inner.cjs +37 -0
- package/highlevel/types/messages/rich/inner.d.cts +19 -0
- package/highlevel/types/messages/rich/inner.d.ts +19 -0
- package/highlevel/types/messages/rich/inner.js +37 -0
- package/highlevel/types/peers/chat.cjs +23 -3
- package/highlevel/types/peers/chat.d.cts +8 -3
- package/highlevel/types/peers/chat.d.ts +8 -3
- package/highlevel/types/peers/chat.js +24 -4
- package/highlevel/types/peers/community-peer.cjs +60 -0
- package/highlevel/types/peers/community-peer.d.cts +37 -0
- package/highlevel/types/peers/community-peer.d.ts +37 -0
- package/highlevel/types/peers/community-peer.js +55 -0
- package/highlevel/types/peers/full-chat.cjs +24 -5
- package/highlevel/types/peers/full-chat.d.cts +7 -0
- package/highlevel/types/peers/full-chat.d.ts +7 -0
- package/highlevel/types/peers/full-chat.js +24 -5
- package/highlevel/types/peers/index.d.cts +1 -0
- package/highlevel/types/peers/index.d.ts +1 -0
- package/highlevel/types/peers/peer.cjs +2 -0
- package/highlevel/types/peers/peer.js +2 -0
- package/highlevel/types/peers/typing-status.d.cts +4 -1
- package/highlevel/types/peers/typing-status.d.ts +4 -1
- package/highlevel/types/peers/user.cjs +6 -0
- package/highlevel/types/peers/user.d.cts +2 -0
- package/highlevel/types/peers/user.d.ts +2 -0
- package/highlevel/types/peers/user.js +6 -0
- package/highlevel/types/updates/delete-ephemeral-messages-update.cjs +27 -0
- package/highlevel/types/updates/delete-ephemeral-messages-update.d.cts +15 -0
- package/highlevel/types/updates/delete-ephemeral-messages-update.d.ts +15 -0
- package/highlevel/types/updates/delete-ephemeral-messages-update.js +22 -0
- package/highlevel/types/updates/ephemeral-callback-query.cjs +69 -0
- package/highlevel/types/updates/ephemeral-callback-query.d.cts +44 -0
- package/highlevel/types/updates/ephemeral-callback-query.d.ts +44 -0
- package/highlevel/types/updates/ephemeral-callback-query.js +64 -0
- package/highlevel/types/updates/index.d.cts +16 -2
- package/highlevel/types/updates/index.d.ts +16 -2
- package/highlevel/types/updates/parse-update.cjs +12 -1
- package/highlevel/types/updates/parse-update.js +12 -1
- package/highlevel/types/updates/user-typing-update.cjs +18 -0
- package/highlevel/types/updates/user-typing-update.d.cts +9 -0
- package/highlevel/types/updates/user-typing-update.d.ts +9 -0
- package/highlevel/types/updates/user-typing-update.js +18 -0
- package/highlevel/updates/manager.cjs +71 -41
- package/highlevel/updates/manager.d.cts +1 -0
- package/highlevel/updates/manager.d.ts +1 -0
- package/highlevel/updates/manager.js +71 -41
- package/highlevel/updates/manager.test.d.cts +1 -0
- package/highlevel/updates/manager.test.d.ts +1 -0
- package/highlevel/utils/stream-utils.cjs +8 -4
- package/highlevel/utils/stream-utils.js +8 -4
- package/highlevel/utils/stream-utils.test.d.cts +1 -0
- package/highlevel/utils/stream-utils.test.d.ts +1 -0
- package/highlevel/utils/walk-page-blocks.cjs +9 -0
- package/highlevel/utils/walk-page-blocks.js +9 -0
- package/index.cjs +10 -0
- package/index.js +11 -1
- package/methods.cjs +33 -0
- package/methods.js +33 -0
- package/network/client.cjs +4 -3
- package/network/client.d.cts +1 -0
- package/network/client.d.ts +1 -0
- package/network/client.js +4 -3
- package/network/middlewares/flood-waiter.cjs +2 -2
- package/network/middlewares/flood-waiter.js +2 -2
- package/network/middlewares/internal-errors.cjs +1 -1
- package/network/middlewares/internal-errors.js +1 -1
- package/network/middlewares/media-throttle.cjs +1 -1
- package/network/middlewares/media-throttle.js +1 -1
- package/network/mtproto-session.cjs +9 -2
- package/network/mtproto-session.d.cts +3 -1
- package/network/mtproto-session.d.ts +3 -1
- package/network/mtproto-session.js +9 -2
- package/network/mtproxy/index.cjs +4 -3
- package/network/mtproxy/index.d.cts +2 -2
- package/network/mtproxy/index.d.ts +2 -2
- package/network/mtproxy/index.js +4 -3
- package/network/network-manager.cjs +44 -16
- package/network/network-manager.d.cts +10 -3
- package/network/network-manager.d.ts +10 -3
- package/network/network-manager.js +45 -17
- package/network/network-manager.test.d.cts +1 -0
- package/network/network-manager.test.d.ts +1 -0
- package/network/persistent-connection.cjs +10 -2
- package/network/persistent-connection.js +10 -2
- package/network/session-connection.cjs +15 -6
- package/network/session-connection.js +15 -6
- package/network/session-connection.test.d.cts +1 -0
- package/network/session-connection.test.d.ts +1 -0
- package/network/transports/abstract.cjs +16 -0
- package/network/transports/abstract.d.cts +8 -2
- package/network/transports/abstract.d.ts +8 -2
- package/network/transports/abstract.js +17 -1
- package/network/transports/obfuscated.cjs +3 -1
- package/network/transports/obfuscated.js +3 -1
- package/package.json +6 -6
- package/tl/api-schema.json +1 -1
- package/tl/binary/reader.cjs +221 -103
- package/tl/binary/reader.js +221 -103
- package/tl/binary/writer.cjs +693 -277
- package/tl/binary/writer.js +693 -277
- package/tl/compat/reader.cjs +93 -0
- package/tl/compat/reader.js +93 -0
- package/tl/index.d.cts +12529 -4762
- package/tl/index.d.ts +12529 -4762
- package/tl/inner-tl.cjs +90 -24
- package/tl/inner-tl.js +90 -24
- package/tl/raw-errors.json +1 -1
- package/tl/rpc-error.test.d.cts +1 -0
- package/tl/rpc-error.test.d.ts +1 -0
- package/utils/abort-signal.cjs +1 -12
- package/utils/abort-signal.js +1 -12
- package/utils/abort-signal.test.d.cts +1 -0
- package/utils/abort-signal.test.d.ts +1 -0
- package/utils/binary/compat.cjs +189 -29
- package/utils/binary/compat.js +189 -29
- package/utils/early-timer.cjs +3 -11
- package/utils/early-timer.js +3 -11
- package/utils/early-timer.test.d.cts +1 -0
- package/utils/early-timer.test.d.ts +1 -0
- package/utils/function-utils.cjs +9 -4
- package/utils/function-utils.js +9 -4
- package/utils/links/bots.cjs +10 -2
- package/utils/links/bots.js +10 -2
- package/utils/peer-utils.cjs +8 -0
- package/utils/peer-utils.js +8 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { MtArgumentError } from "../../../types/errors.js";
|
|
2
|
+
import { _normalizeInputMedia } from "../files/normalize-input-media.js";
|
|
3
|
+
import { _normalizeInputRichMessage } from "../messages/normalize-rich-message.js";
|
|
4
|
+
import { _normalizeInputText } from "../misc/normalize-text.js";
|
|
5
|
+
import { resolvePeer, resolveUser } from "../users/resolve-peer.js";
|
|
6
|
+
import { _findEphemeralMessageInUpdate } from "./find-in-update.js";
|
|
7
|
+
import { _convertToTl } from "../../types/bots/keyboards/factories.js";
|
|
8
|
+
async function editEphemeralMessage(client, params) {
|
|
9
|
+
const { chatId, receiverId, messageId, text, media, richMessage, replyMarkup, shouldDispatch, uploadCache } = params;
|
|
10
|
+
let message;
|
|
11
|
+
let entities;
|
|
12
|
+
if (text !== void 0) {
|
|
13
|
+
[message, entities] = await _normalizeInputText(client, text);
|
|
14
|
+
}
|
|
15
|
+
const peer = chatId !== null ? await resolvePeer(client, chatId) : void 0;
|
|
16
|
+
if (richMessage && !peer) {
|
|
17
|
+
throw new MtArgumentError("richMessage requires chatId to be passed");
|
|
18
|
+
}
|
|
19
|
+
const res = await client.call({
|
|
20
|
+
_: "ephemeral.editMessage",
|
|
21
|
+
peer,
|
|
22
|
+
receiverId: await resolveUser(client, receiverId),
|
|
23
|
+
id: messageId,
|
|
24
|
+
message,
|
|
25
|
+
entities,
|
|
26
|
+
media: media ? await _normalizeInputMedia(client, media, { uploadPeer: peer }) : void 0,
|
|
27
|
+
richMessage: richMessage ? await _normalizeInputRichMessage(client, peer, richMessage, { uploadCache }) : void 0,
|
|
28
|
+
replyMarkup: _convertToTl(replyMarkup),
|
|
29
|
+
welcome: params.welcome,
|
|
30
|
+
invertMedia: params.invertMedia
|
|
31
|
+
});
|
|
32
|
+
return _findEphemeralMessageInUpdate(client, res, true, !shouldDispatch);
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
editEphemeralMessage
|
|
36
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
|
|
2
|
+
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
|
|
3
|
+
console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
|
|
4
|
+
console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
|
|
5
|
+
}
|
|
6
|
+
"use strict";
|
|
7
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
8
|
+
const errors = require("../../../types/errors.cjs");
|
|
9
|
+
const utils = require("../../updates/utils.cjs");
|
|
10
|
+
const ephemeralMessage = require("../../types/messages/ephemeral-message.cjs");
|
|
11
|
+
const peersIndex = require("../../types/peers/peers-index.cjs");
|
|
12
|
+
function _findEphemeralMessageInUpdate(client, res, isEdit = false, noDispatch = true) {
|
|
13
|
+
utils.assertIsUpdatesGroup("_findEphemeralMessageInUpdate", res);
|
|
14
|
+
client.handleClientUpdate(res, noDispatch);
|
|
15
|
+
for (const u of res.updates) {
|
|
16
|
+
if (u._ !== "updateNewEphemeralMessage" && u._ !== "updateEditEphemeralMessage") continue;
|
|
17
|
+
if (isEdit !== (u._ === "updateEditEphemeralMessage")) continue;
|
|
18
|
+
const peers = peersIndex.PeersIndex.from(res);
|
|
19
|
+
return new ephemeralMessage.EphemeralMessage(u.message, peers);
|
|
20
|
+
}
|
|
21
|
+
throw new errors.MtTypeAssertionError(
|
|
22
|
+
"_findEphemeralMessageInUpdate (@ .updates[*])",
|
|
23
|
+
"updateNewEphemeralMessage | updateEditEphemeralMessage",
|
|
24
|
+
"none"
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
exports._findEphemeralMessageInUpdate = _findEphemeralMessageInUpdate;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { tl } from '../../../tl/index.js';
|
|
2
|
+
import { ITelegramClient } from '../../client.types.js';
|
|
3
|
+
import { EphemeralMessage } from '../../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
* @noemit
|
|
7
|
+
*/
|
|
8
|
+
export declare function _findEphemeralMessageInUpdate(client: ITelegramClient, res: tl.TypeUpdates, isEdit?: boolean, noDispatch?: boolean): EphemeralMessage;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { tl } from '../../../tl/index.js';
|
|
2
|
+
import { ITelegramClient } from '../../client.types.js';
|
|
3
|
+
import { EphemeralMessage } from '../../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
* @noemit
|
|
7
|
+
*/
|
|
8
|
+
export declare function _findEphemeralMessageInUpdate(client: ITelegramClient, res: tl.TypeUpdates, isEdit?: boolean, noDispatch?: boolean): EphemeralMessage;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MtTypeAssertionError } from "../../../types/errors.js";
|
|
2
|
+
import { assertIsUpdatesGroup } from "../../updates/utils.js";
|
|
3
|
+
import { EphemeralMessage as EphemeralMessage$2 } from "../../types/messages/ephemeral-message.js";
|
|
4
|
+
import { PeersIndex } from "../../types/peers/peers-index.js";
|
|
5
|
+
function _findEphemeralMessageInUpdate(client, res, isEdit = false, noDispatch = true) {
|
|
6
|
+
assertIsUpdatesGroup("_findEphemeralMessageInUpdate", res);
|
|
7
|
+
client.handleClientUpdate(res, noDispatch);
|
|
8
|
+
for (const u of res.updates) {
|
|
9
|
+
if (u._ !== "updateNewEphemeralMessage" && u._ !== "updateEditEphemeralMessage") continue;
|
|
10
|
+
if (isEdit !== (u._ === "updateEditEphemeralMessage")) continue;
|
|
11
|
+
const peers = PeersIndex.from(res);
|
|
12
|
+
return new EphemeralMessage$2(u.message, peers);
|
|
13
|
+
}
|
|
14
|
+
throw new MtTypeAssertionError(
|
|
15
|
+
"_findEphemeralMessageInUpdate (@ .updates[*])",
|
|
16
|
+
"updateNewEphemeralMessage | updateEditEphemeralMessage",
|
|
17
|
+
"none"
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
_findEphemeralMessageInUpdate
|
|
22
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
|
|
2
|
+
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
|
|
3
|
+
console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
|
|
4
|
+
console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
|
|
5
|
+
}
|
|
6
|
+
"use strict";
|
|
7
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
8
|
+
const utils = require("@fuman/utils");
|
|
9
|
+
const resolvePeer = require("../users/resolve-peer.cjs");
|
|
10
|
+
async function getEphemeralCallbackAnswer(client, params) {
|
|
11
|
+
const { chatId, messageId, data, timeout = 1e4, fireAndForget } = params;
|
|
12
|
+
const promise = client.call(
|
|
13
|
+
{
|
|
14
|
+
_: "ephemeral.getCallbackAnswer",
|
|
15
|
+
peer: await resolvePeer.resolvePeer(client, chatId),
|
|
16
|
+
id: messageId,
|
|
17
|
+
data: typeof data === "string" ? utils.utf8.encoder.encode(data) : data
|
|
18
|
+
},
|
|
19
|
+
{ timeout, throw503: true }
|
|
20
|
+
);
|
|
21
|
+
if (fireAndForget) {
|
|
22
|
+
promise.catch(() => {
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
_: "messages.botCallbackAnswer",
|
|
26
|
+
cacheTime: 0
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return promise;
|
|
30
|
+
}
|
|
31
|
+
exports.getEphemeralCallbackAnswer = getEphemeralCallbackAnswer;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { tl } from '../../../tl/index.js';
|
|
2
|
+
import { ITelegramClient } from '../../client.types.js';
|
|
3
|
+
import { InputPeerLike } from '../../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Request a callback answer from a bot for an ephemeral message,
|
|
6
|
+
* i.e. click an inline button that contains data.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getEphemeralCallbackAnswer(client: ITelegramClient, params: {
|
|
9
|
+
/** Chat where the ephemeral message was sent */
|
|
10
|
+
chatId: InputPeerLike;
|
|
11
|
+
/** ID of the ephemeral message containing the button */
|
|
12
|
+
messageId: number;
|
|
13
|
+
/** Data contained in the button */
|
|
14
|
+
data?: string | Uint8Array;
|
|
15
|
+
/**
|
|
16
|
+
* Timeout for the query in ms.
|
|
17
|
+
*
|
|
18
|
+
* @default `10000` (10 sec)
|
|
19
|
+
*/
|
|
20
|
+
timeout?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Whether to "fire and forget" this request,
|
|
23
|
+
* in which case the promise will resolve as soon
|
|
24
|
+
* as the request is sent with an empty response.
|
|
25
|
+
*
|
|
26
|
+
* **Note**: any errors will be silently ignored.
|
|
27
|
+
*/
|
|
28
|
+
fireAndForget?: boolean;
|
|
29
|
+
}): Promise<tl.messages.TypeBotCallbackAnswer>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { tl } from '../../../tl/index.js';
|
|
2
|
+
import { ITelegramClient } from '../../client.types.js';
|
|
3
|
+
import { InputPeerLike } from '../../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Request a callback answer from a bot for an ephemeral message,
|
|
6
|
+
* i.e. click an inline button that contains data.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getEphemeralCallbackAnswer(client: ITelegramClient, params: {
|
|
9
|
+
/** Chat where the ephemeral message was sent */
|
|
10
|
+
chatId: InputPeerLike;
|
|
11
|
+
/** ID of the ephemeral message containing the button */
|
|
12
|
+
messageId: number;
|
|
13
|
+
/** Data contained in the button */
|
|
14
|
+
data?: string | Uint8Array;
|
|
15
|
+
/**
|
|
16
|
+
* Timeout for the query in ms.
|
|
17
|
+
*
|
|
18
|
+
* @default `10000` (10 sec)
|
|
19
|
+
*/
|
|
20
|
+
timeout?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Whether to "fire and forget" this request,
|
|
23
|
+
* in which case the promise will resolve as soon
|
|
24
|
+
* as the request is sent with an empty response.
|
|
25
|
+
*
|
|
26
|
+
* **Note**: any errors will be silently ignored.
|
|
27
|
+
*/
|
|
28
|
+
fireAndForget?: boolean;
|
|
29
|
+
}): Promise<tl.messages.TypeBotCallbackAnswer>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { utf8 } from "@fuman/utils";
|
|
2
|
+
import { resolvePeer } from "../users/resolve-peer.js";
|
|
3
|
+
async function getEphemeralCallbackAnswer(client, params) {
|
|
4
|
+
const { chatId, messageId, data, timeout = 1e4, fireAndForget } = params;
|
|
5
|
+
const promise = client.call(
|
|
6
|
+
{
|
|
7
|
+
_: "ephemeral.getCallbackAnswer",
|
|
8
|
+
peer: await resolvePeer(client, chatId),
|
|
9
|
+
id: messageId,
|
|
10
|
+
data: typeof data === "string" ? utf8.encoder.encode(data) : data
|
|
11
|
+
},
|
|
12
|
+
{ timeout, throw503: true }
|
|
13
|
+
);
|
|
14
|
+
if (fireAndForget) {
|
|
15
|
+
promise.catch(() => {
|
|
16
|
+
});
|
|
17
|
+
return {
|
|
18
|
+
_: "messages.botCallbackAnswer",
|
|
19
|
+
cacheTime: 0
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return promise;
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
getEphemeralCallbackAnswer
|
|
26
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
|
|
2
|
+
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
|
|
3
|
+
console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
|
|
4
|
+
console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
|
|
5
|
+
}
|
|
6
|
+
"use strict";
|
|
7
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
8
|
+
const Long = require("long");
|
|
9
|
+
const typeAssertions = require("../../../utils/type-assertions.cjs");
|
|
10
|
+
const buildPeersIndex = require("../chats/build-peers-index.cjs");
|
|
11
|
+
const resolvePeer = require("../users/resolve-peer.cjs");
|
|
12
|
+
const ephemeralMessage = require("../../types/messages/ephemeral-message.cjs");
|
|
13
|
+
async function getWelcomeMessages(client, chatId) {
|
|
14
|
+
const peer = await resolvePeer.resolvePeer(client, chatId);
|
|
15
|
+
const res = await client.call({
|
|
16
|
+
_: "ephemeral.getWelcomeMessages",
|
|
17
|
+
peer,
|
|
18
|
+
hash: Long.ZERO
|
|
19
|
+
});
|
|
20
|
+
typeAssertions.assertTypeIsNot("getWelcomeMessages", res, "ephemeral.welcomeMessagesNotModified");
|
|
21
|
+
const peersToFetch = [peer];
|
|
22
|
+
for (const msg of res.messages) {
|
|
23
|
+
peersToFetch.push(msg.fromId);
|
|
24
|
+
if (msg.peerId) peersToFetch.push(msg.peerId);
|
|
25
|
+
}
|
|
26
|
+
const peers = await buildPeersIndex._buildPeersIndex(client, "getWelcomeMessages", peersToFetch);
|
|
27
|
+
return res.messages.map((it) => new ephemeralMessage.EphemeralMessage(it, peers));
|
|
28
|
+
}
|
|
29
|
+
exports.getWelcomeMessages = getWelcomeMessages;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ITelegramClient } from '../../client.types.js';
|
|
2
|
+
import { InputPeerLike, EphemeralMessage } from '../../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get the welcome messages configured for a chat
|
|
5
|
+
*
|
|
6
|
+
* @param chatId Chat to get the welcome messages for
|
|
7
|
+
*/
|
|
8
|
+
export declare function getWelcomeMessages(client: ITelegramClient, chatId: InputPeerLike): Promise<EphemeralMessage[]>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ITelegramClient } from '../../client.types.js';
|
|
2
|
+
import { InputPeerLike, EphemeralMessage } from '../../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get the welcome messages configured for a chat
|
|
5
|
+
*
|
|
6
|
+
* @param chatId Chat to get the welcome messages for
|
|
7
|
+
*/
|
|
8
|
+
export declare function getWelcomeMessages(client: ITelegramClient, chatId: InputPeerLike): Promise<EphemeralMessage[]>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Long from "long";
|
|
2
|
+
import { assertTypeIsNot } from "../../../utils/type-assertions.js";
|
|
3
|
+
import { _buildPeersIndex } from "../chats/build-peers-index.js";
|
|
4
|
+
import { resolvePeer } from "../users/resolve-peer.js";
|
|
5
|
+
import { EphemeralMessage as EphemeralMessage$2 } from "../../types/messages/ephemeral-message.js";
|
|
6
|
+
async function getWelcomeMessages(client, chatId) {
|
|
7
|
+
const peer = await resolvePeer(client, chatId);
|
|
8
|
+
const res = await client.call({
|
|
9
|
+
_: "ephemeral.getWelcomeMessages",
|
|
10
|
+
peer,
|
|
11
|
+
hash: Long.ZERO
|
|
12
|
+
});
|
|
13
|
+
assertTypeIsNot("getWelcomeMessages", res, "ephemeral.welcomeMessagesNotModified");
|
|
14
|
+
const peersToFetch = [peer];
|
|
15
|
+
for (const msg of res.messages) {
|
|
16
|
+
peersToFetch.push(msg.fromId);
|
|
17
|
+
if (msg.peerId) peersToFetch.push(msg.peerId);
|
|
18
|
+
}
|
|
19
|
+
const peers = await _buildPeersIndex(client, "getWelcomeMessages", peersToFetch);
|
|
20
|
+
return res.messages.map((it) => new EphemeralMessage$2(it, peers));
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
getWelcomeMessages
|
|
24
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
|
|
2
|
+
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
|
|
3
|
+
console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
|
|
4
|
+
console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
|
|
5
|
+
}
|
|
6
|
+
"use strict";
|
|
7
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
8
|
+
const errors = require("../../../types/errors.cjs");
|
|
9
|
+
const longUtils = require("../../../utils/long-utils.cjs");
|
|
10
|
+
const normalizeInputMedia = require("../files/normalize-input-media.cjs");
|
|
11
|
+
const normalizeRichMessage = require("../messages/normalize-rich-message.cjs");
|
|
12
|
+
const normalizeText = require("../misc/normalize-text.cjs");
|
|
13
|
+
const resolvePeer = require("../users/resolve-peer.cjs");
|
|
14
|
+
const findInUpdate = require("./find-in-update.cjs");
|
|
15
|
+
const factories = require("../../types/bots/keyboards/factories.cjs");
|
|
16
|
+
async function sendEphemeralMessage(client, chatId, receiverId, text, params) {
|
|
17
|
+
const { media, richMessage, replyTo, replyToEphemeral, queryId, shouldDispatch, uploadCache } = params ?? {};
|
|
18
|
+
const [message, entities] = await normalizeText._normalizeInputText(client, text);
|
|
19
|
+
const peer = chatId !== null ? await resolvePeer.resolvePeer(client, chatId) : void 0;
|
|
20
|
+
if (richMessage && !peer) {
|
|
21
|
+
throw new errors.MtArgumentError("richMessage requires chatId to be passed");
|
|
22
|
+
}
|
|
23
|
+
let replyToTl;
|
|
24
|
+
if (replyTo !== void 0) {
|
|
25
|
+
replyToTl = { _: "inputReplyToMessage", replyToMsgId: replyTo };
|
|
26
|
+
} else if (replyToEphemeral !== void 0) {
|
|
27
|
+
replyToTl = { _: "inputReplyToEphemeralMessage", id: replyToEphemeral };
|
|
28
|
+
}
|
|
29
|
+
const res = await client.call({
|
|
30
|
+
_: "ephemeral.sendMessage",
|
|
31
|
+
peer,
|
|
32
|
+
receiverId: await resolvePeer.resolveUser(client, receiverId),
|
|
33
|
+
queryId,
|
|
34
|
+
message,
|
|
35
|
+
entities,
|
|
36
|
+
media: media ? await normalizeInputMedia._normalizeInputMedia(client, media, { uploadPeer: peer }) : void 0,
|
|
37
|
+
richMessage: richMessage ? await normalizeRichMessage._normalizeInputRichMessage(client, peer, richMessage, { uploadCache }) : void 0,
|
|
38
|
+
replyMarkup: factories._convertToTl(params?.replyMarkup),
|
|
39
|
+
randomId: longUtils.randomLong(),
|
|
40
|
+
replyTo: replyToTl,
|
|
41
|
+
welcome: params?.welcome,
|
|
42
|
+
anchor: params?.anchor,
|
|
43
|
+
invertMedia: params?.invertMedia,
|
|
44
|
+
noforwards: params?.forbidForwards
|
|
45
|
+
});
|
|
46
|
+
return findInUpdate._findEphemeralMessageInUpdate(client, res, false, !shouldDispatch);
|
|
47
|
+
}
|
|
48
|
+
exports.sendEphemeralMessage = sendEphemeralMessage;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { tl } from '../../../tl/index.js';
|
|
2
|
+
import { ITelegramClient } from '../../client.types.js';
|
|
3
|
+
import { ReplyMarkup } from '../../types/bots/keyboards/index.js';
|
|
4
|
+
import { EphemeralMessage, InputMediaLike, InputPeerLike, InputText } from '../../types/index.js';
|
|
5
|
+
import { InputRichMessage, RichMediaUploadCache } from '../../types/messages/rich/types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Send an ephemeral message — a message that is only visible
|
|
8
|
+
* to a single user in a chat and is not persisted in the chat history.
|
|
9
|
+
*
|
|
10
|
+
* @param chatId ID of the chat to send the message to (`null` for guest chats, where `queryId` is used instead)
|
|
11
|
+
* @param receiverId ID of the user the message should be visible to
|
|
12
|
+
* @param text Text of the message
|
|
13
|
+
*/
|
|
14
|
+
export declare function sendEphemeralMessage(client: ITelegramClient, chatId: InputPeerLike | null, receiverId: InputPeerLike, text: InputText, params?: {
|
|
15
|
+
/** Media to be attached to the message */
|
|
16
|
+
media?: InputMediaLike;
|
|
17
|
+
/** Rich message content to be sent instead of the plain text */
|
|
18
|
+
richMessage?: InputRichMessage;
|
|
19
|
+
/** Message to reply to */
|
|
20
|
+
replyTo?: number;
|
|
21
|
+
/** Ephemeral message to reply to */
|
|
22
|
+
replyToEphemeral?: number;
|
|
23
|
+
/** Reply markup to be attached to the message */
|
|
24
|
+
replyMarkup?: ReplyMarkup;
|
|
25
|
+
/** For guest chat bots, ID of the query that this message is sent in response to */
|
|
26
|
+
queryId?: tl.Long;
|
|
27
|
+
/** Whether to send this message as a welcome message template for the chat */
|
|
28
|
+
welcome?: boolean;
|
|
29
|
+
/** Whether to anchor this message to the message it replies to */
|
|
30
|
+
anchor?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Whether to invert the media position.
|
|
33
|
+
*
|
|
34
|
+
* Currently only supported for web previews and makes the
|
|
35
|
+
* client render the preview above the caption and not below.
|
|
36
|
+
*/
|
|
37
|
+
invertMedia?: boolean;
|
|
38
|
+
/** Whether to forbid forwarding this message */
|
|
39
|
+
forbidForwards?: boolean;
|
|
40
|
+
/** Cache for the uploaded rich message media, see {@link createRichStreamingDraft} */
|
|
41
|
+
uploadCache?: RichMediaUploadCache;
|
|
42
|
+
/**
|
|
43
|
+
* Whether to dispatch the returned updates
|
|
44
|
+
* to the client's update handler.
|
|
45
|
+
*/
|
|
46
|
+
shouldDispatch?: true;
|
|
47
|
+
}): Promise<EphemeralMessage>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { tl } from '../../../tl/index.js';
|
|
2
|
+
import { ITelegramClient } from '../../client.types.js';
|
|
3
|
+
import { ReplyMarkup } from '../../types/bots/keyboards/index.js';
|
|
4
|
+
import { EphemeralMessage, InputMediaLike, InputPeerLike, InputText } from '../../types/index.js';
|
|
5
|
+
import { InputRichMessage, RichMediaUploadCache } from '../../types/messages/rich/types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Send an ephemeral message — a message that is only visible
|
|
8
|
+
* to a single user in a chat and is not persisted in the chat history.
|
|
9
|
+
*
|
|
10
|
+
* @param chatId ID of the chat to send the message to (`null` for guest chats, where `queryId` is used instead)
|
|
11
|
+
* @param receiverId ID of the user the message should be visible to
|
|
12
|
+
* @param text Text of the message
|
|
13
|
+
*/
|
|
14
|
+
export declare function sendEphemeralMessage(client: ITelegramClient, chatId: InputPeerLike | null, receiverId: InputPeerLike, text: InputText, params?: {
|
|
15
|
+
/** Media to be attached to the message */
|
|
16
|
+
media?: InputMediaLike;
|
|
17
|
+
/** Rich message content to be sent instead of the plain text */
|
|
18
|
+
richMessage?: InputRichMessage;
|
|
19
|
+
/** Message to reply to */
|
|
20
|
+
replyTo?: number;
|
|
21
|
+
/** Ephemeral message to reply to */
|
|
22
|
+
replyToEphemeral?: number;
|
|
23
|
+
/** Reply markup to be attached to the message */
|
|
24
|
+
replyMarkup?: ReplyMarkup;
|
|
25
|
+
/** For guest chat bots, ID of the query that this message is sent in response to */
|
|
26
|
+
queryId?: tl.Long;
|
|
27
|
+
/** Whether to send this message as a welcome message template for the chat */
|
|
28
|
+
welcome?: boolean;
|
|
29
|
+
/** Whether to anchor this message to the message it replies to */
|
|
30
|
+
anchor?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Whether to invert the media position.
|
|
33
|
+
*
|
|
34
|
+
* Currently only supported for web previews and makes the
|
|
35
|
+
* client render the preview above the caption and not below.
|
|
36
|
+
*/
|
|
37
|
+
invertMedia?: boolean;
|
|
38
|
+
/** Whether to forbid forwarding this message */
|
|
39
|
+
forbidForwards?: boolean;
|
|
40
|
+
/** Cache for the uploaded rich message media, see {@link createRichStreamingDraft} */
|
|
41
|
+
uploadCache?: RichMediaUploadCache;
|
|
42
|
+
/**
|
|
43
|
+
* Whether to dispatch the returned updates
|
|
44
|
+
* to the client's update handler.
|
|
45
|
+
*/
|
|
46
|
+
shouldDispatch?: true;
|
|
47
|
+
}): Promise<EphemeralMessage>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { MtArgumentError } from "../../../types/errors.js";
|
|
2
|
+
import { randomLong } from "../../../utils/long-utils.js";
|
|
3
|
+
import { _normalizeInputMedia } from "../files/normalize-input-media.js";
|
|
4
|
+
import { _normalizeInputRichMessage } from "../messages/normalize-rich-message.js";
|
|
5
|
+
import { _normalizeInputText } from "../misc/normalize-text.js";
|
|
6
|
+
import { resolvePeer, resolveUser } from "../users/resolve-peer.js";
|
|
7
|
+
import { _findEphemeralMessageInUpdate } from "./find-in-update.js";
|
|
8
|
+
import { _convertToTl } from "../../types/bots/keyboards/factories.js";
|
|
9
|
+
async function sendEphemeralMessage(client, chatId, receiverId, text, params) {
|
|
10
|
+
const { media, richMessage, replyTo, replyToEphemeral, queryId, shouldDispatch, uploadCache } = params ?? {};
|
|
11
|
+
const [message, entities] = await _normalizeInputText(client, text);
|
|
12
|
+
const peer = chatId !== null ? await resolvePeer(client, chatId) : void 0;
|
|
13
|
+
if (richMessage && !peer) {
|
|
14
|
+
throw new MtArgumentError("richMessage requires chatId to be passed");
|
|
15
|
+
}
|
|
16
|
+
let replyToTl;
|
|
17
|
+
if (replyTo !== void 0) {
|
|
18
|
+
replyToTl = { _: "inputReplyToMessage", replyToMsgId: replyTo };
|
|
19
|
+
} else if (replyToEphemeral !== void 0) {
|
|
20
|
+
replyToTl = { _: "inputReplyToEphemeralMessage", id: replyToEphemeral };
|
|
21
|
+
}
|
|
22
|
+
const res = await client.call({
|
|
23
|
+
_: "ephemeral.sendMessage",
|
|
24
|
+
peer,
|
|
25
|
+
receiverId: await resolveUser(client, receiverId),
|
|
26
|
+
queryId,
|
|
27
|
+
message,
|
|
28
|
+
entities,
|
|
29
|
+
media: media ? await _normalizeInputMedia(client, media, { uploadPeer: peer }) : void 0,
|
|
30
|
+
richMessage: richMessage ? await _normalizeInputRichMessage(client, peer, richMessage, { uploadCache }) : void 0,
|
|
31
|
+
replyMarkup: _convertToTl(params?.replyMarkup),
|
|
32
|
+
randomId: randomLong(),
|
|
33
|
+
replyTo: replyToTl,
|
|
34
|
+
welcome: params?.welcome,
|
|
35
|
+
anchor: params?.anchor,
|
|
36
|
+
invertMedia: params?.invertMedia,
|
|
37
|
+
noforwards: params?.forbidForwards
|
|
38
|
+
});
|
|
39
|
+
return _findEphemeralMessageInUpdate(client, res, false, !shouldDispatch);
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
sendEphemeralMessage
|
|
43
|
+
};
|
|
@@ -230,12 +230,13 @@ async function* downloadAsIterable(client, input, params) {
|
|
|
230
230
|
}).then(() => {
|
|
231
231
|
client.log.debug("download workers finished");
|
|
232
232
|
});
|
|
233
|
-
|
|
233
|
+
const onAbort = () => {
|
|
234
234
|
client.log.debug("download aborted");
|
|
235
235
|
error = abortSignal$1.reason;
|
|
236
236
|
ended = true;
|
|
237
237
|
nextChunkCv.notify();
|
|
238
|
-
}
|
|
238
|
+
};
|
|
239
|
+
abortSignal$1?.addEventListener("abort", onAbort);
|
|
239
240
|
let position = offset;
|
|
240
241
|
try {
|
|
241
242
|
while (position < limitBytes) {
|
|
@@ -255,6 +256,10 @@ async function* downloadAsIterable(client, input, params) {
|
|
|
255
256
|
}
|
|
256
257
|
} finally {
|
|
257
258
|
if (stallTimer) utils.timers.clearTimeout(stallTimer);
|
|
259
|
+
abortSignal$1?.removeEventListener("abort", onAbort);
|
|
260
|
+
ended = true;
|
|
261
|
+
for (const idx in buffer) delete buffer[Number(idx)];
|
|
262
|
+
nextChunkCv.notify();
|
|
258
263
|
}
|
|
259
264
|
}
|
|
260
265
|
exports._normalizeFileDownloadLocation = _normalizeFileDownloadLocation;
|
|
@@ -223,12 +223,13 @@ async function* downloadAsIterable(client, input, params) {
|
|
|
223
223
|
}).then(() => {
|
|
224
224
|
client.log.debug("download workers finished");
|
|
225
225
|
});
|
|
226
|
-
|
|
226
|
+
const onAbort = () => {
|
|
227
227
|
client.log.debug("download aborted");
|
|
228
228
|
error = abortSignal.reason;
|
|
229
229
|
ended = true;
|
|
230
230
|
nextChunkCv.notify();
|
|
231
|
-
}
|
|
231
|
+
};
|
|
232
|
+
abortSignal?.addEventListener("abort", onAbort);
|
|
232
233
|
let position = offset;
|
|
233
234
|
try {
|
|
234
235
|
while (position < limitBytes) {
|
|
@@ -248,6 +249,10 @@ async function* downloadAsIterable(client, input, params) {
|
|
|
248
249
|
}
|
|
249
250
|
} finally {
|
|
250
251
|
if (stallTimer) timers.clearTimeout(stallTimer);
|
|
252
|
+
abortSignal?.removeEventListener("abort", onAbort);
|
|
253
|
+
ended = true;
|
|
254
|
+
for (const idx in buffer) delete buffer[Number(idx)];
|
|
255
|
+
nextChunkCv.notify();
|
|
251
256
|
}
|
|
252
257
|
}
|
|
253
258
|
export {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -19,11 +19,9 @@ function downloadAsStream(client, location, params) {
|
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
const cancel = new AbortController();
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
});
|
|
26
|
-
}
|
|
22
|
+
const onAbort = () => cancel.abort();
|
|
23
|
+
params?.abortSignal?.addEventListener("abort", onAbort);
|
|
24
|
+
const removeAbortListener = () => params?.abortSignal?.removeEventListener("abort", onAbort);
|
|
27
25
|
const backpressureCv = new utils.ConditionVariable();
|
|
28
26
|
return new ReadableStream({
|
|
29
27
|
start(controller) {
|
|
@@ -38,13 +36,14 @@ function downloadAsStream(client, location, params) {
|
|
|
38
36
|
controller.enqueue(chunk);
|
|
39
37
|
}
|
|
40
38
|
controller.close();
|
|
41
|
-
})().catch((e) => controller.error(e));
|
|
39
|
+
})().catch((e) => controller.error(e)).finally(removeAbortListener);
|
|
42
40
|
},
|
|
43
41
|
pull() {
|
|
44
42
|
backpressureCv.notify();
|
|
45
43
|
},
|
|
46
44
|
cancel() {
|
|
47
45
|
cancel.abort();
|
|
46
|
+
removeAbortListener();
|
|
48
47
|
}
|
|
49
48
|
}, {
|
|
50
49
|
highWaterMark: params?.highWaterMark,
|
|
@@ -12,11 +12,9 @@ function downloadAsStream(client, location, params) {
|
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
const cancel = new AbortController();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
});
|
|
19
|
-
}
|
|
15
|
+
const onAbort = () => cancel.abort();
|
|
16
|
+
params?.abortSignal?.addEventListener("abort", onAbort);
|
|
17
|
+
const removeAbortListener = () => params?.abortSignal?.removeEventListener("abort", onAbort);
|
|
20
18
|
const backpressureCv = new ConditionVariable();
|
|
21
19
|
return new ReadableStream({
|
|
22
20
|
start(controller) {
|
|
@@ -31,13 +29,14 @@ function downloadAsStream(client, location, params) {
|
|
|
31
29
|
controller.enqueue(chunk);
|
|
32
30
|
}
|
|
33
31
|
controller.close();
|
|
34
|
-
})().catch((e) => controller.error(e));
|
|
32
|
+
})().catch((e) => controller.error(e)).finally(removeAbortListener);
|
|
35
33
|
},
|
|
36
34
|
pull() {
|
|
37
35
|
backpressureCv.notify();
|
|
38
36
|
},
|
|
39
37
|
cancel() {
|
|
40
38
|
cancel.abort();
|
|
39
|
+
removeAbortListener();
|
|
41
40
|
}
|
|
42
41
|
}, {
|
|
43
42
|
highWaterMark: params?.highWaterMark,
|