recime-bot-runtime
Version:
This runtime is intended to run inside a micro-service container with platform specific integration and module interpreter.
115 lines (114 loc) • 4.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var facebook_1 = require("./broadcast/facebook");
var viber_1 = require("./broadcast/viber");
var telegram_1 = require("./broadcast/telegram");
var wechat_1 = require("./broadcast/wechat");
var message_1 = require("./message");
var viber_2 = require("./viber");
var Broadcast = /** @class */ (function () {
function Broadcast(bot) {
this.bot = bot;
}
Broadcast.prototype.send = function (body) {
var _this = this;
switch (body.platform) {
case 'facebook': {
var facebook_2 = new facebook_1.Facebook(this.bot);
var response = body.messages
.map(function (message) { return function () {
return facebook_2
.create(new message_1.Message(body.platform).eval(message))
.then(function (msgId) {
return facebook_2.createFilter(body.filter).then(function (label) {
console.log('broadcast:label', label);
return facebook_2.send(msgId, label);
});
})
.then(function (id) {
return { broadcast_id: id };
})
.catch(function (ex) {
console.error(ex);
throw ex;
});
}; });
return response
.reduce(function (a, b) {
return a.then(function (messages) {
return b().then(function (message) {
messages.push(message.broadcast_id);
return messages;
});
});
}, Promise.resolve([]));
}
case 'viber': {
var viber_3 = new viber_1.Viber(this.bot);
var response = body.messages
.map(function (message) { return function () {
var _viber = new viber_2.Viber(_this.bot);
return _viber.accountInfo()
.then(function (user) {
var converted = new message_1.Message(body.platform).eval(message);
converted.sender = {
name: user.name,
avatar: "https://icons.recime.io/" + _this.bot.id + ".png"
};
return viber_3.send(converted, body.filter || []);
});
}; });
return response
.reduce(function (a, b) {
return a.then(function (messages) {
return b().then(function (message) {
messages.push.apply(messages, message);
return messages;
});
});
}, Promise.resolve([])).then(function (messages) {
return {
"tokens": messages
};
});
}
case 'telegram': {
var telegram_2 = new telegram_1.Telegram(this.bot);
var response = body.messages
.map(function (message) { return function () {
var converted = new message_1.Message(body.platform).eval(message);
return telegram_2.send(converted, body.filter || []);
}; });
return response
.reduce(function (a, b) {
return a.then(function (messages) {
return b().then(function (message) {
return {
success: true
};
});
});
}, Promise.resolve([]));
}
case 'wechat': {
var wechat_2 = new wechat_1.WeChat(this.bot);
var response = body.messages
.map(function (message) { return function () {
var converted = new message_1.Message(body.platform).eval(message);
return wechat_2.send(converted, body.filter || []);
}; });
return response
.reduce(function (a, b) {
return a.then(function (messages) {
return b().then(function (message) {
return message;
});
});
}, Promise.resolve([]));
}
}
return Promise.resolve([]);
};
return Broadcast;
}());
exports.Broadcast = Broadcast;