import TelegramBot from 'node-telegram-bot-api' import debug from 'debug' var log = debug('durov') import config from 'config' import { formatQuote, formatTitle } from './common/MessageUtils' import { format } from '../src/utils/embed' let sender let demouser let bot_token const durov_token_key = 'service.durov.token' if (config.has(durov_token_key)) { bot_token = config.get(durov_token_key) sender = new TelegramBot(bot_token) demouser = config.get('service.durov.demouser') sender.setWebHook(`${config.get('service.baseURL')}/api/${bot_token}`).then(() => { log('Webhook is set') }).catch(console.log) sender.on('message', msg => { log(`MESSAGE: ${JSON.stringify(msg)}`) }) } export const webhookPath = () => { return bot_token } export const webhook = (req, res) => { sender.processUpdate(JSON.parse(req.body)) res.sendStatus(200) } /** * @param {import('../src/api').Message} msg * @param {string[]} subscribers */ export const sendTelegramNotification = (msg, subscribers) => { log(`Telegram event: ${JSON.stringify(msg)}, ${subscribers} ${subscribers.length}`) if (!msg.service) { if (subscribers && subscribers.includes(demouser)) { const message = `${formatTitle(msg)}\n${formatQuote(msg)}\n${format(msg.body, msg.uid, false)}` log(message) sender.sendMessage(demouser, message, { parse_mode: 'HTML', disable_web_page_preview: true }).then(log).catch(log) } } }