diff --git a/README.md b/README.md
index c8d6779..e31b5f9 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
-Node-red and telegram (gramjs) integration
\ No newline at end of file
+Node-red and telegram (gramjs) integration
+
+Fork of `https://github.com/borovlioff/node-red-telegram-account`
diff --git a/package-lock.json b/package-lock.json
index 1b5a97e..81de3d5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -45,9 +45,9 @@
]
},
"node_modules/big-integer": {
- "version": "1.6.51",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
- "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "version": "1.6.52",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
+ "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
"engines": {
"node": ">=0.6"
}
@@ -76,9 +76,9 @@
}
},
"node_modules/bufferutil": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz",
- "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==",
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz",
+ "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==",
"hasInstallScript": true,
"dependencies": {
"node-gyp-build": "^4.3.0"
@@ -88,12 +88,15 @@
}
},
"node_modules/d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
+ "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
"dependencies": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
+ "es5-ext": "^0.10.64",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.12"
}
},
"node_modules/debug": {
@@ -164,13 +167,14 @@
}
},
"node_modules/es5-ext": {
- "version": "0.10.62",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
- "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
"hasInstallScript": true,
"dependencies": {
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
"next-tick": "^1.1.0"
},
"engines": {
@@ -188,12 +192,38 @@
}
},
"node_modules/es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
+ "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
+ "dependencies": {
+ "d": "^1.0.2",
+ "ext": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
"dependencies": {
"d": "^1.0.1",
- "ext": "^1.1.2"
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
}
},
"node_modules/ext": {
@@ -204,11 +234,6 @@
"type": "^2.7.2"
}
},
- "node_modules/ext/node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
- },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -259,16 +284,28 @@
"node": ">=0.8.19"
}
},
- "node_modules/ip": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
- "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
+ "node_modules/ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "dependencies": {
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
},
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
},
+ "node_modules/jsbn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
+ },
"node_modules/mime": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
@@ -291,9 +328,9 @@
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
},
"node_modules/node-gyp-build": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz",
- "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==",
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
+ "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
"bin": {
"node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js",
@@ -344,27 +381,32 @@
}
},
"node_modules/socks": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
- "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
+ "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==",
"dependencies": {
- "ip": "^2.0.0",
+ "ip-address": "^9.0.5",
"smart-buffer": "^4.2.0"
},
"engines": {
- "node": ">= 10.13.0",
+ "node": ">= 10.0.0",
"npm": ">= 3.0.0"
}
},
+ "node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="
+ },
"node_modules/store2": {
- "version": "2.14.2",
- "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz",
- "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w=="
+ "version": "2.14.4",
+ "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.4.tgz",
+ "integrity": "sha512-srTItn1GOvyvOycgxjAnPA63FZNwy0PTyUBFMHRM+hVFltAeoh0LmNBz9SZqUS9mMqGk8rfyWyXn3GH5ReJ8Zw=="
},
"node_modules/telegram": {
- "version": "2.17.10",
- "resolved": "https://registry.npmjs.org/telegram/-/telegram-2.17.10.tgz",
- "integrity": "sha512-BeWrH6jrTjtmZtGi63mM2UWwciOivqQknhRIysULVRQkDbo+MW4I2jI6d3sPM5m8Ge9mhjeKg1aVZf2qG4vh2Q==",
+ "version": "2.26.16",
+ "resolved": "https://registry.npmjs.org/telegram/-/telegram-2.26.16.tgz",
+ "integrity": "sha512-5tqL9HicCxRqEi+9JjXBteVDnoZ+1ggsBFxLQTO49aXwTI2d7To7xb2vOU/ahLwgKuE+Db9ra5xDJZ76Kk0NEA==",
"dependencies": {
"@cryptography/aes": "^0.1.1",
"async-mutex": "^0.3.0",
@@ -395,14 +437,14 @@
}
},
"node_modules/tslib": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
- "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
},
"node_modules/type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="
},
"node_modules/typedarray-to-buffer": {
"version": "3.1.5",
@@ -425,13 +467,13 @@
}
},
"node_modules/websocket": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz",
- "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==",
+ "version": "1.0.35",
+ "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.35.tgz",
+ "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==",
"dependencies": {
"bufferutil": "^4.0.1",
"debug": "^2.2.0",
- "es5-ext": "^0.10.50",
+ "es5-ext": "^0.10.63",
"typedarray-to-buffer": "^3.1.5",
"utf-8-validate": "^5.0.2",
"yaeti": "^0.0.6"
diff --git a/package.json b/package.json
index a5c9526..741e152 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
- "name": "node-red-telegram-account",
- "version": "1.0.4",
+ "name": "@random-mirrors/node-red-telegram-account",
+ "version": "2.0.1",
"description": "",
"main": "index.js",
"scripts": {
diff --git a/sample/auth.html b/sample/auth.html
index 28e44c0..6368f5c 100644
--- a/sample/auth.html
+++ b/sample/auth.html
@@ -1,130 +1,167 @@
-
diff --git a/sample/auth.js b/sample/auth.js
index 6ac6186..fa00b23 100644
--- a/sample/auth.js
+++ b/sample/auth.js
@@ -2,59 +2,57 @@ const { TelegramClient } = require("telegram");
const { StringSession } = require("telegram/sessions");
module.exports = function (RED) {
- function TelegramClientConfig(config) {
- RED.nodes.createNode(this, config);
- const node = this;
+ function TelegramClientConfig(config) {
+ RED.nodes.createNode(this, config);
+ const node = this;
- this.on("input", async (msg) => {
- const api_idString = msg.payload.api_id || config.api_id;
- const api_hash = msg.payload.api_hash || config.api_hash;
- const phoneNumber = msg.payload.phoneNumber || config.phoneNumber;
- const password = msg.payload.password || config.password;
- const api_id = parseInt(api_idString);
+ this.on("input", async (msg) => {
+ const api_idString = msg.payload.api_id || config.api_id;
+ const api_hash = msg.payload.api_hash || config.api_hash;
+ const phoneNumber = msg.payload.phoneNumber || config.phoneNumber;
+ const password = msg.payload.password || config.password;
+ const api_id = parseInt(api_idString);
- const session = new StringSession("");
- const client = new TelegramClient(session, api_id, api_hash, {
- connectionRetries: 5,
+ const session = new StringSession("");
+ const client = new TelegramClient(session, api_id, api_hash, {
+ connectionRetries: 5,
+ });
+
+ let resolvePhoneCode;
+ const context = node.context().flow;
+
+ try {
+ await client.start({
+ phoneNumber: () => phoneNumber,
+ password: () => password,
+ phoneCode: async () => {
+ return new Promise((resolve) => {
+ resolvePhoneCode = resolve;
+ context.set("phoneCode", resolvePhoneCode);
});
-
-
- let resolvePhoneCode;
- const context = node.context().flow;
-
- try {
- await client.start({
- phoneNumber: () => phoneNumber,
- password: () => password,
- phoneCode: async () =>{
- return new Promise((resolve) => {
- resolvePhoneCode = resolve;
- context.set("phoneCode", resolvePhoneCode);
- })
- },
- onError: (err) => node.error(`Ошибка: ${err.message}`),
- });
-
- const stringSession = client.session.save(); // Сохраняем сессию
- node.send({
- topic: "auth_success",
- payload: {
- stringSession,
- message: "Авторизация прошла успешно!",
- },
- });
-
- } catch (error) {
- node.error(`Ошибка авторизации: ${error.message}`);
- node.send({
- topic: "auth_error",
- payload: {
- error: error.message,
- },
- });
- }
+ },
+ onError: (err) => node.error(`Error: ${err.message}`),
});
- }
- RED.nodes.registerType("auth", TelegramClientConfig);
+ const stringSession = client.session.save(); // Save the session
+ node.send({
+ topic: "auth_success",
+ payload: {
+ stringSession,
+ message: "Authorization was successful!",
+ },
+ });
+ } catch (error) {
+ node.error(`Authorization error: ${error.message}`);
+ node.send({
+ topic: "auth_error",
+ payload: {
+ error: error.message,
+ },
+ });
+ }
+ });
+ }
+
+ RED.nodes.registerType("auth", TelegramClientConfig);
};
diff --git a/sample/command.html b/sample/command.html
index 243ad5a..0f33fb6 100644
--- a/sample/command.html
+++ b/sample/command.html
@@ -1,100 +1,126 @@
+
+
+
+
+
-
-
diff --git a/sample/command.js b/sample/command.js
index a49e1c9..23a54db 100644
--- a/sample/command.js
+++ b/sample/command.js
@@ -1,53 +1,44 @@
const { NewMessage } = require("telegram/events");
-
module.exports = function (RED) {
function Command(config) {
RED.nodes.createNode(this, config);
this.config = RED.nodes.getNode(config.config);
var node = this;
/** @type {TelegramClient} */
- const client = this.config.client;
-
-
+ const client = this.config.client;
try {
client.addEventHandler((update) => {
- const message = update.message.message
+ const message = update.message.message;
if (message) {
- if (config.regex) {
- const regex = new RegExp(config.command);
+ if (config.regex) {
+ const regex = new RegExp(config.command);
- if (regex.test(message)) {
-
- var msg = {
- payload: {
- update
- }
- };
+ if (regex.test(message)) {
+ var msg = {
+ payload: {
+ update,
+ },
+ };
-
- node.send(msg);
- }
- } else if (message === config.command) {
-
- var msg = {
- payload: {
- update
- }
- };
-
-
- node.send(msg);
+ node.send(msg);
}
+ } else if (message === config.command) {
+ var msg = {
+ payload: {
+ update,
+ },
+ };
+
+ node.send(msg);
+ }
}
}, new NewMessage());
-
} catch (err) {
- node.error('Ошибка авторизации: ' + err.message);
+ node.error("Authorization error: " + err.message);
}
-
}
- RED.nodes.registerType('command', Command);
+ RED.nodes.registerType("command", Command);
};
diff --git a/sample/config.html b/sample/config.html
index 658235d..9a7ea10 100644
--- a/sample/config.html
+++ b/sample/config.html
@@ -1,131 +1,299 @@
diff --git a/sample/config.js b/sample/config.js
index ddf70ad..0dbc57c 100644
--- a/sample/config.js
+++ b/sample/config.js
@@ -2,57 +2,58 @@ const { TelegramClient } = require("telegram");
const { StringSession } = require("telegram/sessions");
module.exports = function (RED) {
- function TelegramClientConfig(config) {
- RED.nodes.createNode(this, config);
- this.apiId = config.api_id;
- this.apiHash = config.api_hash;
- this.session = new StringSession(config.session);
- this.useIPV6 = config.useIPV6;
- this.timeout = config.timeout;
- this.requestRetries = config.requestRetries;
- this.connectionRetries = config.connectionRetries;
- this.proxy = config.proxy;
- this.downloadRetries = config.downloadRetries;
- this.retryDelay = config.retryDelay;
- this.autoReconnect = config.autoReconnect;
- this.sequentialUpdates = config.sequentialUpdates;
- this.floodSleepThreshold = config.floodSleepThreshold;
- this.deviceModel = config.deviceModel;
- this.systemVersion = config.systemVersion;
- this.appVersion = config.appVersion;
- this.langCode = config.langCode;
- this.systemLangCode = config.systemLangCode;
- this.useWSS = config.useWSS;
- this.maxConcurrentDownloads = config.maxConcurrentDownloads;
- this.securityChecks = config.securityChecks;
- this.testServers = config.testServers;
- const node = this;
+ function TelegramClientConfig(config) {
+ RED.nodes.createNode(this, config);
+ this.apiId = config.api_id;
+ this.apiHash = config.api_hash;
+ this.session = new StringSession(config.session);
+ this.useIPV6 = config.useIPV6;
+ this.timeout = config.timeout;
+ this.requestRetries = config.requestRetries;
+ this.connectionRetries = config.connectionRetries;
+ this.proxy = config.proxy;
+ this.downloadRetries = config.downloadRetries;
+ this.retryDelay = config.retryDelay;
+ this.autoReconnect = config.autoReconnect;
+ this.sequentialUpdates = config.sequentialUpdates;
+ this.floodSleepThreshold = config.floodSleepThreshold;
+ this.deviceModel = config.deviceModel;
+ this.systemVersion = config.systemVersion;
+ this.appVersion = config.appVersion;
+ this.langCode = config.langCode;
+ this.systemLangCode = config.systemLangCode;
+ this.useWSS = config.useWSS;
+ this.maxConcurrentDownloads = config.maxConcurrentDownloads;
+ this.securityChecks = config.securityChecks;
+ this.testServers = config.testServers;
+ const node = this;
+ this.client = new TelegramClient(
+ this.session,
+ parseInt(this.apiId),
+ this.apiHash,
+ {}
+ );
- this.client = new TelegramClient(this.session, parseInt(this.apiId), this.apiHash, {
-
-
- });
-
- try {
- this.client.connect().then(async () => {
- let isAuthorized = await this.client.isUserAuthorized();
- if (!isAuthorized) {
- node.error(`Session is invalid`);
- } else {
- node.status({ fill: "green", shape: "dot", text: "Connected" });
- }
- });
- } catch (err) {
- node.error('Authorisation error: ' + err.message);
+ try {
+ this.client.connect().then(async () => {
+ let isAuthorized = await this.client.isUserAuthorized();
+ if (!isAuthorized) {
+ node.error(`Session is invalid`);
+ } else {
+ node.status({ fill: "green", shape: "dot", text: "Connected" });
}
-
- this.on("close", () => {
- if (this.client) {
- this.client.disconnect();
- node.status({ fill: "red", shape: "ring", text: "Disconnected" });
- }
- });
+ });
+ } catch (err) {
+ node.error("Authorization error: " + err.message);
}
- RED.nodes.registerType('config', TelegramClientConfig);
+
+ this.on("close", () => {
+ if (this.client) {
+ this.client.disconnect();
+ node.status({ fill: "red", shape: "ring", text: "Disconnected" });
+ }
+ });
+ }
+ RED.nodes.registerType("config", TelegramClientConfig);
};
diff --git a/sample/delete-message.html b/sample/delete-message.html
index 22c7282..51de4ad 100644
--- a/sample/delete-message.html
+++ b/sample/delete-message.html
@@ -1,86 +1,101 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/sample/delete-message.js b/sample/delete-message.js
index 77f4c82..5694f48 100644
--- a/sample/delete-message.js
+++ b/sample/delete-message.js
@@ -1,27 +1,33 @@
module.exports = function (RED) {
- function DeleteMessage(config) {
- RED.nodes.createNode(this, config);
- this.config = RED.nodes.getNode(config.config);
- var node = this;
+ function DeleteMessage(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 messageIds = msg.payload.messageIds || config.messageIds;
- const revoke = msg.payload.revoke || config.revoke || { revoke: true };
- /** @type {TelegramClient} */
- const client = msg.payload?.client ? msg.payload.client : this.config.client;
+ this.on("input", async function (msg) {
+ const chatId = msg.payload.chatId || config.chatId;
+ const messageIds = msg.payload.messageIds || config.messageIds;
+ const revoke = msg.payload.revoke || config.revoke || { revoke: true };
+ /** @type {TelegramClient} */
+ const client = msg.payload?.client
+ ? msg.payload.client
+ : this.config.client;
- try {
- const response = await client.deleteMessages(chatId, messageIds, revoke);
+ try {
+ const response = await client.deleteMessages(
+ chatId,
+ messageIds,
+ revoke
+ );
- node.send({
- payload: response,
- });
- } catch (err) {
- node.error('Error deleting message: ' + err.message);
- }
+ node.send({
+ payload: response,
});
- }
+ } catch (err) {
+ node.error("Error deleting message: " + err.message);
+ }
+ });
+ }
- RED.nodes.registerType('delete-message', DeleteMessage);
+ RED.nodes.registerType("delete-message", DeleteMessage);
};
diff --git a/sample/get-entity.html b/sample/get-entity.html
index e74e719..238473b 100644
--- a/sample/get-entity.html
+++ b/sample/get-entity.html
@@ -1,87 +1,113 @@
-
diff --git a/sample/get-entity.js b/sample/get-entity.js
index a502b5c..b6e20d8 100644
--- a/sample/get-entity.js
+++ b/sample/get-entity.js
@@ -1,36 +1,38 @@
module.exports = function (RED) {
- function GetEntity(config) {
- RED.nodes.createNode(this, config);
- this.config = RED.nodes.getNode(config.config);
- var node = this;
+ function GetEntity(config) {
+ RED.nodes.createNode(this, config);
+ this.config = RED.nodes.getNode(config.config);
+ var node = this;
- this.on('input', async function (msg) {
- const input = msg.payload.input || config.input;
- /** @type {TelegramClient} */
- const client = msg.payload?.client ? msg.payload.client : this.config.client;
+ this.on("input", async function (msg) {
+ const input = msg.payload.input || config.input;
+ /** @type {TelegramClient} */
+ const client = msg.payload?.client
+ ? msg.payload.client
+ : this.config.client;
- try {
- let entity;
+ try {
+ let entity;
- // Check if the input is a URL
- if (input.includes('https://t.me/')) {
- const username = input.split('/').pop();
- entity = await client.getEntity(username);
- } else {
- entity = await client.getEntity(input);
- }
+ // Check if the input is a URL
+ if (input.includes("https://t.me/")) {
+ const username = input.split("/").pop();
+ entity = await client.getEntity(username);
+ } else {
+ entity = await client.getEntity(input);
+ }
- node.send({
- payload: {input:entity},
- });
- } catch (err) {
- node.error('Error getting entity: ' + err.message);
- node.send({
- payload:{ input: null}
- })
- }
+ node.send({
+ payload: { input: entity },
});
- }
+ } catch (err) {
+ node.error("Error getting entity: " + err.message);
+ node.send({
+ payload: { input: null },
+ });
+ }
+ });
+ }
- RED.nodes.registerType('get-entity', GetEntity);
+ RED.nodes.registerType("get-entity", GetEntity);
};
diff --git a/sample/iter-dialogs.html b/sample/iter-dialogs.html
index 1c53823..1c00b56 100644
--- a/sample/iter-dialogs.html
+++ b/sample/iter-dialogs.html
@@ -1,198 +1,224 @@
-
diff --git a/sample/iter-dialogs.js b/sample/iter-dialogs.js
index 6f14113..c21b3a1 100644
--- a/sample/iter-dialogs.js
+++ b/sample/iter-dialogs.js
@@ -1,54 +1,55 @@
const { TelegramClient } = require("telegram");
module.exports = function (RED) {
- function IterDialogs(config) {
- RED.nodes.createNode(this, config);
- this.config = RED.nodes.getNode(config.config);
- var node = this;
+ function IterDialogs(config) {
+ RED.nodes.createNode(this, config);
+ this.config = RED.nodes.getNode(config.config);
+ var node = this;
- this.on('input', async function (msg) {
-
- /** @type {TelegramClient} */
- const client = msg.payload?.client ? msg.payload.client : this.config.client;
- const limit = msg.payload.limit || config.limit;
- const offsetDate = msg.payload.offsetDate || config.offsetDate;
- const offsetId = msg.payload.offsetId || config.offsetId;
- const offsetPeer = msg.payload?.offsetPeer || undefined;
- const ignorePinned = msg.payload.ignorePinned || config.ignorePinned;
- const ignoreMigrated = msg.payload.ignoreMigrated || config.ignoreMigrated;
- const folder = msg.payload.folder || config.folder;
- const archived = msg.payload.archived || config.archived;
-
- const params = {
- limit: limit !== ""? parseInt(limit) : undefined,
- offsetDate: offsetDate !== "" ? offsetDate:undefined,
- offsetId: offsetId !== "" ? parseInt(offsetId):undefined,
- offsetPeer: offsetPeer,
- ignorePinned: ignorePinned,
- ignoreMigrated: ignoreMigrated,
- folder: folder !== "" ? parseInt(folder):undefined,
- archived: archived,
- }
+ this.on("input", async function (msg) {
+ /** @type {TelegramClient} */
+ const client = msg.payload?.client
+ ? msg.payload.client
+ : this.config.client;
+ const limit = msg.payload.limit || config.limit;
+ const offsetDate = msg.payload.offsetDate || config.offsetDate;
+ const offsetId = msg.payload.offsetId || config.offsetId;
+ const offsetPeer = msg.payload?.offsetPeer || undefined;
+ const ignorePinned = msg.payload.ignorePinned || config.ignorePinned;
+ const ignoreMigrated =
+ msg.payload.ignoreMigrated || config.ignoreMigrated;
+ const folder = msg.payload.folder || config.folder;
+ const archived = msg.payload.archived || config.archived;
- if (offsetDate) {
- params.offsetDate = new Date(offsetDate).getTime() / 1000;
- }
+ const params = {
+ limit: limit !== "" ? parseInt(limit) : undefined,
+ offsetDate: offsetDate !== "" ? offsetDate : undefined,
+ offsetId: offsetId !== "" ? parseInt(offsetId) : undefined,
+ offsetPeer: offsetPeer,
+ ignorePinned: ignorePinned,
+ ignoreMigrated: ignoreMigrated,
+ folder: folder !== "" ? parseInt(folder) : undefined,
+ archived: archived,
+ };
- try {
- const dialogs = {};
- for await (const dialog of client.iterDialogs(params)){
- dialogs[dialog.id] = dialog;
- console.log(`${dialog.id}: ${dialog.title}`);
- }
- node.send({
- payload: { dialogs },
- });
- } catch (err) {
- node.error('Error iter dialogs: ' + err.message);
- }
+ if (offsetDate) {
+ params.offsetDate = new Date(offsetDate).getTime() / 1000;
+ }
+ try {
+ const dialogs = {};
+ for await (const dialog of client.iterDialogs(params)) {
+ dialogs[dialog.id] = dialog;
+ console.log(`${dialog.id}: ${dialog.title}`);
+ }
+ node.send({
+ payload: { dialogs },
});
- }
+ } catch (err) {
+ node.error("Error iter dialogs: " + err.message);
+ }
+ });
+ }
- RED.nodes.registerType('iter-dialogs', IterDialogs);
+ RED.nodes.registerType("iter-dialogs", IterDialogs);
};
diff --git a/sample/iter-messages.html b/sample/iter-messages.html
index 8513f58..6f27002 100644
--- a/sample/iter-messages.html
+++ b/sample/iter-messages.html
@@ -1,351 +1,433 @@
diff --git a/sample/iter-messages.js b/sample/iter-messages.js
index cceba1c..c46c3c4 100644
--- a/sample/iter-messages.js
+++ b/sample/iter-messages.js
@@ -1,94 +1,93 @@
const { TelegramClient, utils, Api } = require("telegram");
module.exports = function (RED) {
- function IterMessages(config) {
- RED.nodes.createNode(this, config);
- this.config = RED.nodes.getNode(config.config);
- var node = this;
+ function IterMessages(config) {
+ RED.nodes.createNode(this, config);
+ this.config = RED.nodes.getNode(config.config);
+ var node = this;
- this.on('input', async function (msg) {
-
- /** @type {TelegramClient} */
- const client = msg.payload?.client ? msg.payload.client : this.config.client;
- const chatId = msg.payload?.chatId ? msg.payload.chatId : config.chatId;
- let peerId = chatId === "me" ? chatId : utils.parseID(chatId);
+ this.on("input", async function (msg) {
+ /** @type {TelegramClient} */
+ const client = msg.payload?.client
+ ? msg.payload.client
+ : this.config.client;
+ const chatId = msg.payload?.chatId ? msg.payload.chatId : config.chatId;
+ let peerId = chatId === "me" ? chatId : utils.parseID(chatId);
- // Получаем параметры из входного сообщения или из конфигурации узла
- const limit = msg.payload?.limit || config.limit;
- const offsetDate = msg.payload?.offsetDate || config.offsetDate;
- const offsetId = msg.payload?.offsetId || config.offsetId;
- const maxId = msg.payload?.maxId || config.maxId;
- const minId = msg.payload?.minId || config.minId;
- const addOffset = msg.payload?.addOffset || config.addOffset;
- const search = msg.payload?.search || config.search;
- const filter = msg.payload?.filter || config.filter;
- const fromUser = msg.payload?.fromUser || config.fromUser;
- const waitTime = msg.payload?.waitTime || config.waitTime;
- const ids = msg.payload?.ids || config.ids;
- const reverse = msg.payload?.reverse || config.reverse;
- const replyTo = msg.payload?.replyTo || config.replyTo;
- const scheduled = msg.payload?.scheduled || config.scheduled;
+ // We receive parameters from the input message or from the node configuration
+ const limit = msg.payload?.limit || config.limit;
+ const offsetDate = msg.payload?.offsetDate || config.offsetDate;
+ const offsetId = msg.payload?.offsetId || config.offsetId;
+ const maxId = msg.payload?.maxId || config.maxId;
+ const minId = msg.payload?.minId || config.minId;
+ const addOffset = msg.payload?.addOffset || config.addOffset;
+ const search = msg.payload?.search || config.search;
+ const filter = msg.payload?.filter || config.filter;
+ const fromUser = msg.payload?.fromUser || config.fromUser;
+ const waitTime = msg.payload?.waitTime || config.waitTime;
+ const ids = msg.payload?.ids || config.ids;
+ const reverse = msg.payload?.reverse || config.reverse;
+ const replyTo = msg.payload?.replyTo || config.replyTo;
+ const scheduled = msg.payload?.scheduled || config.scheduled;
- try {
-
- const params = {
- limit: limit !== ""? parseInt(limit) : undefined,
- offsetDate: offsetDate !== "" ? offsetDate:undefined,
- offsetId: offsetId !== "" ? parseInt(offsetId):undefined,
- maxId: maxId,
- minId: minId,
- addOffset: addOffset,
- search: search !== "" ? search : undefined,
- filter: filter,
- // fromUser: fromUser,
- waitTime: waitTime,
- ids: ids,
- reverse: reverse,
- replyTo: replyTo,
- scheduled: scheduled,
- };
+ try {
+ const params = {
+ limit: limit !== "" ? parseInt(limit) : undefined,
+ offsetDate: offsetDate !== "" ? offsetDate : undefined,
+ offsetId: offsetId !== "" ? parseInt(offsetId) : undefined,
+ maxId: maxId,
+ minId: minId,
+ addOffset: addOffset,
+ search: search !== "" ? search : undefined,
+ filter: filter,
+ // fromUser: fromUser,
+ waitTime: waitTime,
+ ids: ids,
+ reverse: reverse,
+ replyTo: replyTo,
+ scheduled: scheduled,
+ };
- if (offsetDate) {
- params.offsetDate = new Date(offsetDate).getTime() / 1000;
- }
+ if (offsetDate) {
+ params.offsetDate = new Date(offsetDate).getTime() / 1000;
+ }
- if (chatId[0] === "@") {
- peerId = await client.getEntity(chatId);
- }
- const messages = {};
+ if (chatId[0] === "@") {
+ peerId = await client.getEntity(chatId);
+ }
+ const messages = {};
- const filters = msg.payload?.filters || config.filters || [];
+ const filters = msg.payload?.filters || config.filters || [];
- // Обработка выбранных фильтров
- if (filters.length > 0) {
- params.filter = [];
- filters.forEach((filter) => {
- params.filter.push( Api[filter]);
- });
- }
+ // Processing selected filters
+ if (filters.length > 0) {
+ params.filter = [];
+ filters.forEach((filter) => {
+ params.filter.push(Api[filter]);
+ });
+ }
- try {
- for await (const message of client.iterMessages(peerId, params)){
- messages[message.id] = message;
- console.log(message.id, message.text);
- }
- } catch (error) {
- const entity = await client.getInputEntity(peerId)
- for await (const message of client.iterMessages(entity, params)){
- messages[message.id] = message;
- console.log(message.id, message.text);
- }
- }
-
- node.send({
- payload: { messages },
- });
- } catch (err) {
- node.error('Error iter messages: ' + err.message);
- }
+ try {
+ for await (const message of client.iterMessages(peerId, params)) {
+ messages[message.id] = message;
+ console.log(message.id, message.text);
+ }
+ } catch (error) {
+ const entity = await client.getInputEntity(peerId);
+ for await (const message of client.iterMessages(entity, params)) {
+ messages[message.id] = message;
+ console.log(message.id, message.text);
+ }
+ }
+ node.send({
+ payload: { messages },
});
- }
+ } catch (err) {
+ node.error("Error iter messages: " + err.message);
+ }
+ });
+ }
- RED.nodes.registerType('iter-messages', IterMessages);
+ RED.nodes.registerType("iter-messages", IterMessages);
};
diff --git a/sample/receiver.html b/sample/receiver.html
index 534e09c..3ff2891 100644
--- a/sample/receiver.html
+++ b/sample/receiver.html
@@ -1,91 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
diff --git a/sample/receiver.js b/sample/receiver.js
index 36e8e58..6cf1d40 100644
--- a/sample/receiver.js
+++ b/sample/receiver.js
@@ -5,28 +5,26 @@ module.exports = function (RED) {
RED.nodes.createNode(this, config);
this.config = RED.nodes.getNode(config.config);
var node = this;
- const client = this.config.client;
+ const client = this.config.client;
const ignore = config.ignore.split(/\n/);
-
try {
client.addEventHandler((update) => {
- if(update.message.fromId != null && !ignore.includes(update.message.fromId.userId.toString())){
-
+ if (
+ update.message.fromId != null &&
+ !ignore.includes(update.message.fromId.userId.toString())
+ ) {
node.send({
- payload:{
- update
- }
- } )
+ payload: {
+ update,
+ },
+ });
}
-
}, new NewMessage());
-
} catch (err) {
- node.error('Ошибка авторизации: ' + err.message);
+ node.error("Authorization error: " + err.message);
}
-
}
- RED.nodes.registerType('receiver', Receiver);
+ RED.nodes.registerType("receiver", Receiver);
};
diff --git a/sample/send-file.html b/sample/send-file.html
index 90e033d..2cc20bc 100644
--- a/sample/send-file.html
+++ b/sample/send-file.html
@@ -1,444 +1,459 @@
-
diff --git a/sample/send-file.js b/sample/send-file.js
index d27e60b..65532d1 100644
--- a/sample/send-file.js
+++ b/sample/send-file.js
@@ -1,72 +1,77 @@
module.exports = function (RED) {
- function SendFile(config) {
- RED.nodes.createNode(this, config);
- this.config = RED.nodes.getNode(config.config);
- var node = this;
+ 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;
+ 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;
+ /** @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,
- };
-
-
- // Отправка файлов
- const response = await client.sendFile(chatId, params);
- node.send({
- payload: response,
- });
- } catch (err) {
- node.error('Error sending files: ' + err.message);
- }
+ 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);
+ RED.nodes.registerType("send-files", SendFile);
};
diff --git a/sample/send-message.html b/sample/send-message.html
index f38fb43..999fead 100644
--- a/sample/send-message.html
+++ b/sample/send-message.html
@@ -1,292 +1,335 @@
-
-
+
+
diff --git a/sample/send-message.js b/sample/send-message.js
index ee968a1..1957031 100644
--- a/sample/send-message.js
+++ b/sample/send-message.js
@@ -2,82 +2,84 @@ const { TelegramClient } = require("telegram");
const { parseID } = require("telegram/Utils");
module.exports = function (RED) {
- function SendMessage(config) {
- RED.nodes.createNode(this, config);
- this.config = RED.nodes.getNode(config.config);
- var node = this;
+ function SendMessage(config) {
+ RED.nodes.createNode(this, config);
+ this.config = RED.nodes.getNode(config.config);
+ var node = this;
- this.on('input', async function (msg) {
- let chatId = msg.payload.chatId || config.chatId;
- const message = msg.payload.message || config.message;
- const parseMode = msg.payload.parseMode || config.parseMode;
- const schedule = msg.payload.schedule || config.schedule;
- const replyTo = msg.payload.replyTo || config.replyTo;
- const attributes = msg.payload.attributes || config.attributes;
- const formattingEntities = msg.payload.formattingEntities || config.formattingEntities;
- const linkPreview = msg.payload.linkPreview || config.linkPreview;
- const file = msg.payload.file || config.file;
- const thumb = msg.payload.thumb || config.thumb;
- const forceDocument = msg.payload.forceDocument || config.forceDocument;
- const clearDraft = msg.payload.clearDraft || config.clearDraft;
- const buttons = msg.payload.buttons || config.buttons;
- const silent = msg.payload.silent || config.silent;
- const supportStreaming = msg.payload.supportStreaming || config.supportStreaming;
- const noforwards = msg.payload.noforwards || config.noforwards;
- const commentTo = msg.payload.commentTo || config.commentTo;
- const topMsgId = msg.payload.topMsgId || config.topMsgId;
+ this.on("input", async function (msg) {
+ let chatId = msg.payload.chatId || config.chatId;
+ const message = msg.payload.message || config.message;
+ const parseMode = msg.payload.parseMode || config.parseMode;
+ const schedule = msg.payload.schedule || config.schedule;
+ const replyTo = msg.payload.replyTo || config.replyTo;
+ const attributes = msg.payload.attributes || config.attributes;
+ const formattingEntities =
+ msg.payload.formattingEntities || config.formattingEntities;
+ const linkPreview = msg.payload.linkPreview || config.linkPreview;
+ const file = msg.payload.file || config.file;
+ const thumb = msg.payload.thumb || config.thumb;
+ const forceDocument = msg.payload.forceDocument || config.forceDocument;
+ const clearDraft = msg.payload.clearDraft || config.clearDraft;
+ const buttons = msg.payload.buttons || config.buttons;
+ const silent = msg.payload.silent || config.silent;
+ const supportStreaming =
+ msg.payload.supportStreaming || config.supportStreaming;
+ 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;
- let peerId = chatId === "me" ? chatId : parseID(chatId);
+ /** @type {TelegramClient} */
+ const client = msg.payload?.client
+ ? msg.payload.client
+ : this.config.client;
+ let peerId = chatId === "me" ? chatId : parseID(chatId);
- try {
- const params = {
- message: message,
- parseMode: parseMode,
- replyTo: replyTo !== ""? replyTo:undefined,
- attributes: attributes,
- formattingEntities: formattingEntities !== ""? formattingEntities:undefined,
- linkPreview: linkPreview,
- file: file !== "" && file.length > 1? file:undefined,
- thumb: thumb,
- forceDocument: forceDocument,
- clearDraft: clearDraft,
- buttons: buttons !== "" ? buttons : undefined,
- silent: silent,
- supportStreaming: supportStreaming,
- noforwards: noforwards,
- commentTo: commentTo !== "" ? commentTo : undefined,
- topMsgId: topMsgId !== topMsgId ? commentTo : undefined,
- };
+ try {
+ const params = {
+ message: message,
+ parseMode: parseMode,
+ replyTo: replyTo !== "" ? replyTo : undefined,
+ attributes: attributes,
+ formattingEntities:
+ formattingEntities !== "" ? formattingEntities : undefined,
+ linkPreview: linkPreview,
+ file: file !== "" && file.length > 1 ? file : undefined,
+ thumb: thumb,
+ forceDocument: forceDocument,
+ clearDraft: clearDraft,
+ buttons: buttons !== "" ? buttons : undefined,
+ silent: silent,
+ supportStreaming: supportStreaming,
+ noforwards: noforwards,
+ commentTo: commentTo !== "" ? commentTo : undefined,
+ topMsgId: topMsgId !== topMsgId ? commentTo : undefined,
+ };
- if (schedule) {
- params.schedule = new Date(schedule).getTime() / 1000;
- }
+ if (schedule) {
+ params.schedule = new Date(schedule).getTime() / 1000;
+ }
- let response;
- if (chatId[0] === "@") {
- peerId = await client.getEntity(chatId);
- }
-
+ let response;
+ if (chatId[0] === "@") {
+ peerId = await client.getEntity(chatId);
+ }
- try {
- response = await client.sendMessage(peerId, params);
- } catch (error) {
- const entity = await client.getInputEntity(peerId)
- await client.sendMessage(entity, params);
- }
-
- node.send({
- payload: { response },
- });
- } catch (err) {
- node.error('Error send message: ' + err.message);
- }
+ try {
+ response = await client.sendMessage(peerId, params);
+ } catch (error) {
+ const entity = await client.getInputEntity(peerId);
+ await client.sendMessage(entity, params);
+ }
+ node.send({
+ payload: { response },
});
+ } catch (err) {
+ node.error("Error send message: " + err.message);
+ }
+ });
+ }
- }
-
- RED.nodes.registerType('send-message', SendMessage);
+ RED.nodes.registerType("send-message", SendMessage);
};