From 4cc2b8d09877b76319c1eec610191aac5471f054 Mon Sep 17 00:00:00 2001 From: RedRock Date: Thu, 16 May 2024 23:03:09 +0300 Subject: [PATCH] fix: add parsing income message --- build/index.js | 10 +++++----- src/index.ts | 52 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/build/index.js b/build/index.js index c8c5686..0322a33 100644 --- a/build/index.js +++ b/build/index.js @@ -48,7 +48,7 @@ var simpleParser = require('mailparser').simpleParser; var Telegraf = require('telegraf').Telegraf; require('dotenv').config(); var bot = new Telegraf(process.env.TELEGRAM_BOT_TOKEN); -var POLLING_TIMEOUT = 30; +var POLLING_TIMEOUT = process.env.POLLING_TIMEOUT; var MARK_STRING = process.env.MARK_STRING; var clientConfig = { host: process.env.EMAIL_IMAP_SERVER, @@ -90,7 +90,7 @@ var main = function () { return __awaiter(_this, void 0, void 0, function () { _f = _c.value; _a = false; message = _f; - if (!(message.envelope.subject === MARK_STRING)) return [3 /*break*/, 2]; + if (!message.envelope.subject.includes(MARK_STRING)) return [3 /*break*/, 2]; email = Buffer.from(message.source).toString(); return [4 /*yield*/, simpleParser(email)]; case 1: @@ -103,7 +103,7 @@ var main = function () { return __awaiter(_this, void 0, void 0, function () { } client.messageFlagsAdd(message.seq.toString(), ['\\Seen']) .then(function (result) { return console.log('📌', chalk.cyan("Set seen flag for id-".concat(message.seq)), result); }) - .catch(function (error) { return console.log(error); }); + .catch(console.error); _h.label = 2; case 2: return [2 /*return*/]; } @@ -160,7 +160,7 @@ var main = function () { return __awaiter(_this, void 0, void 0, function () { //main().then().catch(err => console.error(err)); // start once for development setInterval(function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { - main().then().catch(function (err) { return console.error(err); }); + main().then().catch(console.error); return [2 /*return*/]; }); -}); }, POLLING_TIMEOUT * 1000); +}); }, Number(POLLING_TIMEOUT) * 1000); diff --git a/src/index.ts b/src/index.ts index 4908444..4d92cef 100644 --- a/src/index.ts +++ b/src/index.ts @@ -36,13 +36,59 @@ const main = async () => { source: true })) { - if (message.envelope.subject.includes(MARK_STRING)) { + if (message.envelope.subject && message.envelope.subject.includes(MARK_STRING)) { let email = Buffer.from(message.source).toString() const parsed = await simpleParser(email) - console.log('📌', chalk.cyan('Message:'), chalk.yellow(parsed.text)); + //console.log('📌', chalk.cyan('Message:'), chalk.yellow(parsed.text)); + + let messageArr = parsed.text.slice().split('\n').filter((el: string) => el !== '') + + const title = + messageArr[1] + .slice() + .split(' ') + .at(-1) + + const groupName = + messageArr[1] + .slice() + .replace('В АС СТП на Вашу группу Адлер ', '') + .replace(' назначено обращение', '') + .split(' ') + .slice(0, -1) + .join(' ') + + const user = messageArr[4] + + const subject = messageArr[6] + + const estimatedDate = + messageArr[7] + .slice() + .split(' ')[3] + + const estimatedTime = + messageArr[7] + .slice() + .split(' ')[4] + + console.log( + `📌 Новое обращение: ${title}`, '\n', + `Группа: ${groupName}`, '\n', + `${user}`, '\n', + `${subject}`, '\n', + `Время выполнения: ${estimatedDate} ${estimatedTime}`, '\n' + ) + + const preparedMessage = + `📌 Новое обращение: ${title}\n` + + `Группа: ${groupName}\n` + + `${user}\n` + + `${subject}\n` + + `Время выполнения: ${estimatedDate} ${estimatedTime}\n` if (parsed.text) { - bot.telegram.sendMessage(process.env.TELEGRAM_GROUP_ID, parsed.text) + bot.telegram.sendMessage(process.env.TELEGRAM_GROUP_ID, preparedMessage) .then() .catch(console.error) }