fix: add parsing income message #10

Merged
redrockjs merged 1 commits from dev into main 2024-05-16 20:02:39 +00:00
2 changed files with 54 additions and 8 deletions

View File

@@ -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);

View File

@@ -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)
}