Commit 56a7a389a551587cdbec58922487ec90827ddcf0

Authored by Adhidarma Hadiwinoto
1 parent 4cf39e1382
Exists in master

check msg is a string

Showing 1 changed file with 3 additions and 3 deletions Inline Diff

transport-telegram.js
1 "use strict"; 1 "use strict";
2 2
3 const TelegramBot = require('node-telegram-bot-api'); 3 const TelegramBot = require('node-telegram-bot-api');
4 const LRU = require('lru-cache'); 4 const LRU = require('lru-cache');
5 5
6 const config = require('komodo-sdk/config') 6 const config = require('komodo-sdk/config')
7 const logger = require('komodo-sdk/logger'); 7 const logger = require('komodo-sdk/logger');
8 8
9 let bot; 9 let bot;
10 let _callback; 10 let _callback;
11 11
12 const chats = LRU({ 12 const chats = LRU({
13 max: config.max_chats || 200, 13 max: config.max_chats || 200,
14 maxAge: 1000 * 3600 14 maxAge: 1000 * 3600
15 }); 15 });
16 16
17 function onMessage(msg) { 17 function onMessage(msg) {
18 //console.log(msg); 18 //console.log(msg);
19 19
20 const now = Math.floor(new Date().getTime()/1000); 20 const now = Math.floor(new Date().getTime()/1000);
21 const age = now - msg.date; 21 const age = now - msg.date;
22 22
23 if (now - msg.date > (config.message_max_age || 120 * 1000)){ 23 if (now - msg.date > (config.message_max_age || 120 * 1000)){
24 logger.info('Pesan diabaikan'); 24 logger.info('Pesan diabaikan');
25 return; 25 return;
26 } 26 }
27 27
28 const partner = ( msg.from.username + ( config.transport.username_suffix || '@telegram.org') ).toLowerCase(); 28 const partner = ( msg.from.username + ( config.transport.username_suffix || '@telegram.org') ).toLowerCase();
29 const incomingMessage = msg.text.trim(); 29 const incomingMessage = msg.text.trim();
30 30
31 chats.set(partner, msg.chat.id); 31 chats.set(partner, msg.chat.id);
32 logger.info('Incoming message', {partner: partner, msg: incomingMessage, msgObj: msg, chat_id: chats.get(partner)}); 32 logger.info('Incoming message', {partner: partner, msg: incomingMessage, msgObj: msg, chat_id: chats.get(partner)});
33 33
34 if (_callback && _callback.onIncomingMessage) { 34 if (_callback && _callback.onIncomingMessage) {
35 _callback.onIncomingMessage({ 35 _callback.onIncomingMessage({
36 me: "TELEGRAM", 36 me: "TELEGRAM",
37 partner: partner, 37 partner: partner,
38 msg: incomingMessage 38 msg: incomingMessage
39 }) 39 })
40 } 40 }
41 } 41 }
42 42
43 function init(cb) { 43 function init(cb) {
44 if (!cb) { 44 if (!cb) {
45 logger.warn('Callback is not defined'); 45 logger.warn('Callback is not defined');
46 console.trace(); 46 console.trace();
47 process.exit(1); 47 process.exit(1);
48 return; 48 return;
49 } 49 }
50 50
51 _callback = cb; 51 _callback = cb;
52 bot = new TelegramBot(config.transport.token, {polling: true}); 52 bot = new TelegramBot(config.transport.token, {polling: true});
53 53
54 bot.on('message', onMessage); 54 bot.on('message', onMessage);
55 } 55 }
56 56
57 function send(partner, msg) { 57 function send(partner, msg) {
58 if (!partner) { 58 if (!partner) {
59 logger.warn('Invalid partner'); 59 logger.warn('Invalid partner');
60 return; 60 return;
61 } 61 }
62 62
63 if (!msg) { 63 if (!msg || (typeof msg !== 'string')) {
64 logger.warn('Invalid message'); 64 logger.warn('Invalid message', {msg: msg});
65 return; 65 return;
66 } 66 }
67 67
68 const chat_id = chats.get(partner.toLowerCase()); 68 const chat_id = chats.get(partner.toLowerCase());
69 if (!chat_id) { 69 if (!chat_id) {
70 logger.warn('Unknown chat id for partner:' + partner.toLowerCase()); 70 logger.warn('Unknown chat id for partner:' + partner.toLowerCase());
71 return; 71 return;
72 } 72 }
73 73
74 logger.verbose('Sending message via transport', {transport: 'telegram', chat_id: chat_id, partner: partner, msg: msg}); 74 logger.verbose('Sending message via transport', {transport: 'telegram', chat_id: chat_id, partner: partner, msg: msg});
75 75
76 bot.sendMessage(chat_id, msg); 76 bot.sendMessage(chat_id, msg);
77 } 77 }
78 78
79 exports.init = init; 79 exports.init = init;
80 exports.send = send; 80 exports.send = send;
81 81