@mtcute/core 0.30.3 → 0.31.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 +73 -0
- package/client.js +73 -0
- package/highlevel/client.d.cts +344 -114
- package/highlevel/client.d.ts +344 -114
- 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/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-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/edit-ephemeral-message.cjs +33 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.d.cts +25 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.d.ts +25 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.js +28 -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/send-ephemeral-message.cjs +38 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.d.cts +29 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.d.ts +29 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.js +33 -0
- package/highlevel/methods/files/download-iterable.cjs +4 -2
- package/highlevel/methods/files/download-iterable.js +4 -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/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 +1 -1
- 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 +1 -1
- 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.d.cts +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-closed.d.ts +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 +2 -2
- package/highlevel/methods/forums/toggle-general-topic-hidden.js +3 -3
- 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 -4
- package/highlevel/methods/messages/send-text.js +70 -4
- package/highlevel/methods/users/resolve-peer.cjs +11 -1
- package/highlevel/methods/users/resolve-peer.js +11 -1
- package/highlevel/methods.d.cts +16 -0
- package/highlevel/methods.d.ts +16 -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/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/ephemeral-message.cjs +103 -0
- package/highlevel/types/messages/ephemeral-message.d.cts +55 -0
- package/highlevel/types/messages/ephemeral-message.d.ts +55 -0
- package/highlevel/types/messages/ephemeral-message.js +98 -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 +6 -0
- package/highlevel/types/messages/message-action.d.cts +8 -1
- package/highlevel/types/messages/message-action.d.ts +8 -1
- package/highlevel/types/messages/message-action.js +6 -0
- 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/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 +20 -5
- package/highlevel/types/peers/full-chat.d.cts +5 -0
- package/highlevel/types/peers/full-chat.d.ts +5 -0
- package/highlevel/types/peers/full-chat.js +20 -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/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 +61 -0
- package/highlevel/types/updates/ephemeral-callback-query.d.cts +38 -0
- package/highlevel/types/updates/ephemeral-callback-query.d.ts +38 -0
- package/highlevel/types/updates/ephemeral-callback-query.js +56 -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/updates/manager.cjs +31 -13
- package/highlevel/updates/manager.d.cts +1 -0
- package/highlevel/updates/manager.d.ts +1 -0
- package/highlevel/updates/manager.js +31 -13
- 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 +4 -0
- package/highlevel/utils/walk-page-blocks.js +4 -0
- package/index.cjs +10 -0
- package/index.js +11 -1
- package/methods.cjs +27 -0
- package/methods.js +27 -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/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 +3 -0
- package/network/session-connection.js +3 -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 +90 -15
- package/tl/binary/reader.js +90 -15
- package/tl/binary/writer.cjs +385 -80
- package/tl/binary/writer.js +385 -80
- package/tl/compat/reader.cjs +11 -0
- package/tl/compat/reader.js +11 -0
- package/tl/index.d.cts +12380 -4272
- package/tl/index.d.ts +12380 -4272
- package/tl/inner-tl.cjs +70 -20
- package/tl/inner-tl.js +70 -20
- package/tl/raw-errors.json +1 -1
- 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 +14 -0
- package/utils/binary/compat.js +14 -0
- 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 +3 -0
- package/utils/links/bots.js +3 -0
- package/utils/peer-utils.cjs +8 -0
- package/utils/peer-utils.js +8 -0
|
@@ -11,6 +11,49 @@ import { _findMessageInUpdate } from "./find-in-update.js";
|
|
|
11
11
|
import { _processCommonSendParameters } from "./send-common.js";
|
|
12
12
|
import { _convertToTl } from "../../types/bots/keyboards/factories.js";
|
|
13
13
|
import { PeersIndex } from "../../types/peers/peers-index.js";
|
|
14
|
+
function _inputReplyToToHeader(replyTo, peer) {
|
|
15
|
+
if (!replyTo) return [void 0, void 0];
|
|
16
|
+
switch (replyTo._) {
|
|
17
|
+
case "inputReplyToMessage": {
|
|
18
|
+
const replyToPeerId = replyTo.replyToPeerId && getMarkedPeerId(replyTo.replyToPeerId) !== getMarkedPeerId(peer) ? inputPeerToPeer(replyTo.replyToPeerId) : void 0;
|
|
19
|
+
return [
|
|
20
|
+
{
|
|
21
|
+
_: "messageReplyHeader",
|
|
22
|
+
replyToMsgId: replyTo.replyToMsgId,
|
|
23
|
+
replyToPeerId,
|
|
24
|
+
replyToTopId: replyTo.topMsgId,
|
|
25
|
+
quote: replyTo.quoteText !== void 0 ? true : void 0,
|
|
26
|
+
quoteText: replyTo.quoteText,
|
|
27
|
+
quoteEntities: replyTo.quoteEntities,
|
|
28
|
+
quoteOffset: replyTo.quoteOffset,
|
|
29
|
+
todoItemId: replyTo.todoItemId,
|
|
30
|
+
pollOption: replyTo.pollOption
|
|
31
|
+
},
|
|
32
|
+
replyTo.monoforumPeerId ? inputPeerToPeer(replyTo.monoforumPeerId) : void 0
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
case "inputReplyToStory":
|
|
36
|
+
return [
|
|
37
|
+
{
|
|
38
|
+
_: "messageReplyStoryHeader",
|
|
39
|
+
peer: inputPeerToPeer(replyTo.peer),
|
|
40
|
+
storyId: replyTo.storyId
|
|
41
|
+
},
|
|
42
|
+
void 0
|
|
43
|
+
];
|
|
44
|
+
case "inputReplyToMonoForum":
|
|
45
|
+
return [void 0, inputPeerToPeer(replyTo.monoforumPeerId)];
|
|
46
|
+
case "inputReplyToEphemeralMessage":
|
|
47
|
+
return [
|
|
48
|
+
{
|
|
49
|
+
_: "messageReplyHeader",
|
|
50
|
+
replyToEphemeral: true,
|
|
51
|
+
replyToMsgId: replyTo.id
|
|
52
|
+
},
|
|
53
|
+
void 0
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
14
57
|
async function sendText(client, chatId, text, params) {
|
|
15
58
|
if (!params) params = {};
|
|
16
59
|
const [message, entities] = await _normalizeInputText(client, text);
|
|
@@ -21,6 +64,7 @@ async function sendText(client, chatId, text, params) {
|
|
|
21
64
|
params
|
|
22
65
|
);
|
|
23
66
|
const randomId = params.randomId ?? randomLong();
|
|
67
|
+
const sendAs = params.sendAs ? await resolvePeer(client, params.sendAs) : void 0;
|
|
24
68
|
const res = await client.call(
|
|
25
69
|
{
|
|
26
70
|
_: "messages.sendMessage",
|
|
@@ -35,7 +79,7 @@ async function sendText(client, chatId, text, params) {
|
|
|
35
79
|
entities,
|
|
36
80
|
clearDraft: params.clearDraft,
|
|
37
81
|
noforwards: params.forbidForwards,
|
|
38
|
-
sendAs
|
|
82
|
+
sendAs,
|
|
39
83
|
invertMedia: params.invertMedia,
|
|
40
84
|
quickReplyShortcut,
|
|
41
85
|
effect: params.effect,
|
|
@@ -49,16 +93,25 @@ async function sendText(client, chatId, text, params) {
|
|
|
49
93
|
}
|
|
50
94
|
);
|
|
51
95
|
if (res._ === "updateShortSentMessage") {
|
|
96
|
+
const [replyToHeader, savedPeerId] = _inputReplyToToHeader(replyTo, peer);
|
|
52
97
|
const msg2 = {
|
|
53
98
|
_: "message",
|
|
54
99
|
id: res.id,
|
|
55
100
|
peerId: inputPeerToPeer(peer),
|
|
56
|
-
fromId: { _: "peerUser", userId: client.storage.self.getCached().userId },
|
|
101
|
+
fromId: sendAs ? inputPeerToPeer(sendAs) : { _: "peerUser", userId: client.storage.self.getCached().userId },
|
|
102
|
+
savedPeerId,
|
|
103
|
+
replyTo: replyToHeader,
|
|
57
104
|
message,
|
|
58
105
|
date: res.date,
|
|
59
106
|
out: res.out,
|
|
107
|
+
silent: params.silent,
|
|
108
|
+
noforwards: params.forbidForwards,
|
|
109
|
+
invertMedia: params.invertMedia,
|
|
110
|
+
effect: params.effect,
|
|
60
111
|
replyMarkup,
|
|
61
|
-
|
|
112
|
+
media: res.media,
|
|
113
|
+
entities: res.entities,
|
|
114
|
+
ttlPeriod: res.ttlPeriod
|
|
62
115
|
};
|
|
63
116
|
if (!params.shouldDispatch) {
|
|
64
117
|
client.handleClientUpdate(createDummyUpdate(res.pts, res.ptsCount));
|
|
@@ -92,7 +145,20 @@ async function sendText(client, chatId, text, params) {
|
|
|
92
145
|
);
|
|
93
146
|
}
|
|
94
147
|
};
|
|
95
|
-
|
|
148
|
+
const peersToFetch = [peer, msg2.fromId];
|
|
149
|
+
if (savedPeerId) peersToFetch.push(savedPeerId);
|
|
150
|
+
if (replyToHeader?._ === "messageReplyHeader" && replyToHeader.replyToPeerId) {
|
|
151
|
+
peersToFetch.push(replyToHeader.replyToPeerId);
|
|
152
|
+
} else if (replyToHeader?._ === "messageReplyStoryHeader") {
|
|
153
|
+
peersToFetch.push(replyToHeader.peer);
|
|
154
|
+
}
|
|
155
|
+
await Promise.all(peersToFetch.map(fetchPeer));
|
|
156
|
+
if (replyToHeader?._ === "messageReplyHeader" && replyToHeader.replyToTopId && replyToHeader.replyToTopId !== 1 && msg2.peerId._ === "peerChannel") {
|
|
157
|
+
const chat = peers.chats.get(msg2.peerId.channelId);
|
|
158
|
+
if (chat?._ === "channel" && chat.forum) {
|
|
159
|
+
replyToHeader.forumTopic = true;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
96
162
|
const ret = new Message$2(msg2, peers);
|
|
97
163
|
return ret;
|
|
98
164
|
}
|
|
@@ -107,7 +107,17 @@ async function resolvePeer(client, peerId, force = false) {
|
|
|
107
107
|
};
|
|
108
108
|
}
|
|
109
109
|
} catch (e) {
|
|
110
|
-
if (
|
|
110
|
+
if (innerTl.RpcError.is(e, "COMMUNITY_ID_INVALID")) {
|
|
111
|
+
if (client.storage.self.getCached(true)?.isBot) {
|
|
112
|
+
return {
|
|
113
|
+
_: "inputPeerChannel",
|
|
114
|
+
channelId: bareId,
|
|
115
|
+
accessHash: Long.ZERO
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
} else if (!innerTl.RpcError.is(e, "CHANNEL_INVALID")) {
|
|
119
|
+
throw e;
|
|
120
|
+
}
|
|
111
121
|
}
|
|
112
122
|
break;
|
|
113
123
|
}
|
|
@@ -100,7 +100,17 @@ async function resolvePeer(client, peerId, force = false) {
|
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
} catch (e) {
|
|
103
|
-
if (
|
|
103
|
+
if (RpcError.is(e, "COMMUNITY_ID_INVALID")) {
|
|
104
|
+
if (client.storage.self.getCached(true)?.isBot) {
|
|
105
|
+
return {
|
|
106
|
+
_: "inputPeerChannel",
|
|
107
|
+
channelId: bareId,
|
|
108
|
+
accessHash: Long.ZERO
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
} else if (!RpcError.is(e, "CHANNEL_INVALID")) {
|
|
112
|
+
throw e;
|
|
113
|
+
}
|
|
104
114
|
}
|
|
105
115
|
break;
|
|
106
116
|
}
|
package/highlevel/methods.d.cts
CHANGED
|
@@ -89,6 +89,18 @@ export { toggleJoinToSend } from './methods/chats/toggle-join-to-send.js';
|
|
|
89
89
|
export { transferChatOwnership } from './methods/chats/transfer-chat-ownership.js';
|
|
90
90
|
export { unarchiveChats } from './methods/chats/unarchive-chats.js';
|
|
91
91
|
export { unbanChatMember } from './methods/chats/unban-chat-member.js';
|
|
92
|
+
export { banCommunityParticipant } from './methods/communities/ban-community-participant.js';
|
|
93
|
+
export { unbanCommunityParticipant } from './methods/communities/ban-community-participant.js';
|
|
94
|
+
export { createCommunity } from './methods/communities/create-community.js';
|
|
95
|
+
export { getCommunityLinkRequests } from './methods/communities/get-community-link-requests.js';
|
|
96
|
+
export { getCommunityParticipantChats } from './methods/communities/get-community-participant-chats.js';
|
|
97
|
+
export type { CommunityParticipantChats } from './methods/communities/get-community-participant-chats.js';
|
|
98
|
+
export { getJoinedCommunities } from './methods/communities/get-joined-communities.js';
|
|
99
|
+
export { hideCommunityLinkRequest } from './methods/communities/hide-community-link-request.js';
|
|
100
|
+
export { hideAllCommunityLinkRequests } from './methods/communities/hide-community-link-request.js';
|
|
101
|
+
export { linkCommunityPeer } from './methods/communities/link-community-peer.js';
|
|
102
|
+
export { unlinkCommunityPeer } from './methods/communities/link-community-peer.js';
|
|
103
|
+
export { toggleCommunityCollapsed } from './methods/communities/toggle-community-collapsed.js';
|
|
92
104
|
export { addContact } from './methods/contacts/add-contact.js';
|
|
93
105
|
export { deleteContacts } from './methods/contacts/delete-contacts.js';
|
|
94
106
|
export { getContacts } from './methods/contacts/get-contacts.js';
|
|
@@ -105,6 +117,10 @@ export { getPeerDialogs } from './methods/dialogs/get-peer-dialogs.js';
|
|
|
105
117
|
export { iterDialogs } from './methods/dialogs/iter-dialogs.js';
|
|
106
118
|
export { joinChatlist } from './methods/dialogs/join-chatlist.js';
|
|
107
119
|
export { setFoldersOrder } from './methods/dialogs/set-folders-order.js';
|
|
120
|
+
export { deleteEphemeralMessage } from './methods/ephemeral/delete-ephemeral-message.js';
|
|
121
|
+
export { editEphemeralMessage } from './methods/ephemeral/edit-ephemeral-message.js';
|
|
122
|
+
export { getEphemeralCallbackAnswer } from './methods/ephemeral/get-ephemeral-callback-answer.js';
|
|
123
|
+
export { sendEphemeralMessage } from './methods/ephemeral/send-ephemeral-message.js';
|
|
108
124
|
export { downloadAsBuffer } from './methods/files/download-buffer.js';
|
|
109
125
|
export { downloadChunk } from './methods/files/download-chunk.js';
|
|
110
126
|
export { _normalizeFileDownloadLocation } from './methods/files/download-iterable.js';
|
package/highlevel/methods.d.ts
CHANGED
|
@@ -89,6 +89,18 @@ export { toggleJoinToSend } from './methods/chats/toggle-join-to-send.js';
|
|
|
89
89
|
export { transferChatOwnership } from './methods/chats/transfer-chat-ownership.js';
|
|
90
90
|
export { unarchiveChats } from './methods/chats/unarchive-chats.js';
|
|
91
91
|
export { unbanChatMember } from './methods/chats/unban-chat-member.js';
|
|
92
|
+
export { banCommunityParticipant } from './methods/communities/ban-community-participant.js';
|
|
93
|
+
export { unbanCommunityParticipant } from './methods/communities/ban-community-participant.js';
|
|
94
|
+
export { createCommunity } from './methods/communities/create-community.js';
|
|
95
|
+
export { getCommunityLinkRequests } from './methods/communities/get-community-link-requests.js';
|
|
96
|
+
export { getCommunityParticipantChats } from './methods/communities/get-community-participant-chats.js';
|
|
97
|
+
export type { CommunityParticipantChats } from './methods/communities/get-community-participant-chats.js';
|
|
98
|
+
export { getJoinedCommunities } from './methods/communities/get-joined-communities.js';
|
|
99
|
+
export { hideCommunityLinkRequest } from './methods/communities/hide-community-link-request.js';
|
|
100
|
+
export { hideAllCommunityLinkRequests } from './methods/communities/hide-community-link-request.js';
|
|
101
|
+
export { linkCommunityPeer } from './methods/communities/link-community-peer.js';
|
|
102
|
+
export { unlinkCommunityPeer } from './methods/communities/link-community-peer.js';
|
|
103
|
+
export { toggleCommunityCollapsed } from './methods/communities/toggle-community-collapsed.js';
|
|
92
104
|
export { addContact } from './methods/contacts/add-contact.js';
|
|
93
105
|
export { deleteContacts } from './methods/contacts/delete-contacts.js';
|
|
94
106
|
export { getContacts } from './methods/contacts/get-contacts.js';
|
|
@@ -105,6 +117,10 @@ export { getPeerDialogs } from './methods/dialogs/get-peer-dialogs.js';
|
|
|
105
117
|
export { iterDialogs } from './methods/dialogs/iter-dialogs.js';
|
|
106
118
|
export { joinChatlist } from './methods/dialogs/join-chatlist.js';
|
|
107
119
|
export { setFoldersOrder } from './methods/dialogs/set-folders-order.js';
|
|
120
|
+
export { deleteEphemeralMessage } from './methods/ephemeral/delete-ephemeral-message.js';
|
|
121
|
+
export { editEphemeralMessage } from './methods/ephemeral/edit-ephemeral-message.js';
|
|
122
|
+
export { getEphemeralCallbackAnswer } from './methods/ephemeral/get-ephemeral-callback-answer.js';
|
|
123
|
+
export { sendEphemeralMessage } from './methods/ephemeral/send-ephemeral-message.js';
|
|
108
124
|
export { downloadAsBuffer } from './methods/files/download-buffer.js';
|
|
109
125
|
export { downloadChunk } from './methods/files/download-chunk.js';
|
|
110
126
|
export { _normalizeFileDownloadLocation } from './methods/files/download-iterable.js';
|
|
@@ -129,6 +129,23 @@ class PeersService extends base.BaseService {
|
|
|
129
129
|
accessHash = peer.accessHash;
|
|
130
130
|
break;
|
|
131
131
|
}
|
|
132
|
+
case "community":
|
|
133
|
+
case "communityForbidden": {
|
|
134
|
+
if (!peer.accessHash) {
|
|
135
|
+
this._log.warn("received community without access hash: %j", peer);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
dto = {
|
|
139
|
+
id: peerUtils.toggleChannelIdMark(peer.id),
|
|
140
|
+
accessHash: longUtils.longToFastString(peer.accessHash),
|
|
141
|
+
isMin: peer._ === "community" ? peer.min : false,
|
|
142
|
+
usernames: [],
|
|
143
|
+
updated: Date.now(),
|
|
144
|
+
complete: this._serializeTl(peer)
|
|
145
|
+
};
|
|
146
|
+
accessHash = peer.accessHash;
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
132
149
|
default:
|
|
133
150
|
return;
|
|
134
151
|
}
|
|
@@ -163,6 +180,13 @@ class PeersService extends base.BaseService {
|
|
|
163
180
|
verified: peer.verified,
|
|
164
181
|
defaultBannedRights: peer.defaultBannedRights
|
|
165
182
|
};
|
|
183
|
+
} else if (existing._ === "community" && peer._ === "community") {
|
|
184
|
+
newComplete = {
|
|
185
|
+
...existing,
|
|
186
|
+
title: peer.title,
|
|
187
|
+
photo: peer.photo,
|
|
188
|
+
defaultBannedRights: peer.defaultBannedRights
|
|
189
|
+
};
|
|
166
190
|
} else if (existing._ === "user" && peer._ === "user") {
|
|
167
191
|
newComplete = {
|
|
168
192
|
...existing,
|
|
@@ -216,6 +240,7 @@ class PeersService extends base.BaseService {
|
|
|
216
240
|
await this._refs.deleteByPeer(peer.id);
|
|
217
241
|
}
|
|
218
242
|
async _writePending() {
|
|
243
|
+
this._pendingWritesTimer = null;
|
|
219
244
|
try {
|
|
220
245
|
await utils.asyncPool(this._pendingWrites.values(), async (dto) => {
|
|
221
246
|
await this._peers.store(dto);
|
|
@@ -122,6 +122,23 @@ class PeersService extends BaseService {
|
|
|
122
122
|
accessHash = peer.accessHash;
|
|
123
123
|
break;
|
|
124
124
|
}
|
|
125
|
+
case "community":
|
|
126
|
+
case "communityForbidden": {
|
|
127
|
+
if (!peer.accessHash) {
|
|
128
|
+
this._log.warn("received community without access hash: %j", peer);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
dto = {
|
|
132
|
+
id: toggleChannelIdMark(peer.id),
|
|
133
|
+
accessHash: longToFastString(peer.accessHash),
|
|
134
|
+
isMin: peer._ === "community" ? peer.min : false,
|
|
135
|
+
usernames: [],
|
|
136
|
+
updated: Date.now(),
|
|
137
|
+
complete: this._serializeTl(peer)
|
|
138
|
+
};
|
|
139
|
+
accessHash = peer.accessHash;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
125
142
|
default:
|
|
126
143
|
return;
|
|
127
144
|
}
|
|
@@ -156,6 +173,13 @@ class PeersService extends BaseService {
|
|
|
156
173
|
verified: peer.verified,
|
|
157
174
|
defaultBannedRights: peer.defaultBannedRights
|
|
158
175
|
};
|
|
176
|
+
} else if (existing._ === "community" && peer._ === "community") {
|
|
177
|
+
newComplete = {
|
|
178
|
+
...existing,
|
|
179
|
+
title: peer.title,
|
|
180
|
+
photo: peer.photo,
|
|
181
|
+
defaultBannedRights: peer.defaultBannedRights
|
|
182
|
+
};
|
|
159
183
|
} else if (existing._ === "user" && peer._ === "user") {
|
|
160
184
|
newComplete = {
|
|
161
185
|
...existing,
|
|
@@ -209,6 +233,7 @@ class PeersService extends BaseService {
|
|
|
209
233
|
await this._refs.deleteByPeer(peer.id);
|
|
210
234
|
}
|
|
211
235
|
async _writePending() {
|
|
236
|
+
this._pendingWritesTimer = null;
|
|
212
237
|
try {
|
|
213
238
|
await asyncPool(this._pendingWrites.values(), async (dto) => {
|
|
214
239
|
await this._peers.store(dto);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -145,6 +145,10 @@ class Conversation {
|
|
|
145
145
|
state.pendingConversations.delete(this._chatId);
|
|
146
146
|
}
|
|
147
147
|
state.hasConversations = Boolean(state.pendingConversations.size);
|
|
148
|
+
const error = new errors.MtcuteError("Conversation stopped");
|
|
149
|
+
for (const it of this._queuedNewMessage) this._rejectPending(it, error);
|
|
150
|
+
for (const it of this._pendingEditMessage.values()) this._rejectPending(it, error);
|
|
151
|
+
for (const it of this._pendingRead.values()) this._rejectPending(it, error);
|
|
148
152
|
this._queuedNewMessage.clear();
|
|
149
153
|
this._pendingNewMessages.clear();
|
|
150
154
|
this._pendingEditMessage.clear();
|
|
@@ -152,6 +156,10 @@ class Conversation {
|
|
|
152
156
|
this._pendingRead.clear();
|
|
153
157
|
this._started = false;
|
|
154
158
|
}
|
|
159
|
+
_rejectPending(it, error) {
|
|
160
|
+
if (it.timeout) utils.timers.clearTimeout(it.timeout);
|
|
161
|
+
it.promise.reject(error);
|
|
162
|
+
}
|
|
155
163
|
_recordMessage(msg, incoming = false) {
|
|
156
164
|
this._lastMessage = msg.id;
|
|
157
165
|
if (incoming) this._lastReceivedMessage = msg.id;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Deque, AsyncLock,
|
|
2
|
-
import { MtArgumentError, MtTimeoutError } from "../../types/errors.js";
|
|
1
|
+
import { Deque, AsyncLock, timers, Deferred, unknownToError } from "@fuman/utils";
|
|
2
|
+
import { MtArgumentError, MtcuteError, MtTimeoutError } from "../../types/errors.js";
|
|
3
3
|
import { getMarkedPeerId } from "../../utils/peer-utils.js";
|
|
4
4
|
import { getPeerDialogs } from "../methods/dialogs/get-peer-dialogs.js";
|
|
5
5
|
import { readHistory } from "../methods/messages/read-history.js";
|
|
@@ -138,6 +138,10 @@ class Conversation {
|
|
|
138
138
|
state.pendingConversations.delete(this._chatId);
|
|
139
139
|
}
|
|
140
140
|
state.hasConversations = Boolean(state.pendingConversations.size);
|
|
141
|
+
const error = new MtcuteError("Conversation stopped");
|
|
142
|
+
for (const it of this._queuedNewMessage) this._rejectPending(it, error);
|
|
143
|
+
for (const it of this._pendingEditMessage.values()) this._rejectPending(it, error);
|
|
144
|
+
for (const it of this._pendingRead.values()) this._rejectPending(it, error);
|
|
141
145
|
this._queuedNewMessage.clear();
|
|
142
146
|
this._pendingNewMessages.clear();
|
|
143
147
|
this._pendingEditMessage.clear();
|
|
@@ -145,6 +149,10 @@ class Conversation {
|
|
|
145
149
|
this._pendingRead.clear();
|
|
146
150
|
this._started = false;
|
|
147
151
|
}
|
|
152
|
+
_rejectPending(it, error) {
|
|
153
|
+
if (it.timeout) timers.clearTimeout(it.timeout);
|
|
154
|
+
it.promise.reject(error);
|
|
155
|
+
}
|
|
148
156
|
_recordMessage(msg, incoming = false) {
|
|
149
157
|
this._lastMessage = msg.id;
|
|
150
158
|
if (incoming) this._lastReceivedMessage = msg.id;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,103 @@
|
|
|
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 memoize = require("../../utils/memoize.cjs");
|
|
9
|
+
const peer = require("../peers/peer.cjs");
|
|
10
|
+
const user = require("../peers/user.cjs");
|
|
11
|
+
const messageEntity = require("./message-entity.cjs");
|
|
12
|
+
const messageMedia = require("./message-media.cjs");
|
|
13
|
+
const inspectable = require("../../utils/inspectable.cjs");
|
|
14
|
+
class EphemeralMessage {
|
|
15
|
+
constructor(raw, _peers) {
|
|
16
|
+
this.raw = raw;
|
|
17
|
+
this._peers = _peers;
|
|
18
|
+
}
|
|
19
|
+
/** ID of this message (unique within the chat and receiver) */
|
|
20
|
+
get id() {
|
|
21
|
+
return this.raw.id;
|
|
22
|
+
}
|
|
23
|
+
/** Whether this message is outgoing */
|
|
24
|
+
get isOutgoing() {
|
|
25
|
+
return this.raw.out;
|
|
26
|
+
}
|
|
27
|
+
/** Sender of this message (usually the bot) */
|
|
28
|
+
get sender() {
|
|
29
|
+
return peer.parsePeer(this.raw.fromId, this._peers);
|
|
30
|
+
}
|
|
31
|
+
/** Chat where this message was sent */
|
|
32
|
+
get chat() {
|
|
33
|
+
return peer.parsePeer(this.raw.peerId, this._peers);
|
|
34
|
+
}
|
|
35
|
+
/** ID of the user this message is visible to */
|
|
36
|
+
get receiverId() {
|
|
37
|
+
return this.raw.receiverId;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* User this message is visible to.
|
|
41
|
+
*
|
|
42
|
+
* Might not be available in some cases (e.g. in the message
|
|
43
|
+
* returned from {@link TelegramClient.sendEphemeralMessage},
|
|
44
|
+
* since the server does not send the receiver entity there) —
|
|
45
|
+
* use {@link receiverId} instead.
|
|
46
|
+
*/
|
|
47
|
+
get receiver() {
|
|
48
|
+
const user$1 = this._peers.users.get(this.raw.receiverId);
|
|
49
|
+
if (!user$1 || user$1._ === "userEmpty") return null;
|
|
50
|
+
return new user.User(user$1);
|
|
51
|
+
}
|
|
52
|
+
/** ID of the topic this message was sent to, if any */
|
|
53
|
+
get topicId() {
|
|
54
|
+
return this.raw.topMsgId ?? null;
|
|
55
|
+
}
|
|
56
|
+
/** Date when this message was sent */
|
|
57
|
+
get date() {
|
|
58
|
+
return new Date(this.raw.date * 1e3);
|
|
59
|
+
}
|
|
60
|
+
/** Message text */
|
|
61
|
+
get text() {
|
|
62
|
+
return this.raw.message;
|
|
63
|
+
}
|
|
64
|
+
/** Message text/caption entities (may be empty) */
|
|
65
|
+
get entities() {
|
|
66
|
+
const entities = [];
|
|
67
|
+
if (this.raw.entities?.length) {
|
|
68
|
+
for (const ent of this.raw.entities) {
|
|
69
|
+
entities.push(new messageEntity.MessageEntity(ent, this.raw.message));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return entities;
|
|
73
|
+
}
|
|
74
|
+
get textWithEntities() {
|
|
75
|
+
return {
|
|
76
|
+
text: this.raw.message,
|
|
77
|
+
entities: this.raw.entities
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Message media. `null` for text-only messages
|
|
82
|
+
* and for unsupported media types.
|
|
83
|
+
*
|
|
84
|
+
* For unsupported media types, use `.raw.media` directly.
|
|
85
|
+
*/
|
|
86
|
+
get media() {
|
|
87
|
+
if (!this.raw.media || this.raw.media._ === "messageMediaEmpty") {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return messageMedia._messageMediaFromTl(this._peers, this.raw.media);
|
|
91
|
+
}
|
|
92
|
+
/** Reply markup attached to this message, if any */
|
|
93
|
+
get replyMarkup() {
|
|
94
|
+
return this.raw.replyMarkup ?? null;
|
|
95
|
+
}
|
|
96
|
+
/** Information about the message this message is a reply to, if any */
|
|
97
|
+
get replyTo() {
|
|
98
|
+
return this.raw.replyTo ?? null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const EphemeralMessage$1 = /* @__PURE__ */ memoize.memoizeGetters(EphemeralMessage, ["sender", "chat", "receiver", "entities", "media"]);
|
|
102
|
+
const EphemeralMessage$2 = /* @__PURE__ */ inspectable.makeInspectable(EphemeralMessage$1);
|
|
103
|
+
exports.EphemeralMessage = EphemeralMessage$2;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { tl } from '../../../tl/index.js';
|
|
2
|
+
import { TextWithEntities } from '../misc/index.js';
|
|
3
|
+
import { Peer } from '../peers/peer.js';
|
|
4
|
+
import { PeersIndex } from '../peers/peers-index.js';
|
|
5
|
+
import { MessageMedia } from './message-media.js';
|
|
6
|
+
import { User } from '../peers/user.js';
|
|
7
|
+
import { MessageEntity } from './message-entity.js';
|
|
8
|
+
/**
|
|
9
|
+
* An ephemeral message — a message sent by a bot that is only visible
|
|
10
|
+
* to a single user in a chat and is not persisted in the chat history.
|
|
11
|
+
*/
|
|
12
|
+
export declare class EphemeralMessage {
|
|
13
|
+
readonly raw: tl.RawEphemeralMessage;
|
|
14
|
+
readonly _peers: PeersIndex;
|
|
15
|
+
constructor(raw: tl.RawEphemeralMessage, _peers: PeersIndex);
|
|
16
|
+
/** ID of this message (unique within the chat and receiver) */
|
|
17
|
+
get id(): number;
|
|
18
|
+
/** Whether this message is outgoing */
|
|
19
|
+
get isOutgoing(): boolean;
|
|
20
|
+
/** Sender of this message (usually the bot) */
|
|
21
|
+
get sender(): Peer;
|
|
22
|
+
/** Chat where this message was sent */
|
|
23
|
+
get chat(): Peer;
|
|
24
|
+
/** ID of the user this message is visible to */
|
|
25
|
+
get receiverId(): number;
|
|
26
|
+
/**
|
|
27
|
+
* User this message is visible to.
|
|
28
|
+
*
|
|
29
|
+
* Might not be available in some cases (e.g. in the message
|
|
30
|
+
* returned from {@link TelegramClient.sendEphemeralMessage},
|
|
31
|
+
* since the server does not send the receiver entity there) —
|
|
32
|
+
* use {@link receiverId} instead.
|
|
33
|
+
*/
|
|
34
|
+
get receiver(): User | null;
|
|
35
|
+
/** ID of the topic this message was sent to, if any */
|
|
36
|
+
get topicId(): number | null;
|
|
37
|
+
/** Date when this message was sent */
|
|
38
|
+
get date(): Date;
|
|
39
|
+
/** Message text */
|
|
40
|
+
get text(): string;
|
|
41
|
+
/** Message text/caption entities (may be empty) */
|
|
42
|
+
get entities(): ReadonlyArray<MessageEntity>;
|
|
43
|
+
get textWithEntities(): TextWithEntities;
|
|
44
|
+
/**
|
|
45
|
+
* Message media. `null` for text-only messages
|
|
46
|
+
* and for unsupported media types.
|
|
47
|
+
*
|
|
48
|
+
* For unsupported media types, use `.raw.media` directly.
|
|
49
|
+
*/
|
|
50
|
+
get media(): MessageMedia;
|
|
51
|
+
/** Reply markup attached to this message, if any */
|
|
52
|
+
get replyMarkup(): tl.TypeReplyMarkup | null;
|
|
53
|
+
/** Information about the message this message is a reply to, if any */
|
|
54
|
+
get replyTo(): tl.TypeMessageReplyHeader | null;
|
|
55
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { tl } from '../../../tl/index.js';
|
|
2
|
+
import { TextWithEntities } from '../misc/index.js';
|
|
3
|
+
import { Peer } from '../peers/peer.js';
|
|
4
|
+
import { PeersIndex } from '../peers/peers-index.js';
|
|
5
|
+
import { MessageMedia } from './message-media.js';
|
|
6
|
+
import { User } from '../peers/user.js';
|
|
7
|
+
import { MessageEntity } from './message-entity.js';
|
|
8
|
+
/**
|
|
9
|
+
* An ephemeral message — a message sent by a bot that is only visible
|
|
10
|
+
* to a single user in a chat and is not persisted in the chat history.
|
|
11
|
+
*/
|
|
12
|
+
export declare class EphemeralMessage {
|
|
13
|
+
readonly raw: tl.RawEphemeralMessage;
|
|
14
|
+
readonly _peers: PeersIndex;
|
|
15
|
+
constructor(raw: tl.RawEphemeralMessage, _peers: PeersIndex);
|
|
16
|
+
/** ID of this message (unique within the chat and receiver) */
|
|
17
|
+
get id(): number;
|
|
18
|
+
/** Whether this message is outgoing */
|
|
19
|
+
get isOutgoing(): boolean;
|
|
20
|
+
/** Sender of this message (usually the bot) */
|
|
21
|
+
get sender(): Peer;
|
|
22
|
+
/** Chat where this message was sent */
|
|
23
|
+
get chat(): Peer;
|
|
24
|
+
/** ID of the user this message is visible to */
|
|
25
|
+
get receiverId(): number;
|
|
26
|
+
/**
|
|
27
|
+
* User this message is visible to.
|
|
28
|
+
*
|
|
29
|
+
* Might not be available in some cases (e.g. in the message
|
|
30
|
+
* returned from {@link TelegramClient.sendEphemeralMessage},
|
|
31
|
+
* since the server does not send the receiver entity there) —
|
|
32
|
+
* use {@link receiverId} instead.
|
|
33
|
+
*/
|
|
34
|
+
get receiver(): User | null;
|
|
35
|
+
/** ID of the topic this message was sent to, if any */
|
|
36
|
+
get topicId(): number | null;
|
|
37
|
+
/** Date when this message was sent */
|
|
38
|
+
get date(): Date;
|
|
39
|
+
/** Message text */
|
|
40
|
+
get text(): string;
|
|
41
|
+
/** Message text/caption entities (may be empty) */
|
|
42
|
+
get entities(): ReadonlyArray<MessageEntity>;
|
|
43
|
+
get textWithEntities(): TextWithEntities;
|
|
44
|
+
/**
|
|
45
|
+
* Message media. `null` for text-only messages
|
|
46
|
+
* and for unsupported media types.
|
|
47
|
+
*
|
|
48
|
+
* For unsupported media types, use `.raw.media` directly.
|
|
49
|
+
*/
|
|
50
|
+
get media(): MessageMedia;
|
|
51
|
+
/** Reply markup attached to this message, if any */
|
|
52
|
+
get replyMarkup(): tl.TypeReplyMarkup | null;
|
|
53
|
+
/** Information about the message this message is a reply to, if any */
|
|
54
|
+
get replyTo(): tl.TypeMessageReplyHeader | null;
|
|
55
|
+
}
|