Commit aff0e584c0ce5cb882b205d64bdf127d16984134
1 parent
d94bc60ef5
Exists in
master
perbaikan sendMessage
Showing 1 changed file with 13 additions and 4 deletions Inline Diff
index.js
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); |