UNPKG

umbot

Version:

Universal bot(vk, telegram, viber) or skills for Yandex.Alisa, Маруся and sber

140 lines (139 loc) 4.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ViberRequest = void 0; const Request_1 = require("./request/Request"); const mmApp_1 = require("../mmApp"); const Text_1 = require("../utils/standard/Text"); class ViberRequest { API_ENDPOINT = 'https://chatapi.viber.com/pa/'; _request; _error; token; constructor() { this._request = new Request_1.Request(); this.token = null; this._error = null; if (mmApp_1.mmApp.params.viber_token) { this.initToken(mmApp_1.mmApp.params.viber_token); } } initToken(token) { this.token = token; } async call(method) { if (this.token) { if (method) { this._request.header = { 'X-Viber-Auth-Token: ': this.token, }; this._request.post.min_api_version = mmApp_1.mmApp.params.viber_api_version || 2; const data = (await this._request.send(this.API_ENDPOINT + method)).data; if (data) { if (typeof data.failed_list !== 'undefined' && data.failed_list.length) { this._error = JSON.stringify(data.failed_list); this._log(data.status_message); } if (data.status === 0) { return data; } const statusMessage = typeof data.status_message !== 'undefined' ? data.status_message : 'ok'; if (statusMessage !== 'ok') { this._error = ''; this._log(data.status_message); } } } } else { this._log('Не указан viber токен!'); } return null; } getUserDetails(id) { this._request.post = { id, }; return this.call('get_user_details'); } sendMessage(receiver, sender, text, params = null) { this._request.post.receiver = receiver; if (typeof sender !== 'string') { this._request.post.sender = sender; } else { this._request.post.sender = { name: sender, }; } this._request.post.text = text; this._request.post.type = 'text'; if (params) { this._request.post = { ...this._request.post, ...params }; } return this.call('send_message'); } setWebhook(url, params = null) { if (url) { this._request.post = { url, event_types: [ 'delivered', 'seen', 'failed', 'subscribed', 'unsubscribed', 'conversation_started', ], send_name: true, send_photo: true, }; } else { this._request.post = { url: '', }; } if (params) { this._request.post = { ...this._request.post, ...params }; } return this.call('set_webhook'); } richMedia(receiver, richMedia, params = null) { this._request.post = { receiver, type: 'rich_media', rich_media: { Type: 'rich_media', ButtonsGroupColumns: 6, ButtonsGroupRows: richMedia.length, BgColor: '#FFFFFF', Buttons: richMedia, }, }; if (params) { this._request.post = { ...this._request.post, ...params }; } return this.call('send_message'); } sendFile(receiver, file, params = null) { this._request.post = { receiver, }; if (Text_1.Text.isSayText(['http://', 'https://'], file)) { this._request.post.type = 'file'; this._request.post.media = file; this._request.post.size = 10e4; this._request.post.file_name = Text_1.Text.resize(file, 150); if (params) { this._request.post = { ...this._request.post, ...params }; } return this.call('send_message'); } return null; } _log(error = '') { error = `\n(${Date}): Произошла ошибка при отправке запроса по адресу: ${this._request.url}\nОшибка:\n${error}\n${this._error}\n`; mmApp_1.mmApp.saveLog('viberApi.log', error); } } exports.ViberRequest = ViberRequest;