@mtkruto/node 0.1.138 → 0.1.140
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/esm/3_types.d.ts +10 -36
- package/esm/3_types.js +10 -36
- package/esm/4_constants.d.ts +1 -1
- package/esm/4_constants.js +1 -1
- package/esm/5_client.d.ts +1 -1
- package/esm/5_client.js +1 -1
- package/esm/_dnt.polyfills.d.ts +6 -0
- package/esm/client/0_filters.d.ts +60 -0
- package/esm/client/0_filters.js +27 -0
- package/esm/client/0_message.js +2 -2
- package/esm/client/{3_params.d.ts → 0_params.d.ts} +30 -33
- package/esm/client/0_types.d.ts +39 -0
- package/esm/client/0_types.js +2 -0
- package/esm/client/0_utilities.d.ts +1 -47
- package/esm/client/0_utilities.js +0 -27
- package/esm/client/1_composer.d.ts +1 -1
- package/esm/client/1_composer.js +1 -1
- package/esm/client/1_file_manager.d.ts +10 -0
- package/esm/client/1_file_manager.js +241 -0
- package/esm/client/1_update_manager.d.ts +18 -0
- package/esm/client/1_update_manager.js +553 -0
- package/esm/client/2_message_manager.d.ts +40 -0
- package/esm/client/2_message_manager.js +621 -0
- package/esm/client/3_chat_list_manager.d.ts +21 -0
- package/esm/client/3_chat_list_manager.js +353 -0
- package/esm/client/3_reaction_manager.d.ts +16 -0
- package/esm/client/3_reaction_manager.js +61 -0
- package/esm/client/4_client.d.ts +187 -60
- package/esm/client/4_client.js +492 -1699
- package/esm/connection/1_connection_web_socket.js +6 -6
- package/esm/deps/raw.githubusercontent.com/MTKruto/debug/main/deps.d.ts +1 -1
- package/esm/deps/raw.githubusercontent.com/MTKruto/debug/main/deps.js +1 -1
- package/esm/deps/raw.githubusercontent.com/MTKruto/object-inspect/main/index.d.ts +1 -0
- package/esm/deps/raw.githubusercontent.com/MTKruto/object-inspect/main/index.js +524 -0
- package/esm/mod.d.ts +1 -0
- package/esm/mod.js +1 -0
- package/esm/storage/0_storage.d.ts +5 -3
- package/esm/storage/0_storage.js +14 -4
- package/esm/tl/1_tl_object.d.ts +1 -0
- package/esm/tl/1_tl_object.js +24 -0
- package/esm/types/0_bot_command.d.ts +1 -0
- package/esm/types/0_chat_member_rights.d.ts +37 -0
- package/esm/types/0_chat_photo.d.ts +4 -4
- package/esm/types/0_file_source.d.ts +5 -0
- package/esm/types/0_giveaway_parameters.js +2 -1
- package/esm/types/0_id.d.ts +4 -0
- package/esm/types/0_message_entity.d.ts +20 -20
- package/esm/types/1__getters.d.ts +2 -2
- package/esm/types/1_animation.d.ts +1 -1
- package/esm/types/1_bot_command_scope.d.ts +5 -4
- package/esm/types/1_chat_p.d.ts +5 -6
- package/esm/types/1_document.d.ts +1 -0
- package/esm/types/1_input_message_content.d.ts +88 -0
- package/esm/types/1_photo.d.ts +1 -1
- package/esm/types/1_sticker.d.ts +1 -1
- package/esm/types/1_user.d.ts +1 -1
- package/esm/types/1_video.d.ts +1 -1
- package/esm/types/1_video_note.d.ts +1 -1
- package/esm/types/2_inline_keyboard_button.d.ts +10 -10
- package/esm/types/2_message_reaction_count.d.ts +3 -0
- package/esm/types/2_message_reaction_count.js +17 -1
- package/esm/types/2_message_reactions.d.ts +15 -0
- package/esm/types/2_message_reactions.js +37 -0
- package/esm/types/3_reply_markup.d.ts +42 -0
- package/esm/types/3_reply_markup.js +117 -0
- package/esm/types/4_inline_query_result.d.ts +193 -0
- package/esm/types/{5_inline_query_result.js → 4_inline_query_result.js} +2 -2
- package/esm/types/4_message.d.ts +36 -39
- package/esm/types/4_message.js +7 -24
- package/esm/types/5_callback_query.d.ts +2 -1
- package/esm/types/5_chat.d.ts +8 -5
- package/esm/types/6_update.d.ts +12 -2
- package/esm/utilities/0_buffer.js +9 -6
- package/esm/utilities/0_object.d.ts +1 -1
- package/esm/utilities/0_object.js +1 -6
- package/esm/utilities/1_misc.d.ts +2 -0
- package/esm/utilities/1_misc.js +6 -0
- package/package.json +1 -2
- package/script/3_types.d.ts +10 -36
- package/script/3_types.js +10 -36
- package/script/4_constants.d.ts +1 -1
- package/script/4_constants.js +1 -1
- package/script/5_client.d.ts +1 -1
- package/script/5_client.js +1 -1
- package/script/_dnt.polyfills.d.ts +6 -0
- package/script/client/0_filters.d.ts +60 -0
- package/script/client/0_filters.js +31 -0
- package/script/client/0_message.js +1 -1
- package/script/client/{3_params.d.ts → 0_params.d.ts} +30 -33
- package/script/client/0_types.d.ts +39 -0
- package/script/client/0_types.js +6 -0
- package/script/client/0_utilities.d.ts +1 -47
- package/script/client/0_utilities.js +1 -29
- package/script/client/1_composer.d.ts +1 -1
- package/script/client/1_composer.js +2 -2
- package/script/client/1_file_manager.d.ts +10 -0
- package/script/client/1_file_manager.js +245 -0
- package/script/client/1_update_manager.d.ts +18 -0
- package/script/client/1_update_manager.js +557 -0
- package/script/client/2_message_manager.d.ts +40 -0
- package/script/client/2_message_manager.js +625 -0
- package/script/client/3_chat_list_manager.d.ts +21 -0
- package/script/client/3_chat_list_manager.js +357 -0
- package/script/client/3_reaction_manager.d.ts +16 -0
- package/script/client/3_reaction_manager.js +65 -0
- package/script/client/4_client.d.ts +187 -60
- package/script/client/4_client.js +491 -1699
- package/script/connection/1_connection_web_socket.js +5 -5
- package/script/deps/raw.githubusercontent.com/MTKruto/debug/main/deps.d.ts +1 -1
- package/script/deps/raw.githubusercontent.com/MTKruto/debug/main/deps.js +2 -2
- package/script/deps/raw.githubusercontent.com/MTKruto/object-inspect/main/index.d.ts +1 -0
- package/script/deps/raw.githubusercontent.com/MTKruto/object-inspect/main/index.js +550 -0
- package/script/mod.d.ts +1 -0
- package/script/mod.js +1 -0
- package/script/storage/0_storage.d.ts +5 -3
- package/script/storage/0_storage.js +14 -4
- package/script/tl/1_tl_object.d.ts +1 -0
- package/script/tl/1_tl_object.js +24 -0
- package/script/types/0_bot_command.d.ts +1 -0
- package/script/types/0_chat_member_rights.d.ts +37 -0
- package/script/types/0_chat_photo.d.ts +4 -4
- package/script/types/0_file_source.d.ts +5 -0
- package/script/types/0_giveaway_parameters.js +2 -1
- package/script/types/0_id.d.ts +4 -0
- package/script/types/0_message_entity.d.ts +20 -20
- package/script/types/1__getters.d.ts +2 -2
- package/script/types/1_animation.d.ts +1 -1
- package/script/types/1_bot_command_scope.d.ts +5 -4
- package/script/types/1_chat_p.d.ts +5 -6
- package/script/types/1_document.d.ts +1 -0
- package/script/types/1_input_message_content.d.ts +88 -0
- package/script/types/1_photo.d.ts +1 -1
- package/script/types/1_sticker.d.ts +1 -1
- package/script/types/1_user.d.ts +1 -1
- package/script/types/1_video.d.ts +1 -1
- package/script/types/1_video_note.d.ts +1 -1
- package/script/types/2_inline_keyboard_button.d.ts +10 -10
- package/script/types/2_message_reaction_count.d.ts +3 -0
- package/script/types/2_message_reaction_count.js +19 -0
- package/script/types/2_message_reactions.d.ts +15 -0
- package/script/types/2_message_reactions.js +41 -0
- package/script/types/3_reply_markup.d.ts +42 -0
- package/script/types/3_reply_markup.js +122 -0
- package/script/types/4_inline_query_result.d.ts +193 -0
- package/script/types/{5_inline_query_result.js → 4_inline_query_result.js} +3 -3
- package/script/types/4_message.d.ts +36 -39
- package/script/types/4_message.js +6 -23
- package/script/types/5_callback_query.d.ts +2 -1
- package/script/types/5_chat.d.ts +8 -5
- package/script/types/6_update.d.ts +12 -2
- package/script/utilities/0_buffer.js +9 -6
- package/script/utilities/0_object.d.ts +1 -1
- package/script/utilities/0_object.js +1 -6
- package/script/utilities/1_misc.d.ts +2 -0
- package/script/utilities/1_misc.js +9 -1
- package/esm/types/0_chat_id.d.ts +0 -4
- package/esm/types/0_force_reply.d.ts +0 -12
- package/esm/types/0_force_reply.js +0 -17
- package/esm/types/0_input_contact_message_content.d.ts +0 -11
- package/esm/types/0_input_location_message_content.d.ts +0 -15
- package/esm/types/0_input_venue_message_content.d.ts +0 -19
- package/esm/types/0_reply_keyboard_remove.d.ts +0 -10
- package/esm/types/0_reply_keyboard_remove.js +0 -8
- package/esm/types/1_input_invoice_message_content.d.ts +0 -23
- package/esm/types/1_input_text_message_content.d.ts +0 -8
- package/esm/types/1_input_text_message_content.js +0 -1
- package/esm/types/2_input_message_content.d.ts +0 -6
- package/esm/types/2_input_message_content.js +0 -1
- package/esm/types/2_reply_keyboard_markup.d.ts +0 -12
- package/esm/types/2_reply_keyboard_markup.js +0 -37
- package/esm/types/3_inline_keyboard_markup.d.ts +0 -8
- package/esm/types/3_inline_keyboard_markup.js +0 -24
- package/esm/types/4_inline_query_result_article.d.ts +0 -15
- package/esm/types/4_inline_query_result_article.js +0 -1
- package/esm/types/4_inline_query_result_audio.d.ts +0 -17
- package/esm/types/4_inline_query_result_audio.js +0 -1
- package/esm/types/4_inline_query_result_cached_audio.d.ts +0 -14
- package/esm/types/4_inline_query_result_cached_audio.js +0 -1
- package/esm/types/4_inline_query_result_cached_document.d.ts +0 -15
- package/esm/types/4_inline_query_result_cached_document.js +0 -1
- package/esm/types/4_inline_query_result_cached_gif.d.ts +0 -15
- package/esm/types/4_inline_query_result_cached_gif.js +0 -1
- package/esm/types/4_inline_query_result_cached_mpeg4_gif.d.ts +0 -15
- package/esm/types/4_inline_query_result_cached_mpeg4_gif.js +0 -1
- package/esm/types/4_inline_query_result_cached_photo.d.ts +0 -16
- package/esm/types/4_inline_query_result_cached_photo.js +0 -1
- package/esm/types/4_inline_query_result_cached_sticker.d.ts +0 -9
- package/esm/types/4_inline_query_result_cached_sticker.js +0 -1
- package/esm/types/4_inline_query_result_cached_video.d.ts +0 -16
- package/esm/types/4_inline_query_result_cached_video.js +0 -1
- package/esm/types/4_inline_query_result_cached_voice.d.ts +0 -15
- package/esm/types/4_inline_query_result_cached_voice.js +0 -1
- package/esm/types/4_inline_query_result_contact.d.ts +0 -15
- package/esm/types/4_inline_query_result_contact.js +0 -1
- package/esm/types/4_inline_query_result_document.d.ts +0 -18
- package/esm/types/4_inline_query_result_document.js +0 -1
- package/esm/types/4_inline_query_result_game.d.ts +0 -7
- package/esm/types/4_inline_query_result_game.js +0 -1
- package/esm/types/4_inline_query_result_gif.d.ts +0 -20
- package/esm/types/4_inline_query_result_gif.js +0 -1
- package/esm/types/4_inline_query_result_location.d.ts +0 -18
- package/esm/types/4_inline_query_result_location.js +0 -1
- package/esm/types/4_inline_query_result_mpeg4_gif.d.ts +0 -20
- package/esm/types/4_inline_query_result_mpeg4_gif.js +0 -1
- package/esm/types/4_inline_query_result_photo.d.ts +0 -19
- package/esm/types/4_inline_query_result_photo.js +0 -1
- package/esm/types/4_inline_query_result_venue.d.ts +0 -19
- package/esm/types/4_inline_query_result_venue.js +0 -1
- package/esm/types/4_inline_query_result_video.d.ts +0 -21
- package/esm/types/4_inline_query_result_video.js +0 -1
- package/esm/types/4_inline_query_result_voice.d.ts +0 -16
- package/esm/types/4_inline_query_result_voice.js +0 -1
- package/esm/types/4_reply_markup.d.ts +0 -7
- package/esm/types/4_reply_markup.js +0 -22
- package/esm/types/5_inline_query_result.d.ts +0 -28
- package/script/types/0_chat_id.d.ts +0 -4
- package/script/types/0_force_reply.d.ts +0 -12
- package/script/types/0_force_reply.js +0 -22
- package/script/types/0_input_contact_message_content.d.ts +0 -11
- package/script/types/0_input_location_message_content.d.ts +0 -15
- package/script/types/0_input_venue_message_content.d.ts +0 -19
- package/script/types/0_reply_keyboard_remove.d.ts +0 -10
- package/script/types/0_reply_keyboard_remove.js +0 -13
- package/script/types/1_input_invoice_message_content.d.ts +0 -23
- package/script/types/1_input_text_message_content.d.ts +0 -8
- package/script/types/1_input_text_message_content.js +0 -2
- package/script/types/2_input_message_content.d.ts +0 -6
- package/script/types/2_input_message_content.js +0 -2
- package/script/types/2_reply_keyboard_markup.d.ts +0 -12
- package/script/types/2_reply_keyboard_markup.js +0 -42
- package/script/types/3_inline_keyboard_markup.d.ts +0 -8
- package/script/types/3_inline_keyboard_markup.js +0 -29
- package/script/types/4_inline_query_result_article.d.ts +0 -15
- package/script/types/4_inline_query_result_article.js +0 -2
- package/script/types/4_inline_query_result_audio.d.ts +0 -17
- package/script/types/4_inline_query_result_audio.js +0 -2
- package/script/types/4_inline_query_result_cached_audio.d.ts +0 -14
- package/script/types/4_inline_query_result_cached_audio.js +0 -2
- package/script/types/4_inline_query_result_cached_document.d.ts +0 -15
- package/script/types/4_inline_query_result_cached_document.js +0 -2
- package/script/types/4_inline_query_result_cached_gif.d.ts +0 -15
- package/script/types/4_inline_query_result_cached_gif.js +0 -2
- package/script/types/4_inline_query_result_cached_mpeg4_gif.d.ts +0 -15
- package/script/types/4_inline_query_result_cached_mpeg4_gif.js +0 -2
- package/script/types/4_inline_query_result_cached_photo.d.ts +0 -16
- package/script/types/4_inline_query_result_cached_photo.js +0 -2
- package/script/types/4_inline_query_result_cached_sticker.d.ts +0 -9
- package/script/types/4_inline_query_result_cached_sticker.js +0 -2
- package/script/types/4_inline_query_result_cached_video.d.ts +0 -16
- package/script/types/4_inline_query_result_cached_video.js +0 -2
- package/script/types/4_inline_query_result_cached_voice.d.ts +0 -15
- package/script/types/4_inline_query_result_cached_voice.js +0 -2
- package/script/types/4_inline_query_result_contact.d.ts +0 -15
- package/script/types/4_inline_query_result_contact.js +0 -2
- package/script/types/4_inline_query_result_document.d.ts +0 -18
- package/script/types/4_inline_query_result_document.js +0 -2
- package/script/types/4_inline_query_result_game.d.ts +0 -7
- package/script/types/4_inline_query_result_game.js +0 -2
- package/script/types/4_inline_query_result_gif.d.ts +0 -20
- package/script/types/4_inline_query_result_gif.js +0 -2
- package/script/types/4_inline_query_result_location.d.ts +0 -18
- package/script/types/4_inline_query_result_location.js +0 -2
- package/script/types/4_inline_query_result_mpeg4_gif.d.ts +0 -20
- package/script/types/4_inline_query_result_mpeg4_gif.js +0 -2
- package/script/types/4_inline_query_result_photo.d.ts +0 -19
- package/script/types/4_inline_query_result_photo.js +0 -2
- package/script/types/4_inline_query_result_venue.d.ts +0 -19
- package/script/types/4_inline_query_result_venue.js +0 -2
- package/script/types/4_inline_query_result_video.d.ts +0 -21
- package/script/types/4_inline_query_result_video.js +0 -2
- package/script/types/4_inline_query_result_voice.d.ts +0 -16
- package/script/types/4_inline_query_result_voice.js +0 -2
- package/script/types/4_reply_markup.d.ts +0 -7
- package/script/types/4_reply_markup.js +0 -26
- package/script/types/5_inline_query_result.d.ts +0 -28
- /package/esm/{client/3_params.js → _dnt.polyfills.js} +0 -0
- /package/esm/{types/0_chat_id.js → client/0_params.js} +0 -0
- /package/esm/types/{0_input_contact_message_content.js → 0_chat_member_rights.js} +0 -0
- /package/esm/types/{0_input_location_message_content.js → 0_file_source.js} +0 -0
- /package/esm/types/{0_input_venue_message_content.js → 0_id.js} +0 -0
- /package/esm/types/{1_input_invoice_message_content.js → 1_input_message_content.js} +0 -0
- /package/script/{client/3_params.js → _dnt.polyfills.js} +0 -0
- /package/script/{types/0_chat_id.js → client/0_params.js} +0 -0
- /package/script/types/{0_input_contact_message_content.js → 0_chat_member_rights.js} +0 -0
- /package/script/types/{0_input_location_message_content.js → 0_file_source.js} +0 -0
- /package/script/types/{0_input_venue_message_content.js → 0_id.js} +0 -0
- /package/script/types/{1_input_invoice_message_content.js → 1_input_message_content.js} +0 -0
|
@@ -0,0 +1,621 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _MessageManager_instances, _MessageManager_c, _MessageManager_parseText, _MessageManager_updatesToMessages, _MessageManager_usernameResolver, _MessageManager_constructReplyMarkup, _MessageManager_resolveSendAs, _MessageManager_constructReplyTo, _MessageManager_sendDocumentInner, _MessageManager_sendMedia, _MessageManager_resolveFileId;
|
|
13
|
+
import { contentType, debug } from "../0_deps.js";
|
|
14
|
+
import { getRandomId, toUnixTimestamp, UNREACHABLE } from "../1_utilities.js";
|
|
15
|
+
import { as, peerToChatId, types } from "../2_tl.js";
|
|
16
|
+
import { assertMessageType, constructMessage as constructMessage_, FileID, FileType, messageEntityToTlObject, replyMarkupToTlObject } from "../3_types.js";
|
|
17
|
+
import { STICKER_SET_NAME_TTL } from "../4_constants.js";
|
|
18
|
+
import { parseHtml } from "./0_html.js";
|
|
19
|
+
import { getFileContents, isHttpUrl } from "./0_utilities.js";
|
|
20
|
+
const d = debug("MessageManager");
|
|
21
|
+
export class MessageManager {
|
|
22
|
+
constructor(c) {
|
|
23
|
+
_MessageManager_instances.add(this);
|
|
24
|
+
_MessageManager_c.set(this, void 0);
|
|
25
|
+
_MessageManager_usernameResolver.set(this, async (v) => {
|
|
26
|
+
const inputPeer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(v).then((v) => v[as](types.InputPeerUser));
|
|
27
|
+
return new types.InputUser(inputPeer);
|
|
28
|
+
});
|
|
29
|
+
__classPrivateFieldSet(this, _MessageManager_c, c, "f");
|
|
30
|
+
}
|
|
31
|
+
async getMessages(chatId, messageIds) {
|
|
32
|
+
const peer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
33
|
+
let messages_ = new Array();
|
|
34
|
+
const chatId_ = peerToChatId(peer);
|
|
35
|
+
let shouldFetch = false;
|
|
36
|
+
for (const messageId of messageIds) {
|
|
37
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_c, "f").storage.getMessage(chatId_, messageId);
|
|
38
|
+
if (message == null) {
|
|
39
|
+
messages_ = [];
|
|
40
|
+
shouldFetch = true;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
messages_.push(message);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (shouldFetch) {
|
|
48
|
+
if (peer instanceof types.InputPeerChannel) {
|
|
49
|
+
messages_ = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.channels.getMessages({
|
|
50
|
+
channel: new types.InputChannel(peer),
|
|
51
|
+
id: messageIds.map((v) => new types.InputMessageID({ id: v })),
|
|
52
|
+
}).then((v) => v[as](types.messages.ChannelMessages).messages);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
messages_ = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.getMessages({
|
|
56
|
+
id: messageIds.map((v) => new types.InputMessageID({ id: v })),
|
|
57
|
+
}).then((v) => v[as](types.messages.Messages).messages);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const messages = new Array();
|
|
61
|
+
for (const message_ of messages_) {
|
|
62
|
+
if (message_ instanceof types.MessageEmpty) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const message = await this.constructMessage(message_);
|
|
66
|
+
messages.push(message);
|
|
67
|
+
}
|
|
68
|
+
return messages;
|
|
69
|
+
}
|
|
70
|
+
async getMessageWithReply(chatId, messageId) {
|
|
71
|
+
const message = await this.getMessage(chatId, messageId);
|
|
72
|
+
if (message != null && message.replyToMessageId) {
|
|
73
|
+
message.replyToMessage = await this.getMessage(chatId, message.replyToMessageId) ?? undefined;
|
|
74
|
+
}
|
|
75
|
+
return message;
|
|
76
|
+
}
|
|
77
|
+
async getMessage(chatId, messageId) {
|
|
78
|
+
const messages = await this.getMessages(chatId, [messageId]);
|
|
79
|
+
return messages[0] ?? null;
|
|
80
|
+
}
|
|
81
|
+
async getStickerSetName(inputStickerSet, hash = 0) {
|
|
82
|
+
const maybeStickerSetName = await __classPrivateFieldGet(this, _MessageManager_c, "f").storage.getStickerSetName(inputStickerSet.id, inputStickerSet.access_hash);
|
|
83
|
+
if (maybeStickerSetName != null && Date.now() - maybeStickerSetName[1].getTime() < STICKER_SET_NAME_TTL) {
|
|
84
|
+
return maybeStickerSetName[0];
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
const stickerSet = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.getStickerSet({ stickerset: inputStickerSet, hash });
|
|
88
|
+
const name = stickerSet[as](types.messages.StickerSet).set.short_name;
|
|
89
|
+
await __classPrivateFieldGet(this, _MessageManager_c, "f").storage.updateStickerSetName(inputStickerSet.id, inputStickerSet.access_hash, name);
|
|
90
|
+
return name;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async constructMessage(message_, r) {
|
|
94
|
+
return await constructMessage_(message_, __classPrivateFieldGet(this, _MessageManager_c, "f").getEntity, this.getMessage.bind(this), this.getStickerSetName.bind(this), r);
|
|
95
|
+
}
|
|
96
|
+
async forwardMessages(from, to, messageIds, params) {
|
|
97
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.forwardMessages({
|
|
98
|
+
from_peer: await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(from),
|
|
99
|
+
to_peer: await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(to),
|
|
100
|
+
id: messageIds,
|
|
101
|
+
random_id: messageIds.map(() => getRandomId()),
|
|
102
|
+
silent: params?.disableNotification || undefined,
|
|
103
|
+
top_msg_id: params?.messageThreadId,
|
|
104
|
+
noforwards: params?.disableNotification || undefined,
|
|
105
|
+
send_as: params?.sendAs ? await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(params.sendAs) : undefined,
|
|
106
|
+
drop_author: params?.dropSenderName || undefined,
|
|
107
|
+
drop_media_captions: params?.dropCaption || undefined,
|
|
108
|
+
});
|
|
109
|
+
return await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_updatesToMessages).call(this, to, result);
|
|
110
|
+
}
|
|
111
|
+
async getHistory(chatId, params) {
|
|
112
|
+
let limit = params?.limit ?? 100;
|
|
113
|
+
if (limit <= 0) {
|
|
114
|
+
limit = 1;
|
|
115
|
+
}
|
|
116
|
+
else if (limit > 100) {
|
|
117
|
+
limit = 100;
|
|
118
|
+
}
|
|
119
|
+
let offsetId = params?.after?.id ?? 0;
|
|
120
|
+
if (offsetId < 0) {
|
|
121
|
+
offsetId = 0;
|
|
122
|
+
}
|
|
123
|
+
const peer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
124
|
+
const messages = new Array();
|
|
125
|
+
for (const message_ of await __classPrivateFieldGet(this, _MessageManager_c, "f").storage.getHistory(peerToChatId(peer), offsetId, limit)) {
|
|
126
|
+
const message = await this.constructMessage(message_, false);
|
|
127
|
+
messages.push(message);
|
|
128
|
+
}
|
|
129
|
+
if (messages.length < limit) {
|
|
130
|
+
d("have only %d messages but need %d more", messages.length, limit - messages.length);
|
|
131
|
+
if (messages.length > 0) {
|
|
132
|
+
offsetId = messages[messages.length - 1].id; // TODO: track id of oldest message and don't send requests for it
|
|
133
|
+
}
|
|
134
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.getHistory({
|
|
135
|
+
peer: peer,
|
|
136
|
+
offset_id: offsetId,
|
|
137
|
+
offset_date: 0,
|
|
138
|
+
add_offset: 0,
|
|
139
|
+
limit,
|
|
140
|
+
max_id: 0,
|
|
141
|
+
min_id: 0,
|
|
142
|
+
hash: 0n,
|
|
143
|
+
});
|
|
144
|
+
if (!("messages" in result)) {
|
|
145
|
+
UNREACHABLE();
|
|
146
|
+
}
|
|
147
|
+
for (const message_ of result.messages) {
|
|
148
|
+
const message = await this.constructMessage(message_, false);
|
|
149
|
+
messages.push(message);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return messages;
|
|
153
|
+
}
|
|
154
|
+
async sendMessage(chatId, text, params) {
|
|
155
|
+
const [message, entities] = __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_parseText).call(this, text, params);
|
|
156
|
+
const replyMarkup = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyMarkup).call(this, params);
|
|
157
|
+
const peer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
158
|
+
const randomId = getRandomId();
|
|
159
|
+
const noWebpage = params?.disableWebPagePreview ? true : undefined;
|
|
160
|
+
const silent = params?.disableNotification ? true : undefined;
|
|
161
|
+
const noforwards = params?.protectContent ? true : undefined;
|
|
162
|
+
const sendAs = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_resolveSendAs).call(this, params);
|
|
163
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.sendMessage({
|
|
164
|
+
peer,
|
|
165
|
+
random_id: randomId,
|
|
166
|
+
message,
|
|
167
|
+
no_webpage: noWebpage,
|
|
168
|
+
silent,
|
|
169
|
+
noforwards,
|
|
170
|
+
reply_to: __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyTo).call(this, params),
|
|
171
|
+
send_as: sendAs,
|
|
172
|
+
entities,
|
|
173
|
+
reply_markup: replyMarkup,
|
|
174
|
+
});
|
|
175
|
+
const message_ = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_updatesToMessages).call(this, chatId, result).then((v) => v[0]);
|
|
176
|
+
return assertMessageType(message_, "text");
|
|
177
|
+
}
|
|
178
|
+
async sendVenue(chatId, latitude, longitude, title, address, params) {
|
|
179
|
+
const peer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
180
|
+
const randomId = getRandomId();
|
|
181
|
+
const silent = params?.disableNotification ? true : undefined;
|
|
182
|
+
const noforwards = params?.protectContent ? true : undefined;
|
|
183
|
+
const sendAs = params?.sendAs ? await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(params.sendAs) : undefined; // TODO: check default sendAs
|
|
184
|
+
const replyMarkup = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyMarkup).call(this, params);
|
|
185
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.sendMedia({
|
|
186
|
+
peer,
|
|
187
|
+
random_id: randomId,
|
|
188
|
+
silent,
|
|
189
|
+
noforwards,
|
|
190
|
+
reply_to: __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyTo).call(this, params),
|
|
191
|
+
send_as: sendAs,
|
|
192
|
+
reply_markup: replyMarkup,
|
|
193
|
+
media: new types.InputMediaVenue({
|
|
194
|
+
geo_point: new types.InputGeoPoint({
|
|
195
|
+
lat: latitude,
|
|
196
|
+
long: longitude,
|
|
197
|
+
}),
|
|
198
|
+
title,
|
|
199
|
+
address,
|
|
200
|
+
venue_id: params?.foursquareId ?? "",
|
|
201
|
+
venue_type: params?.foursquareType ?? "",
|
|
202
|
+
provider: "foursquare",
|
|
203
|
+
}),
|
|
204
|
+
message: "",
|
|
205
|
+
});
|
|
206
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_updatesToMessages).call(this, chatId, result).then((v) => v[0]);
|
|
207
|
+
return assertMessageType(message, "venue");
|
|
208
|
+
}
|
|
209
|
+
async sendContact(chatId, firstName, number, params) {
|
|
210
|
+
const peer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
211
|
+
const randomId = getRandomId();
|
|
212
|
+
const silent = params?.disableNotification ? true : undefined;
|
|
213
|
+
const noforwards = params?.protectContent ? true : undefined;
|
|
214
|
+
const sendAs = params?.sendAs ? await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(params.sendAs) : undefined; // TODO: check default sendAs
|
|
215
|
+
const replyMarkup = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyMarkup).call(this, params);
|
|
216
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.sendMedia({
|
|
217
|
+
peer,
|
|
218
|
+
random_id: randomId,
|
|
219
|
+
silent,
|
|
220
|
+
noforwards,
|
|
221
|
+
reply_to: __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyTo).call(this, params),
|
|
222
|
+
send_as: sendAs,
|
|
223
|
+
reply_markup: replyMarkup,
|
|
224
|
+
media: new types.InputMediaContact({
|
|
225
|
+
phone_number: number,
|
|
226
|
+
first_name: firstName,
|
|
227
|
+
last_name: params?.lastName ?? "",
|
|
228
|
+
vcard: params?.vcard ?? "",
|
|
229
|
+
}),
|
|
230
|
+
message: "",
|
|
231
|
+
});
|
|
232
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_updatesToMessages).call(this, chatId, result).then((v) => v[0]);
|
|
233
|
+
return assertMessageType(message, "contact");
|
|
234
|
+
}
|
|
235
|
+
async sendDice(chatId, params) {
|
|
236
|
+
const peer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
237
|
+
const randomId = getRandomId();
|
|
238
|
+
const silent = params?.disableNotification ? true : undefined;
|
|
239
|
+
const noforwards = params?.protectContent ? true : undefined;
|
|
240
|
+
const sendAs = params?.sendAs ? await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(params.sendAs) : undefined; // TODO: check default sendAs
|
|
241
|
+
const replyMarkup = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyMarkup).call(this, params);
|
|
242
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.sendMedia({
|
|
243
|
+
peer,
|
|
244
|
+
random_id: randomId,
|
|
245
|
+
silent,
|
|
246
|
+
noforwards,
|
|
247
|
+
reply_to: __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyTo).call(this, params),
|
|
248
|
+
send_as: sendAs,
|
|
249
|
+
reply_markup: replyMarkup,
|
|
250
|
+
media: new types.InputMediaDice({
|
|
251
|
+
emoticon: params?.emoji ?? "🎲",
|
|
252
|
+
}),
|
|
253
|
+
message: "",
|
|
254
|
+
});
|
|
255
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_updatesToMessages).call(this, chatId, result).then((v) => v[0]);
|
|
256
|
+
return assertMessageType(message, "dice");
|
|
257
|
+
}
|
|
258
|
+
async sendLocation(chatId, latitude, longitude, params) {
|
|
259
|
+
const peer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
260
|
+
const randomId = getRandomId();
|
|
261
|
+
const silent = params?.disableNotification ? true : undefined;
|
|
262
|
+
const noforwards = params?.protectContent ? true : undefined;
|
|
263
|
+
const sendAs = params?.sendAs ? await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(params.sendAs) : undefined; // TODO: check default sendAs
|
|
264
|
+
const replyMarkup = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyMarkup).call(this, params);
|
|
265
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.sendMedia({
|
|
266
|
+
peer,
|
|
267
|
+
random_id: randomId,
|
|
268
|
+
silent,
|
|
269
|
+
noforwards,
|
|
270
|
+
reply_to: __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyTo).call(this, params),
|
|
271
|
+
send_as: sendAs,
|
|
272
|
+
reply_markup: replyMarkup,
|
|
273
|
+
media: params?.livePeriod !== undefined
|
|
274
|
+
? new types.InputMediaGeoLive({
|
|
275
|
+
geo_point: new types.InputGeoPoint({
|
|
276
|
+
lat: latitude,
|
|
277
|
+
long: longitude,
|
|
278
|
+
accuracy_radius: params?.horizontalAccuracy,
|
|
279
|
+
}),
|
|
280
|
+
heading: params?.heading,
|
|
281
|
+
period: params.livePeriod,
|
|
282
|
+
proximity_notification_radius: params?.proximityAlertRadius,
|
|
283
|
+
})
|
|
284
|
+
: new types.InputMediaGeoPoint({
|
|
285
|
+
geo_point: new types.InputGeoPoint({
|
|
286
|
+
lat: latitude,
|
|
287
|
+
long: longitude,
|
|
288
|
+
accuracy_radius: params?.horizontalAccuracy,
|
|
289
|
+
}),
|
|
290
|
+
}),
|
|
291
|
+
message: "",
|
|
292
|
+
});
|
|
293
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_updatesToMessages).call(this, chatId, result).then((v) => v[0]);
|
|
294
|
+
return assertMessageType(message, "location");
|
|
295
|
+
}
|
|
296
|
+
async sendVideoNote(chatId, audio, params) {
|
|
297
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_sendDocumentInner).call(this, chatId, audio, params, FileType.VideoNote, [
|
|
298
|
+
new types.DocumentAttributeVideo({
|
|
299
|
+
round_message: true,
|
|
300
|
+
w: params?.length ?? 0,
|
|
301
|
+
h: params?.length ?? 0,
|
|
302
|
+
duration: params?.duration ?? 0,
|
|
303
|
+
}),
|
|
304
|
+
], false);
|
|
305
|
+
return assertMessageType(message, "videoNote");
|
|
306
|
+
}
|
|
307
|
+
async sendAudio(chatId, audio, params) {
|
|
308
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_sendDocumentInner).call(this, chatId, audio, params, FileType.Audio, [
|
|
309
|
+
new types.DocumentAttributeAudio({
|
|
310
|
+
duration: params?.duration ?? 0,
|
|
311
|
+
performer: params?.performer,
|
|
312
|
+
title: params?.title,
|
|
313
|
+
}),
|
|
314
|
+
]);
|
|
315
|
+
return assertMessageType(message, "audio");
|
|
316
|
+
}
|
|
317
|
+
async sendVoice(chatId, voice, params) {
|
|
318
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_sendDocumentInner).call(this, chatId, voice, params, FileType.Voice, [
|
|
319
|
+
new types.DocumentAttributeAudio({
|
|
320
|
+
voice: true,
|
|
321
|
+
duration: params?.duration ?? 0,
|
|
322
|
+
}),
|
|
323
|
+
]);
|
|
324
|
+
return assertMessageType(message, "voice");
|
|
325
|
+
}
|
|
326
|
+
async sendAnimation(chatId, animation, params) {
|
|
327
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_sendDocumentInner).call(this, chatId, animation, params, FileType.Animation, [
|
|
328
|
+
new types.DocumentAttributeAnimated(),
|
|
329
|
+
new types.DocumentAttributeVideo({
|
|
330
|
+
supports_streaming: true,
|
|
331
|
+
w: params?.width ?? 0,
|
|
332
|
+
h: params?.height ?? 0,
|
|
333
|
+
duration: params?.duration ?? 0,
|
|
334
|
+
}),
|
|
335
|
+
]);
|
|
336
|
+
return assertMessageType(message, "animation");
|
|
337
|
+
}
|
|
338
|
+
async sendVideo(chatId, video, params) {
|
|
339
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_sendDocumentInner).call(this, chatId, video, params, FileType.Video, [
|
|
340
|
+
new types.DocumentAttributeVideo({
|
|
341
|
+
supports_streaming: params?.supportsStreaming ? true : undefined,
|
|
342
|
+
w: params?.width ?? 0,
|
|
343
|
+
h: params?.height ?? 0,
|
|
344
|
+
duration: params?.duration ?? 0,
|
|
345
|
+
}),
|
|
346
|
+
]);
|
|
347
|
+
return assertMessageType(message, "video");
|
|
348
|
+
}
|
|
349
|
+
async sendDocument(chatId, document, params) {
|
|
350
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_sendDocumentInner).call(this, chatId, document, params, FileType.Document, []);
|
|
351
|
+
return assertMessageType(message, "document");
|
|
352
|
+
}
|
|
353
|
+
async sendPhoto(chatId, photo, params) {
|
|
354
|
+
let media = null;
|
|
355
|
+
const spoiler = params?.hasSpoiler ? true : undefined;
|
|
356
|
+
if (typeof photo === "string") {
|
|
357
|
+
const fileId = __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_resolveFileId).call(this, photo, FileType.Photo);
|
|
358
|
+
if (fileId != null) {
|
|
359
|
+
media = new types.InputMediaPhoto({
|
|
360
|
+
id: new types.InputPhoto(fileId),
|
|
361
|
+
spoiler,
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
if (media == null) {
|
|
366
|
+
if (typeof photo === "string" && isHttpUrl(photo)) {
|
|
367
|
+
media = new types.InputMediaPhotoExternal({ url: photo, spoiler });
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
const [contents, fileName] = await getFileContents(photo);
|
|
371
|
+
const file = await __classPrivateFieldGet(this, _MessageManager_c, "f").fileManager.upload(contents, { fileName, chunkSize: params?.chunkSize, signal: params?.signal });
|
|
372
|
+
media = new types.InputMediaUploadedPhoto({ file, spoiler });
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_sendMedia).call(this, chatId, media, params);
|
|
376
|
+
return assertMessageType(message, "photo");
|
|
377
|
+
}
|
|
378
|
+
async sendPoll(chatId, question, options, params) {
|
|
379
|
+
const peer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
380
|
+
const randomId = getRandomId();
|
|
381
|
+
const silent = params?.disableNotification ? true : undefined;
|
|
382
|
+
const noforwards = params?.protectContent ? true : undefined;
|
|
383
|
+
const sendAs = params?.sendAs ? await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(params.sendAs) : undefined; // TODO: check default sendAs
|
|
384
|
+
const replyMarkup = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyMarkup).call(this, params);
|
|
385
|
+
const explanation = params?.explanation;
|
|
386
|
+
const parseResult = explanation !== undefined ? __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_parseText).call(this, explanation, { parseMode: params?.explanationParseMode, entities: params?.explanationEntities }) : undefined;
|
|
387
|
+
const solution = parseResult === undefined ? undefined : parseResult[0];
|
|
388
|
+
const solutionEntities = parseResult === undefined ? undefined : parseResult[1];
|
|
389
|
+
const answers = options.map((v, i) => new types.PollAnswer({ option: new Uint8Array([i]), text: v }));
|
|
390
|
+
const poll = new types.Poll({
|
|
391
|
+
id: getRandomId(),
|
|
392
|
+
answers,
|
|
393
|
+
question,
|
|
394
|
+
closed: params?.isClosed ? true : undefined,
|
|
395
|
+
close_date: params?.closeDate ? toUnixTimestamp(params.closeDate) : undefined,
|
|
396
|
+
close_period: params?.openPeriod ? params.openPeriod : undefined,
|
|
397
|
+
multiple_choice: params?.allowMultipleAnswers ? true : undefined,
|
|
398
|
+
public_voters: params?.isAnonymous === false ? true : undefined,
|
|
399
|
+
quiz: params?.type == "quiz" ? true : undefined,
|
|
400
|
+
});
|
|
401
|
+
const media = new types.InputMediaPoll({
|
|
402
|
+
poll,
|
|
403
|
+
correct_answers: params?.correctOptionIndex ? [new Uint8Array([params.correctOptionIndex])] : undefined,
|
|
404
|
+
solution,
|
|
405
|
+
solution_entities: solutionEntities,
|
|
406
|
+
});
|
|
407
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.sendMedia({
|
|
408
|
+
peer,
|
|
409
|
+
random_id: randomId,
|
|
410
|
+
silent,
|
|
411
|
+
noforwards,
|
|
412
|
+
reply_markup: replyMarkup,
|
|
413
|
+
reply_to: __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyTo).call(this, params),
|
|
414
|
+
send_as: sendAs,
|
|
415
|
+
media,
|
|
416
|
+
message: "",
|
|
417
|
+
});
|
|
418
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_updatesToMessages).call(this, chatId, result).then((v) => v[0]);
|
|
419
|
+
return assertMessageType(message, "poll");
|
|
420
|
+
}
|
|
421
|
+
async editMessageReplyMarkup(chatId, messageId, params) {
|
|
422
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.editMessage({
|
|
423
|
+
id: messageId,
|
|
424
|
+
peer: await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId),
|
|
425
|
+
reply_markup: await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyMarkup).call(this, params),
|
|
426
|
+
});
|
|
427
|
+
const message_ = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_updatesToMessages).call(this, chatId, result).then((v) => v[0]);
|
|
428
|
+
return message_;
|
|
429
|
+
}
|
|
430
|
+
async editMessageText(chatId, messageId, text, params) {
|
|
431
|
+
const [message, entities] = __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_parseText).call(this, text, params);
|
|
432
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.editMessage({
|
|
433
|
+
id: messageId,
|
|
434
|
+
peer: await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId),
|
|
435
|
+
entities,
|
|
436
|
+
message,
|
|
437
|
+
no_webpage: params?.disableWebPagePreview ? true : undefined,
|
|
438
|
+
reply_markup: await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyMarkup).call(this, params),
|
|
439
|
+
});
|
|
440
|
+
const message_ = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_updatesToMessages).call(this, chatId, result).then((v) => v[0]);
|
|
441
|
+
return assertMessageType(message_, "text");
|
|
442
|
+
}
|
|
443
|
+
async deleteMessages(chatId, messageIds, params) {
|
|
444
|
+
const peer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
445
|
+
if (peer instanceof types.InputPeerChannel) {
|
|
446
|
+
await __classPrivateFieldGet(this, _MessageManager_c, "f").api.channels.deleteMessages({ channel: new types.InputChannel(peer), id: messageIds });
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.deleteMessages({ id: messageIds, revoke: params?.onlyForMe ? undefined : true });
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
async deleteChatMemberMessages(chatId, memberId) {
|
|
453
|
+
const channel = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
454
|
+
if (!(channel instanceof types.InputPeerChannel)) {
|
|
455
|
+
throw new Error("Invalid chat ID");
|
|
456
|
+
}
|
|
457
|
+
const participant = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(memberId);
|
|
458
|
+
await __classPrivateFieldGet(this, _MessageManager_c, "f").api.channels.deleteParticipantHistory({ channel: new types.InputChannel(channel), participant });
|
|
459
|
+
}
|
|
460
|
+
async pinMessage(chatId, messageId, params) {
|
|
461
|
+
await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.updatePinnedMessage({
|
|
462
|
+
peer: await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId),
|
|
463
|
+
id: messageId,
|
|
464
|
+
silent: params?.disableNotification ? true : undefined,
|
|
465
|
+
pm_oneside: params?.bothSides ? undefined : true,
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
async unpinMessage(chatId, messageId) {
|
|
469
|
+
await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.updatePinnedMessage({
|
|
470
|
+
peer: await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId),
|
|
471
|
+
id: messageId,
|
|
472
|
+
unpin: true,
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
async unpinMessages(chatId) {
|
|
476
|
+
await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.unpinAllMessages({ peer: await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId) });
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
_MessageManager_c = new WeakMap(), _MessageManager_usernameResolver = new WeakMap(), _MessageManager_instances = new WeakSet(), _MessageManager_parseText = function _MessageManager_parseText(text, params) {
|
|
480
|
+
const entities_ = params?.entities ?? [];
|
|
481
|
+
const parseMode = params?.parseMode ?? __classPrivateFieldGet(this, _MessageManager_c, "f").parseMode;
|
|
482
|
+
switch (parseMode) {
|
|
483
|
+
case null:
|
|
484
|
+
break;
|
|
485
|
+
case "HTML": {
|
|
486
|
+
const [newText, entitiesToPush] = parseHtml(text);
|
|
487
|
+
text = newText;
|
|
488
|
+
for (const entity of entitiesToPush) {
|
|
489
|
+
entities_.push(entity);
|
|
490
|
+
}
|
|
491
|
+
break;
|
|
492
|
+
}
|
|
493
|
+
default:
|
|
494
|
+
UNREACHABLE();
|
|
495
|
+
}
|
|
496
|
+
const entities = entities_?.length > 0 ? entities_.map((v) => messageEntityToTlObject(v)) : undefined;
|
|
497
|
+
return [text, entities];
|
|
498
|
+
}, _MessageManager_updatesToMessages = async function _MessageManager_updatesToMessages(chatId, updates) {
|
|
499
|
+
const messages = new Array();
|
|
500
|
+
if (updates instanceof types.Updates) {
|
|
501
|
+
for (const update of updates.updates) {
|
|
502
|
+
if ("message" in update && update.message instanceof types.MessageEmpty) {
|
|
503
|
+
continue;
|
|
504
|
+
}
|
|
505
|
+
if (update instanceof types.UpdateNewMessage || update instanceof types.UpdateEditMessage) {
|
|
506
|
+
messages.push(await this.constructMessage(update.message));
|
|
507
|
+
}
|
|
508
|
+
else if (update instanceof types.UpdateNewChannelMessage || update instanceof types.UpdateEditChannelMessage) {
|
|
509
|
+
messages.push(await this.constructMessage(update.message));
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
else if (updates instanceof types.UpdateShortSentMessage) {
|
|
514
|
+
const message = await this.getMessage(chatId, updates.id);
|
|
515
|
+
if (message != null) {
|
|
516
|
+
messages.push(message);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
return messages;
|
|
520
|
+
}, _MessageManager_constructReplyMarkup = async function _MessageManager_constructReplyMarkup(params) {
|
|
521
|
+
if (params?.replyMarkup) {
|
|
522
|
+
await __classPrivateFieldGet(this, _MessageManager_c, "f").storage.assertBot("replyMarkup");
|
|
523
|
+
return replyMarkupToTlObject(params.replyMarkup, __classPrivateFieldGet(this, _MessageManager_usernameResolver, "f").bind(this));
|
|
524
|
+
}
|
|
525
|
+
}, _MessageManager_resolveSendAs = async function _MessageManager_resolveSendAs(params) {
|
|
526
|
+
const sendAs = params?.sendAs;
|
|
527
|
+
if (sendAs !== undefined) {
|
|
528
|
+
await __classPrivateFieldGet(this, _MessageManager_c, "f").storage.assertUser("sendAs");
|
|
529
|
+
return sendAs ? await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(sendAs) : undefined;
|
|
530
|
+
}
|
|
531
|
+
}, _MessageManager_constructReplyTo = function _MessageManager_constructReplyTo(params) {
|
|
532
|
+
const topMsgId = params?.messageThreadId;
|
|
533
|
+
const replyToMsgId = params?.replyToMessageId;
|
|
534
|
+
return replyToMsgId !== undefined ? new types.InputReplyToMessage({ reply_to_msg_id: replyToMsgId, top_msg_id: topMsgId, quote_text: params?.replyQuote?.text, quote_entities: params?.replyQuote?.entities.map(messageEntityToTlObject), quote_offset: params?.replyQuote?.offset }) : undefined;
|
|
535
|
+
}, _MessageManager_sendDocumentInner = async function _MessageManager_sendDocumentInner(chatId, document, params, fileType, otherAttribs, urlSupported = false) {
|
|
536
|
+
let media = null;
|
|
537
|
+
const spoiler = params?.hasSpoiler ? true : undefined;
|
|
538
|
+
if (typeof document === "string") {
|
|
539
|
+
const fileId = __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_resolveFileId).call(this, document, fileType);
|
|
540
|
+
if (fileId != null) {
|
|
541
|
+
media = new types.InputMediaDocument({
|
|
542
|
+
id: new types.InputDocument(fileId),
|
|
543
|
+
spoiler,
|
|
544
|
+
});
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
if (media == null) {
|
|
548
|
+
if (typeof document === "string" && isHttpUrl(document)) {
|
|
549
|
+
if (!urlSupported) {
|
|
550
|
+
throw new Error("URL not supported");
|
|
551
|
+
}
|
|
552
|
+
media = new types.InputMediaDocumentExternal({ url: document, spoiler });
|
|
553
|
+
}
|
|
554
|
+
else {
|
|
555
|
+
const [contents, fileName_] = await getFileContents(document);
|
|
556
|
+
const fileName = params?.fileName ?? fileName_;
|
|
557
|
+
const mimeType = params?.mimeType ?? contentType(fileName.split(".").slice(-1)[0]) ?? "application/octet-stream";
|
|
558
|
+
const file = await __classPrivateFieldGet(this, _MessageManager_c, "f").fileManager.upload(contents, { fileName, chunkSize: params?.chunkSize, signal: params?.signal });
|
|
559
|
+
let thumb = undefined;
|
|
560
|
+
if (params?.thumbnail) {
|
|
561
|
+
const [thumbContents, fileName__] = await getFileContents(params.thumbnail);
|
|
562
|
+
thumb = await __classPrivateFieldGet(this, _MessageManager_c, "f").fileManager.upload(thumbContents, { fileName: fileName__, chunkSize: params?.chunkSize, signal: params?.signal });
|
|
563
|
+
}
|
|
564
|
+
media = new types.InputMediaUploadedDocument({
|
|
565
|
+
file,
|
|
566
|
+
thumb,
|
|
567
|
+
spoiler,
|
|
568
|
+
attributes: [new types.DocumentAttributeFilename({ file_name: fileName }), ...otherAttribs],
|
|
569
|
+
mime_type: mimeType,
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
const message = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_sendMedia).call(this, chatId, media, params);
|
|
574
|
+
return message;
|
|
575
|
+
}, _MessageManager_sendMedia = async function _MessageManager_sendMedia(chatId, media, params) {
|
|
576
|
+
const peer = await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(chatId);
|
|
577
|
+
const randomId = getRandomId();
|
|
578
|
+
const silent = params?.disableNotification ? true : undefined;
|
|
579
|
+
const noforwards = params?.protectContent ? true : undefined;
|
|
580
|
+
const sendAs = params?.sendAs ? await __classPrivateFieldGet(this, _MessageManager_c, "f").getInputPeer(params.sendAs) : undefined; // TODO: check default sendAs
|
|
581
|
+
const replyMarkup = await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyMarkup).call(this, params);
|
|
582
|
+
const caption_ = params?.caption;
|
|
583
|
+
const parseResult = caption_ !== undefined ? __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_parseText).call(this, caption_, { parseMode: params?.parseMode, entities: params?.captionEntities }) : undefined;
|
|
584
|
+
const caption = parseResult === undefined ? undefined : parseResult[0];
|
|
585
|
+
const captionEntities = parseResult === undefined ? undefined : parseResult[1];
|
|
586
|
+
const result = await __classPrivateFieldGet(this, _MessageManager_c, "f").api.messages.sendMedia({
|
|
587
|
+
peer,
|
|
588
|
+
random_id: randomId,
|
|
589
|
+
silent,
|
|
590
|
+
noforwards,
|
|
591
|
+
reply_markup: replyMarkup,
|
|
592
|
+
reply_to: __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_constructReplyTo).call(this, params),
|
|
593
|
+
send_as: sendAs,
|
|
594
|
+
media,
|
|
595
|
+
message: caption ?? "",
|
|
596
|
+
entities: captionEntities,
|
|
597
|
+
});
|
|
598
|
+
return await __classPrivateFieldGet(this, _MessageManager_instances, "m", _MessageManager_updatesToMessages).call(this, chatId, result).then((v) => v[0]);
|
|
599
|
+
}, _MessageManager_resolveFileId = function _MessageManager_resolveFileId(maybeFileId, expectedFileType) {
|
|
600
|
+
let fileId = null;
|
|
601
|
+
try {
|
|
602
|
+
fileId = FileID.decode(maybeFileId);
|
|
603
|
+
}
|
|
604
|
+
catch (err) {
|
|
605
|
+
d("fileId: %o", err);
|
|
606
|
+
}
|
|
607
|
+
if (fileId != null) {
|
|
608
|
+
if (fileId.fileType != expectedFileType) {
|
|
609
|
+
UNREACHABLE();
|
|
610
|
+
}
|
|
611
|
+
if (fileId.params.mediaId == undefined || fileId.params.accessHash == undefined || fileId.params.fileReference == undefined) {
|
|
612
|
+
UNREACHABLE();
|
|
613
|
+
}
|
|
614
|
+
return {
|
|
615
|
+
id: fileId.params.mediaId,
|
|
616
|
+
access_hash: fileId.params.accessHash,
|
|
617
|
+
file_reference: fileId.params.fileReference,
|
|
618
|
+
};
|
|
619
|
+
}
|
|
620
|
+
return null;
|
|
621
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { types } from "../2_tl.js";
|
|
2
|
+
import { Chat } from "../3_types.js";
|
|
3
|
+
import { C as C_ } from "./0_types.js";
|
|
4
|
+
import { MessageManager } from "./2_message_manager.js";
|
|
5
|
+
type C = C_ & {
|
|
6
|
+
messageManager: MessageManager;
|
|
7
|
+
};
|
|
8
|
+
export declare class ChatListManager {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(c: C);
|
|
11
|
+
reassignChatLastMessage(chatId: number, add?: boolean, sendUpdate?: boolean): Promise<() => Promise<void>>;
|
|
12
|
+
tryGetChatId(username: string): number | null;
|
|
13
|
+
getChatAnywhere(chatId: number): [Chat | undefined, number];
|
|
14
|
+
handelUpdateFolderPeers(update: types.UpdateFolderPeers): Promise<void>;
|
|
15
|
+
handleUpdatePinnedDialogs(update: types.UpdatePinnedDialogs): Promise<void>;
|
|
16
|
+
handleUpdateChannel(update: types.UpdateChannel): Promise<void>;
|
|
17
|
+
handleUpdateChat(update: types.UpdateChat): Promise<void>;
|
|
18
|
+
handleUpdateUser(update: types.UpdateUser | types.UpdateUserName): Promise<void>;
|
|
19
|
+
getChats(from?: "archived" | "main", after?: Chat, limit?: number): Promise<Chat[]>;
|
|
20
|
+
}
|
|
21
|
+
export {};
|