UNPKG

4.45 kBJavaScriptView Raw
1"use strict";
2var __extends = (this && this.__extends) || (function () {
3 var extendStatics = Object.setPrototypeOf ||
4 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6 return function (d, b) {
7 extendStatics(d, b);
8 function __() { this.constructor = d; }
9 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
10 };
11})();
12Object.defineProperty(exports, "__esModule", { value: true });
13var request = require("request");
14var channel_1 = require("./channel");
15var logger_1 = require("./logger");
16var Telegram = /** @class */ (function (_super) {
17 __extends(Telegram, _super);
18 function Telegram(bot) {
19 return _super.call(this, { bot: bot, log: new logger_1.TelegramLogger(bot) }) || this;
20 }
21 Telegram.prototype.execute = function (body, parameters, handler) {
22 var _this = this;
23 var payload = (body["callback_query"] || body);
24 return new Promise(function (resolve, reject) {
25 _this.context.log.incoming(body);
26 // ignore group add / remove.
27 if (payload.data || (payload.message && payload.message.text)) {
28 handler(_this.context.bot, payload, "telegram", function (messages) {
29 resolve(_this.send({
30 messages: messages,
31 sender: payload.message.chat.id
32 }));
33 }, function (err) {
34 reject(err);
35 });
36 }
37 else {
38 resolve();
39 }
40 });
41 };
42 Telegram.prototype.send = function (body) {
43 var _this = this;
44 return new Promise(function (resolve) {
45 var response = (body.messages || []).map(function (message) { return function () {
46 return new Promise(function (resolve, reject) {
47 var supportedMethods = [
48 "message",
49 "photo",
50 "audio",
51 "document",
52 "location",
53 "venue",
54 "contact"
55 ];
56 var method = "sendMessage";
57 if (message.type &&
58 supportedMethods.indexOf(message.type.toLowerCase()) >= 0) {
59 method = message.type.toLowerCase();
60 method = "send" + method
61 .substr(0, 1)
62 .toUpperCase() + method.substr(1, method.length - 1);
63 }
64 var uri = "https://api.telegram.org/bot" + (process.env
65 .RECIME_TELEGRAM_ACCESS_TOKEN ||
66 _this.context.bot.config
67 .RECIME_TELEGRAM_ACCESS_TOKEN) + "/" + method;
68 var options = {
69 uri: uri,
70 method: "POST",
71 json: message.payload || message
72 };
73 options.json.chat_id = body.sender;
74 request(options, function (err, response, result) {
75 _this.context.log.outgoing(options, result);
76 if (!err && response.statusCode === 200) {
77 resolve();
78 }
79 else {
80 if (result && result.ok === "false") {
81 reject(result);
82 }
83 else if (err) {
84 console.error(err);
85 reject(err);
86 }
87 }
88 });
89 });
90 }; });
91 return response
92 .reduce(function (a, b) {
93 return a.then(function (messages) {
94 return b().then(function (message) {
95 return;
96 });
97 });
98 }, Promise.resolve())
99 .then(function () {
100 resolve({
101 succcess: true
102 });
103 });
104 });
105 };
106 return Telegram;
107}(channel_1.Channel));
108exports.Telegram = Telegram;