Commit d94bc60ef57eabf628166e07bf664c9b0aa56e10
1 parent
c9fecc1795
Exists in
master
debug chat id
Showing 1 changed file with 6 additions and 1 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) { | ||
31 | chat_ids[from] = chat_id; | ||
32 | logger.verbose('Chat id ' + chat_id + ' ' + from); | ||
33 | } | ||
34 | |||
30 | function sendMessage(destination, message) { | 35 | function sendMessage(destination, message) { |
31 | var chat_id = chat_ids[destination]; | 36 | var chat_id = chat_ids[destination]; |
32 | 37 | ||
33 | if (!chat_id) { | 38 | if (!chat_id) { |
34 | logger.warn('Can not find approriate chat id for ' + destination + '. Abort sending message.'); | 39 | logger.warn('Can not find approriate chat id for ' + destination + '. Abort sending message.'); |
35 | return; | 40 | return; |
36 | } | 41 | } |
37 | 42 | ||
38 | logger.info('Sending reply to ' + destination + '(' + chat_id + '): ' + message); | 43 | logger.info('Sending reply to ' + destination + '(' + chat_id + '): ' + message); |
39 | 44 | ||
40 | bot.sendMessage(chat_id, message); | 45 | bot.sendMessage(chat_id, message); |
41 | } | 46 | } |
42 | 47 | ||
43 | bot.getMe().then(function (me) { | 48 | bot.getMe().then(function (me) { |
44 | logger.info('Hi my name is %s!', me.username); | 49 | logger.info('Hi my name is %s!', me.username); |
45 | }); | 50 | }); |
46 | 51 | ||
47 | bot.on('text', function (msg) { | 52 | bot.on('text', function (msg) { |
48 | logger.info('Incoming message (' + msg.chat.id + '): ' + msg.text, {message: msg}); | 53 | logger.info('Incoming message (' + msg.chat.id + '): ' + msg.text, {message: msg}); |
49 | 54 | ||
50 | var from = msg.from.username.toUpperCase() + config.msisdn_suffix; | 55 | var from = msg.from.username.toUpperCase() + config.msisdn_suffix; |
51 | 56 | ||
52 | var now = Math.floor(new Date().getTime()/1000); | 57 | var now = Math.floor(new Date().getTime()/1000); |
53 | 58 | ||
54 | if (now - msg.date > config.message_max_age){ | 59 | if (now - msg.date > config.message_max_age){ |
55 | var message = "Pesan anda diabaikan, silahkan diulang beberapa saat lagi jika diperlukan: " + msg.text; | 60 | var message = "Pesan anda diabaikan, silahkan diulang beberapa saat lagi jika diperlukan: " + msg.text; |
56 | logger.info(message, {msg: msg}) | 61 | logger.info(message, {msg: msg}) |
57 | //bot.sendMessage(msg.chat.id, message); | 62 | //bot.sendMessage(msg.chat.id, message); |
58 | sendMessage(from, message); | 63 | sendMessage(from, message); |
59 | return; | 64 | return; |
60 | } | 65 | } |
61 | 66 | ||
62 | chat_ids[from] = msg.chat.id; | 67 | updateChatId(from, msg.chat.id); |
63 | 68 | ||
64 | var greeting_prefix = "Pesan anda telah diterima:"; | 69 | var greeting_prefix = "Pesan anda telah diterima:"; |
65 | if (config.greeting_prefix) { | 70 | if (config.greeting_prefix) { |
66 | greeting_prefix = config.greeting_prefix; | 71 | greeting_prefix = config.greeting_prefix; |
67 | } | 72 | } |
68 | 73 | ||
69 | bot.sendMessage(msg.chat.id, greeting_prefix + ' ' + msg.text); | 74 | bot.sendMessage(msg.chat.id, greeting_prefix + ' ' + msg.text); |
70 | setTimeout( | 75 | setTimeout( |
71 | evo.onMessage, | 76 | evo.onMessage, |
72 | 300, | 77 | 300, |
73 | from, msg.text, msg.date * 1000, sendMessage | 78 | from, msg.text, msg.date * 1000, sendMessage |
74 | ); | 79 | ); |
75 | }); | 80 | }); |
76 | 81 | ||
77 | function dumpChatIds() { | 82 | function dumpChatIds() { |
78 | var i = 0; | 83 | var i = 0; |
79 | for (var key in chat_ids) { | 84 | for (var key in chat_ids) { |
80 | logger.verbose('DUMPED CHAT IDS #' + ++i + ' ' + key + ': ' + chat_ids[key]) | 85 | logger.verbose('DUMPED CHAT IDS #' + ++i + ' ' + key + ': ' + chat_ids[key]) |
81 | } | 86 | } |
82 | 87 | ||
83 | logger.verbose('TOTAL ' + i + ' chat ids'); | 88 | logger.verbose('TOTAL ' + i + ' chat ids'); |
84 | } | 89 | } |
85 | 90 | ||
86 | if (config.dump_chat_ids_interval) { | 91 | if (config.dump_chat_ids_interval) { |
87 | setInterval(dumpChatIds, config.dump_chat_ids_interval * 1000); | 92 | setInterval(dumpChatIds, config.dump_chat_ids_interval * 1000); |
88 | } | 93 | } |
89 | 94 |