-
Notifications
You must be signed in to change notification settings - Fork 0
/
bot.js
54 lines (43 loc) · 1.29 KB
/
bot.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
const config = require('./config');
const Slimbot = require('slimbot');
const Parser = require('rss-parser');
const bot = new Slimbot(config.TELEGRAM_BOT_TOKEN);
const Vacancy = require('./dbSchema');
const parser = new Parser();
function getFeed(uri) {
(async () => {
let feed = await parser.parseURL(uri);
makeMessage(feed.items);
})();
}
function makeMessage(dataFeed) {
dataFeed.forEach((vacancyItem) => {
let vacancyMess = renderTextMessage(vacancyItem.title, vacancyItem.link, vacancyItem.content);
if (vacancyMess) {
new Vacancy({
guid: vacancyItem.guid
}).save()
.then(() => sendBotMessage(vacancyMess))
.catch(() => false);
}
});
}
function renderTextMessage(vTitle, vLink, vContent) {
let typeVacancy,
vacancyStr = `\n<b>${vTitle}</b>\n\n${vContent}\n\n<a href='${vLink}'>${vLink}</a>`;
if (vContent.toLocaleLowerCase().indexOf('vue') > -1) {
typeVacancy = 'vue';
} else if (vContent.toLocaleLowerCase().indexOf('bitrix') > -1 || vContent.toLocaleLowerCase().indexOf('битрикс') > -1) {
typeVacancy = 'битрикс';
} else return false;
vacancyStr = `#${typeVacancy}` + vacancyStr;
return vacancyStr;
}
function sendBotMessage(message) {
bot.sendMessage(config.CHAT_ID, message, {
parse_mode: 'HTML',
});
}
module.exports = {
getFeed,
};