index.js
2.32 KB
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
var telegram = require('node-telegram-bot-api');
var logger = require('./logger.js').start();
var http = require('http');
var evo = require('./evo-im.js');
var config = require('./config.json');
evo.start({
config: config,
logger: logger
});
var chat_ids = {};
var options = {
webHook: {
port: config.webhook_port,
key: __dirname+'/key.pem',
cert: __dirname+'/crt.pem'
}
};
var bot = new telegram(config.token, options);
bot.setWebHook(config.webhook_prefix + config.token, __dirname+'/crt.pem');
function deleteChatId(from) {
delete chat_ids[from];
}
function updateChatId(from, chat_id) {
chat_ids[from] = chat_id;
logger.verbose('Chat id ' + chat_id + ' ' + from);
}
function sendMessage(destination, message) {
var chat_id = chat_ids[destination];
if (!chat_id) {
logger.warn('Can not find approriate chat id for ' + destination + '. Abort sending message.');
return;
}
logger.info('Sending reply to ' + destination + '(' + chat_id + '): ' + message);
bot.sendMessage(chat_id, message);
}
bot.getMe().then(function (me) {
logger.info('Hi my name is %s!', me.username);
});
bot.on('text', function (msg) {
logger.info('Incoming message (' + msg.chat.id + '): ' + msg.text, {message: msg});
var from = msg.from.username.toUpperCase() + config.msisdn_suffix;
var now = Math.floor(new Date().getTime()/1000);
if (now - msg.date > config.message_max_age){
var message = "Pesan anda diabaikan, silahkan diulang beberapa saat lagi jika diperlukan: " + msg.text;
logger.info(message, {msg: msg})
//bot.sendMessage(msg.chat.id, message);
sendMessage(from, message);
return;
}
updateChatId(from, msg.chat.id);
var greeting_prefix = "Pesan anda telah diterima:";
if (config.greeting_prefix) {
greeting_prefix = config.greeting_prefix;
}
bot.sendMessage(msg.chat.id, greeting_prefix + ' ' + msg.text);
setTimeout(
evo.onMessage,
300,
from, msg.text, msg.date * 1000, sendMessage
);
});
function dumpChatIds() {
var i = 0;
for (var key in chat_ids) {
logger.verbose('DUMPED CHAT IDS #' + ++i + ' ' + key + ': ' + chat_ids[key])
}
logger.verbose('TOTAL ' + i + ' chat ids');
}
if (config.dump_chat_ids_interval) {
setInterval(dumpChatIds, config.dump_chat_ids_interval * 1000);
}