UNPKG

tgsnake

Version:

Telegram MTProto framework for nodejs.

111 lines (110 loc) 4.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendDocument = sendDocument; const SendMedia_js_1 = require("./SendMedia.js"); const platform_node_js_1 = require("../../platform.node.js"); const Utilities_js_1 = require("../../Utilities.js"); const Logger_js_1 = require("../../Context/Logger.js"); async function sendDocument(client, chatId, file, more = {}) { Logger_js_1.Logger.debug(`exec: send_document chat ${typeof chatId} (${chatId}) ${(0, Utilities_js_1.parseArgObjAsStr)({ file, })} ${(0, Utilities_js_1.parseArgObjAsStr)(more)}`); var { disableNotification, replyToMessageId, replyToStoryId, messageThreadId, scheduleDate, sendAsChannel, protectContent, replyMarkup, entities, parseMode, caption, invertMedia, filename, progress, thumbnail, mimetype, forceDocument, hasSpoiler, } = more; if (typeof file === 'string') { file; if (/^http/i.test(file)) { var savedFile = new platform_node_js_1.Raw.InputMediaDocumentExternal({ spoiler: hasSpoiler, url: file, }); } else if (/^(\/|\.\.?\/|~\/)/i.test(file)) { var savedFile = new platform_node_js_1.Raw.InputMediaUploadedDocument({ file: (await client.core.saveFileStream({ source: platform_node_js_1.fs.createReadStream(file), fileName: filename ?? platform_node_js_1.path.basename(file), progress: progress, })), mimeType: mimetype ?? (0, Utilities_js_1.findMimeType)(filename ?? platform_node_js_1.path.basename(file) ?? '') ?? 'application/zip', forceFile: forceDocument, spoiler: hasSpoiler, attributes: [ new platform_node_js_1.Raw.DocumentAttributeFilename({ fileName: filename ?? platform_node_js_1.path.basename(file) ?? `tg-${Date.now()}`, }), ], thumb: thumbnail ? await (0, Utilities_js_1.uploadThumbnail)(client, thumbnail) : undefined, }); } else { const media = platform_node_js_1.FileId.decodeFileId(file); if (platform_node_js_1.DOCUMENT_TYPES.includes(media.fileType)) { var savedFile = new platform_node_js_1.Raw.InputMediaDocument({ spoiler: hasSpoiler, id: new platform_node_js_1.Raw.InputDocument({ id: media.id, accessHash: media.accessHash, fileReference: media.fileReference, }), }); } else { throw new Error('invalid file id'); } } } else if (platform_node_js_1.Buffer.isBuffer(file)) { file; var savedFile = new platform_node_js_1.Raw.InputMediaUploadedDocument({ file: (await client.core.saveFile({ source: file, fileName: filename, progress: progress, })), mimeType: mimetype ?? (0, Utilities_js_1.findMimeType)(filename ?? '') ?? 'application/zip', forceFile: forceDocument, spoiler: hasSpoiler, attributes: [ new platform_node_js_1.Raw.DocumentAttributeFilename({ fileName: filename ?? `tg-${Date.now()}`, }), ], thumb: thumbnail ? await (0, Utilities_js_1.uploadThumbnail)(client, thumbnail) : undefined, }); } else if ('pipe' in file) { var savedFile = new platform_node_js_1.Raw.InputMediaUploadedDocument({ file: (await client.core.saveFileStream({ source: file, fileName: filename, progress: progress, })), mimeType: mimetype ?? (0, Utilities_js_1.findMimeType)(filename ?? '') ?? 'application/zip', forceFile: forceDocument, spoiler: hasSpoiler, attributes: [ new platform_node_js_1.Raw.DocumentAttributeFilename({ fileName: filename ?? `tg-${Date.now()}`, }), ], thumb: thumbnail ? await (0, Utilities_js_1.uploadThumbnail)(client, thumbnail) : undefined, }); } else { throw new Error('unknown file'); } return (0, SendMedia_js_1.sendMedia)(client, chatId, savedFile, { disableNotification, replyToMessageId, replyToStoryId, messageThreadId, scheduleDate, sendAsChannel, protectContent, replyMarkup, entities, parseMode, caption, invertMedia, }); }