tgsnake
Version:
Telegram MTProto framework for nodejs.
111 lines (110 loc) • 4.81 kB
JavaScript
;
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,
});
}