Merge pull request #10 from redrockjs/dev
fix: add parsing income message
This commit was merged in pull request #10.
This commit is contained in:
@@ -48,7 +48,7 @@ var simpleParser = require('mailparser').simpleParser;
|
|||||||
var Telegraf = require('telegraf').Telegraf;
|
var Telegraf = require('telegraf').Telegraf;
|
||||||
require('dotenv').config();
|
require('dotenv').config();
|
||||||
var bot = new Telegraf(process.env.TELEGRAM_BOT_TOKEN);
|
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 MARK_STRING = process.env.MARK_STRING;
|
||||||
var clientConfig = {
|
var clientConfig = {
|
||||||
host: process.env.EMAIL_IMAP_SERVER,
|
host: process.env.EMAIL_IMAP_SERVER,
|
||||||
@@ -90,7 +90,7 @@ var main = function () { return __awaiter(_this, void 0, void 0, function () {
|
|||||||
_f = _c.value;
|
_f = _c.value;
|
||||||
_a = false;
|
_a = false;
|
||||||
message = _f;
|
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();
|
email = Buffer.from(message.source).toString();
|
||||||
return [4 /*yield*/, simpleParser(email)];
|
return [4 /*yield*/, simpleParser(email)];
|
||||||
case 1:
|
case 1:
|
||||||
@@ -103,7 +103,7 @@ var main = function () { return __awaiter(_this, void 0, void 0, function () {
|
|||||||
}
|
}
|
||||||
client.messageFlagsAdd(message.seq.toString(), ['\\Seen'])
|
client.messageFlagsAdd(message.seq.toString(), ['\\Seen'])
|
||||||
.then(function (result) { return console.log('📌', chalk.cyan("Set seen flag for id-".concat(message.seq)), result); })
|
.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;
|
_h.label = 2;
|
||||||
case 2: return [2 /*return*/];
|
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
|
//main().then().catch(err => console.error(err)); // start once for development
|
||||||
setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
|
setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
main().then().catch(function (err) { return console.error(err); });
|
main().then().catch(console.error);
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
});
|
});
|
||||||
}); }, POLLING_TIMEOUT * 1000);
|
}); }, Number(POLLING_TIMEOUT) * 1000);
|
||||||
|
|||||||
52
src/index.ts
52
src/index.ts
@@ -36,13 +36,59 @@ const main = async () => {
|
|||||||
source: true
|
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()
|
let email = Buffer.from(message.source).toString()
|
||||||
const parsed = await simpleParser(email)
|
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) {
|
if (parsed.text) {
|
||||||
bot.telegram.sendMessage(process.env.TELEGRAM_GROUP_ID, parsed.text)
|
bot.telegram.sendMessage(process.env.TELEGRAM_GROUP_ID, preparedMessage)
|
||||||
.then()
|
.then()
|
||||||
.catch(console.error)
|
.catch(console.error)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user