2025-01-19 22:03:57 +02:00

78 lines
2.9 KiB
JavaScript

module.exports = function (RED) {
function SendFile(config) {
RED.nodes.createNode(this, config);
this.config = RED.nodes.getNode(config.config);
var node = this;
this.on("input", async function (msg) {
const chatId = msg.payload.chatId || config.chatId;
const files =
msg.payload.files || config.files.split(",").map((file) => file.trim());
const caption = msg.payload.caption || config.caption;
const forceDocument = msg.payload.forceDocument || config.forceDocument;
const fileSize = msg.payload.fileSize || config.fileSize;
const clearDraft = msg.payload.clearDraft || config.clearDraft;
const progressCallback =
msg.payload.progressCallback || config.progressCallback;
const replyTo = msg.payload.replyTo || config.replyTo;
const attributes = msg.payload.attributes || config.attributes;
const thumb = msg.payload.thumb || config.thumb;
const voiceNote = msg.payload.voiceNote || config.voiceNote;
const videoNote = msg.payload.videoNote || config.videoNote;
const supportsStreaming =
msg.payload.supportsStreaming || config.supportsStreaming;
const parseMode = msg.payload.parseMode || config.parseMode;
const formattingEntities =
msg.payload.formattingEntities || config.formattingEntities;
const silent = msg.payload.silent || config.silent;
const scheduleDate = msg.payload.scheduleDate || config.scheduleDate;
const buttons = msg.payload.buttons || config.buttons;
const workers = msg.payload.workers || config.workers;
const noforwards = msg.payload.noforwards || config.noforwards;
const commentTo = msg.payload.commentTo || config.commentTo;
const topMsgId = msg.payload.topMsgId || config.topMsgId;
/** @type {TelegramClient} */
const client = msg.payload?.client
? msg.payload.client
: this.config.client;
try {
const params = {
file: files,
caption: caption,
forceDocument: forceDocument,
fileSize: fileSize,
clearDraft: clearDraft,
progressCallback: progressCallback,
replyTo: replyTo,
attributes: attributes,
thumb: thumb,
voiceNote: voiceNote,
videoNote: videoNote,
supportsStreaming: supportsStreaming,
parseMode: parseMode,
formattingEntities: formattingEntities,
silent: silent,
scheduleDate: scheduleDate,
buttons: buttons,
workers: workers,
noforwards: noforwards,
commentTo: commentTo,
topMsgId: topMsgId,
};
// Sending files
const response = await client.sendFile(chatId, params);
node.send({
payload: response,
});
} catch (err) {
node.error("Error sending files: " + err.message);
}
});
}
RED.nodes.registerType("send-files", SendFile);
};