-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
146 lines (123 loc) · 3.92 KB
/
app.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
var feedReader = require('./feed/feedReader.js');
var schedule = require('node-schedule');
var cache = require('memory-cache');
const TeleBot = require('telebot');
const bot = new TeleBot(<BOT_API_TOKEN_HERE>);
var userController = require('./persistence/controllers/userController.js');
var podcastsController = require('./persistence/controllers/podcastsController.js');
const KEY_DATE = 'publishedDate';
const INITIAL_DATE = '2016-12-17 21:00:46.000';
cache.put(KEY_DATE, INITIAL_DATE);
var rule = new schedule.RecurrenceRule();
rule.minute = 30;
var j = schedule.scheduleJob(rule, function(){
feedReader.updateFeed();
});
/***************** <TELEGRAM> *********************/
bot.connect();
bot.on('/help', (msg, self) => {
var commands = "*Essa é a lista de comandos que esse bot suporta:*\n\n[/help](/help) - Listar comandos\n\n[/subscribe](/subscribe) - Assinar o bot\n\n[/unsubscribe](/unsubscribe) - Sair do bot\n\n[/last_cast](/last_cast) - Último programa\n\n[/last_review](/last_review) - Último Álbum Review\n\n[/casts](/casts) - Últimos 5 Programas\n\n[/reviews](/reviews) - Últimos 5 Álbum Review\n\n"
let id = msg.from.id;
let reply = msg.message_id;
let type = self.type;
let parse = 'markdown';
return bot.sendMessage(id, commands, { reply, parse });
});
bot.on(['/subscribe', '/start'], msg => {
let fromId = msg.from.id;
let firstName = msg.from.first_name;
let reply = msg.message_id;
var user = {user_id : fromId, user_name : firstName};
userController.insert(user, function(result, dbError) {
if (dbError) {
return bot.sendMessage(fromId, `Bem vindo de volta!`, { reply });
}
else {
return bot.sendMessage(fromId, `Saudações Musiqueiro!`, { reply });
console.log('Success! Item inserted');
}
});
});
bot.on('/unsubscribe', msg => {
let fromId = msg.from.id;
let reply = msg.message_id;
userController.delete(fromId, function(result, dbError) {
if (dbError) {
return bot.sendMessage(fromId, `Comando Inválido. Parece que você ainda não assinou o nosso feed`, { reply });
}
else {
return bot.sendMessage(fromId, `Até mais musiqueiro e tenha uma boa vida!`, { reply });
console.log('Success! Item inserted');
}
});
});
bot.on('/last_cast', msg => {
podcastsController.getLastPodcast(function(result, dbError) {
if (dbError) {
return bot.sendMessage(msg.from.id, "Foi mal musiqueiro, alguma coisa deu errada");
}
else {
return bot.sendMessage(msg.from.id, result[0].post_url);
}
})
});
bot.on('/last_review', msg => {
podcastsController.getLastReview(function(result, dbError) {
if (dbError) {
return bot.sendMessage(msg.from.id, "Foi mal musiqueiro, alguma coisa deu errada");
}
else {
return bot.sendMessage(msg.from.id, result[0].post_url);
}
})
});
bot.on('/casts', msg => {
podcastsController.getShows(function(result, dbError) {
if (dbError) {
return bot.sendMessage(msg.from.id, "Foi mal musiqueiro, alguma coisa deu errada");
}
else {
sendCasts(msg.from.id, 0, result);
}
return true;
});
});
bot.on('/reviews', msg => {
podcastsController.getReviews(function(result, dbError) {
if (dbError) {
return bot.sendMessage(msg.from.id, "Foi mal musiqueiro, alguma coisa deu errada");
}
else {
console.log(result);
sendCasts(msg.from.id, 0, result);
}
return true;
});
});
/***************** </TELEGRAM> *********************/
var sendCasts = function(user, index, casts) {
if (index < casts.length) {
bot.sendMessage(user, casts[index].post_url);
setTimeout(function() {
sendCasts(user, index + 1, casts);
}, 200)
}
return;
};
var sendPushNotification = function(link) {
userController.getAll(function(result, dbError) {
if (dbError) {
console.log('DB Error! Cannot perform query.');
}
else {
result.forEach( function(element, index) {
setTimeout(function() {
bot.sendMessage(element.user_id, link);
}, 50);
});
}
});
};
module.exports = {
sendShow : sendPushNotification
};