umbot
Version:
Universal bot(vk, telegram, viber) or skills for Yandex.Alisa, Маруся and sber
140 lines (139 loc) • 4.68 kB
JavaScript
"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;