Commit aff0e584c0ce5cb882b205d64bdf127d16984134

Authored by Adhidarma Hadiwinoto
1 parent d94bc60ef5
Exists in master

perbaikan sendMessage

Showing 1 changed file with 13 additions and 4 deletions Inline Diff

1 var telegram = require('node-telegram-bot-api'); 1 var telegram = require('node-telegram-bot-api');
2 var logger = require('./logger.js').start(); 2 var logger = require('./logger.js').start();
3 var http = require('http'); 3 var http = require('http');
4 var evo = require('./evo-im.js'); 4 var evo = require('./evo-im.js');
5 5
6 var config = require('./config.json'); 6 var config = require('./config.json');
7 7
8 evo.start({ 8 evo.start({
9 config: config, 9 config: config,
10 logger: logger 10 logger: logger
11 }); 11 });
12 12
13 var chat_ids = {}; 13 var chat_ids = {};
14 14
15 var options = { 15 var options = {
16 webHook: { 16 webHook: {
17 port: config.webhook_port, 17 port: config.webhook_port,
18 key: __dirname+'/key.pem', 18 key: __dirname+'/key.pem',
19 cert: __dirname+'/crt.pem' 19 cert: __dirname+'/crt.pem'
20 } 20 }
21 }; 21 };
22 22
23 var bot = new telegram(config.token, options); 23 var bot = new telegram(config.token, options);
24 bot.setWebHook(config.webhook_prefix + config.token, __dirname+'/crt.pem'); 24 bot.setWebHook(config.webhook_prefix + config.token, __dirname+'/crt.pem');
25 25
26 function deleteChatId(from) { 26 function deleteChatId(from) {
27 delete chat_ids[from]; 27 delete chat_ids[from];
28 } 28 }
29 29
30 function updateChatId(from, chat_id) { 30 function updateChatId(from, chat_id) {
31 chat_ids[from] = chat_id; 31 chat_ids[from.toLowerCase()] = chat_id;
32 logger.verbose('Chat id ' + chat_id + ' ' + from); 32 logger.verbose('Chat id ' + chat_id + ' ' + from);
33 } 33 }
34 34
35 function getChatId(partner) {
36 try {
37 return chat_ids[partner.toLowerCase()];
38 }
39 catch(e) {
40 return;
41 }
42
43 }
44
35 function sendMessage(destination, message) { 45 function sendMessage(destination, message) {
36 var chat_id = chat_ids[destination]; 46 var chat_id = getChatId(destination);
37 47
38 if (!chat_id) { 48 if (!chat_id) {
39 logger.warn('Can not find approriate chat id for ' + destination + '. Abort sending message.'); 49 logger.warn('Can not find approriate chat id for ' + destination + '. Abort sending message.');
40 return; 50 return;
41 } 51 }
42 52
43 logger.info('Sending reply to ' + destination + '(' + chat_id + '): ' + message); 53 logger.info('Sending reply to ' + destination + '(' + chat_id + '): ' + message);
44 54
45 bot.sendMessage(chat_id, message); 55 bot.sendMessage(chat_id, message);
46 } 56 }
47 57
48 bot.getMe().then(function (me) { 58 bot.getMe().then(function (me) {
49 logger.info('Hi my name is %s!', me.username); 59 logger.info('Hi my name is %s!', me.username);
50 }); 60 });
51 61
52 bot.on('text', function (msg) { 62 bot.on('text', function (msg) {
53 logger.info('Incoming message (' + msg.chat.id + '): ' + msg.text, {message: msg}); 63 logger.info('Incoming message (' + msg.chat.id + '): ' + msg.text, {message: msg});
54 64
55 var from = msg.from.username.toUpperCase() + config.msisdn_suffix; 65 var from = msg.from.username.toUpperCase() + config.msisdn_suffix;
66 updateChatId(from, msg.chat.id);
56 67
57 var now = Math.floor(new Date().getTime()/1000); 68 var now = Math.floor(new Date().getTime()/1000);
58 69
59 if (now - msg.date > config.message_max_age){ 70 if (now - msg.date > config.message_max_age){
60 var message = "Pesan anda diabaikan, silahkan diulang beberapa saat lagi jika diperlukan: " + msg.text; 71 var message = "Pesan anda diabaikan, silahkan diulang beberapa saat lagi jika diperlukan: " + msg.text;
61 logger.info(message, {msg: msg}) 72 logger.info(message, {msg: msg})
62 //bot.sendMessage(msg.chat.id, message); 73 //bot.sendMessage(msg.chat.id, message);
63 sendMessage(from, message); 74 sendMessage(from, message);
64 return; 75 return;
65 } 76 }
66 77
67 updateChatId(from, msg.chat.id);
68
69 var greeting_prefix = "Pesan anda telah diterima:"; 78 var greeting_prefix = "Pesan anda telah diterima:";
70 if (config.greeting_prefix) { 79 if (config.greeting_prefix) {
71 greeting_prefix = config.greeting_prefix; 80 greeting_prefix = config.greeting_prefix;
72 } 81 }
73 82
74 bot.sendMessage(msg.chat.id, greeting_prefix + ' ' + msg.text); 83 bot.sendMessage(msg.chat.id, greeting_prefix + ' ' + msg.text);
75 setTimeout( 84 setTimeout(
76 evo.onMessage, 85 evo.onMessage,
77 300, 86 300,
78 from, msg.text, msg.date * 1000, sendMessage 87 from, msg.text, msg.date * 1000, sendMessage
79 ); 88 );
80 }); 89 });
81 90
82 function dumpChatIds() { 91 function dumpChatIds() {
83 var i = 0; 92 var i = 0;
84 for (var key in chat_ids) { 93 for (var key in chat_ids) {
85 logger.verbose('DUMPED CHAT IDS #' + ++i + ' ' + key + ': ' + chat_ids[key]) 94 logger.verbose('DUMPED CHAT IDS #' + ++i + ' ' + key + ': ' + chat_ids[key])
86 } 95 }
87 96
88 logger.verbose('TOTAL ' + i + ' chat ids'); 97 logger.verbose('TOTAL ' + i + ' chat ids');
89 } 98 }
90 99
91 if (config.dump_chat_ids_interval) { 100 if (config.dump_chat_ids_interval) {
92 setInterval(dumpChatIds, config.dump_chat_ids_interval * 1000); 101 setInterval(dumpChatIds, config.dump_chat_ids_interval * 1000);