UNPKG

rss-o-bot-telegram

Version:

A Telegram notifier for RSS-o-Bot

68 lines (57 loc) 2.51 kB
'use strict'; var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var _require = require('child_process'); var spawn = _require.spawn; var _require2 = require('rxjs'); var O = _require2.Observable; var rssOBot = require('rss-o-bot'); var Tg = require('tg-yarl'); module.exports.sendMessage = function (tg, t) { return function (msg) { return O.fromPromise(tg.sendMessage(t.message.chat.id, msg, { parse_mode: 'HTML' })); }; }; module.exports.instantiate = function () { return rssOBot.getConfig().map(function (config) { return [config, Tg(config.get('telegram-api-token'))]; }); }; module.exports.poll = function () { var filter = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0]; return function (_ref) { var _ref2 = _slicedToArray(_ref, 2); var config = _ref2[0]; var tg = _ref2[1]; return O.interval(2000).startWith(0).switchMap(function () { return O.fromPromise(tg.getUpdates(-1)); }).switchMap(function (res) { return res.body.ok ? O.of(res.body.result) : O.throw([res.status, res.body]); }).map(function (v) { return v[0]; }).filter(function (v) { return v && v.message; }).filter(function (v) { return !filter || // If `filter` is true, check that the sender is in `telegram-commanders` config.get('telegram-commanders').includes(v.message.from.id.toString()); }).distinctUntilChanged(function (a, b) { return b.update_id === a.update_id; }).skip(1); }; }; module.exports.runCommand = function (args) { return O.create(function (o) { var proc = spawn('rss-o-bot', args.concat('--ugly')); var data = ''; proc.stdout.on('data', function (x) { data += x; }); proc.stderr.on('data', function (x) { data += x; }); proc.on('close', function () { o.next(data); o.complete(); }); }); };