2019-02-08 13:31:38 +03:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
/**
|
2019-03-01 13:46:30 +03:00
|
|
|
* @classdesc Bot API v1 methods
|
|
|
|
* @namespace ClientV1
|
|
|
|
* @readonly
|
|
|
|
*/
|
|
|
|
export default class Client {
|
|
|
|
/**
|
|
|
|
* @param {Request} request
|
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
constructor(request) {
|
|
|
|
/**
|
|
|
|
* @prop API version
|
|
|
|
* @type {string}
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
this._version = 'v1';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @prop Request object
|
|
|
|
* @type {Request}
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
this._request = request;
|
2019-02-08 13:31:38 +03:00
|
|
|
}
|
|
|
|
|
2019-03-01 13:46:30 +03:00
|
|
|
/**
|
|
|
|
* Get bots
|
|
|
|
* @param {Object} params
|
|
|
|
* @since 1.0.0
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getBots(params = {}) {
|
|
|
|
return this._request.get(this._version + '/bots', params);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get channels
|
|
|
|
* @param {Object} params
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getChannels(params = {}) {
|
|
|
|
return this._request.get(this._version + '/channels', params);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get chats
|
|
|
|
* @param {Object} params
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getChats(params = {}) {
|
|
|
|
return this._request.get(this._version + '/chats', params);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get customers
|
|
|
|
* @param {Object} params
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getCustomers(params = {}) {
|
|
|
|
return this._request.get(this._version + '/customers', params);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get dialogs
|
|
|
|
* @param {Object} params
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getDialogs(params = {}) {
|
|
|
|
return this._request.get(this._version + '/dialogs', params);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get members
|
|
|
|
* @param {Object} params
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getMembers(params = {}) {
|
|
|
|
return this._request.get(this._version + '/members', params);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Assign dialog
|
|
|
|
* @param {Number} dialog_id - Dialog identificator
|
|
|
|
* @param {Object} dialog - Dialog object
|
|
|
|
* @returns {Promise}
|
|
|
|
* @throws {Error}
|
|
|
|
*/
|
|
|
|
assignDialog(dialog_id, dialog) {
|
|
|
|
if (!dialog_id) {
|
|
|
|
throw new Error('Parameter `dialog_id` is required');
|
|
|
|
}
|
|
|
|
|
|
|
|
return this._request.patch(this._version + '/dialogs/'+ dialog_id + '/assign', dialog);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Close dialog
|
|
|
|
* @param {Number} dialog_id
|
|
|
|
* @returns {Promise}
|
|
|
|
* @throws {Error}
|
|
|
|
*/
|
|
|
|
closeDialog(dialog_id) {
|
|
|
|
if (!dialog_id) {
|
|
|
|
throw new Error('Parameter `dialog_id` is required');
|
|
|
|
}
|
|
|
|
|
|
|
|
return this._request.delete(this._version + '/dialogs/'+ dialog_id + '/close');
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Send message
|
|
|
|
* @param {Object} data
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
sendMessage(data) {
|
|
|
|
return this._request.post(this._version + '/messages', data);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get messages
|
|
|
|
* @param {Object} params
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getMessages(params = {}) {
|
|
|
|
return this._request.get(this._version + '/messages', params);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Delete message
|
|
|
|
* @param {Number} message_id
|
|
|
|
* @returns {Promise}
|
|
|
|
* @throws {Error}
|
|
|
|
*/
|
|
|
|
deleteMessage(message_id) {
|
|
|
|
if (!message_id) {
|
|
|
|
throw new Error('Parameter `message_id` is required');
|
|
|
|
}
|
|
|
|
|
|
|
|
return this._request.delete(this._version + '/messages/' + message_id);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Edit message
|
|
|
|
* @param {Number} message_id
|
|
|
|
* @param {Object} message
|
|
|
|
* @returns {Promise}
|
|
|
|
* @throws {Error}
|
|
|
|
*/
|
|
|
|
editMessage(message_id, message) {
|
|
|
|
if (!message_id) {
|
|
|
|
throw new Error('Parameter `message_id` is required');
|
|
|
|
}
|
|
|
|
|
|
|
|
return this._request.patch(this._version + '/messages/' + message_id, message);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get bot commands
|
|
|
|
* @param {Object} params
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getCommands(params = {}) {
|
|
|
|
return this._request.get(this._version + '/my/commands', params);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Edit bot command
|
|
|
|
* @param {string} command_name
|
|
|
|
* @param {Object} data
|
|
|
|
* @returns {Promise}
|
|
|
|
* @throws {Error}
|
|
|
|
*/
|
|
|
|
editCommand(command_name, data) {
|
|
|
|
if (!command_name) {
|
|
|
|
throw new Error('Parameter `command_name` is required');
|
|
|
|
}
|
|
|
|
|
|
|
|
return this._request.put(this._version + '/my/commands/' + command_name, data);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Delete bot command
|
|
|
|
* @param {string} command_name
|
|
|
|
* @returns {Promise}
|
|
|
|
* @throws {Error}
|
|
|
|
*/
|
|
|
|
deleteCommand(command_name) {
|
|
|
|
if (!command_name) {
|
|
|
|
throw new Error('Parameter `command_name` is required');
|
|
|
|
}
|
|
|
|
|
|
|
|
return this._request.delete(this._version + '/my/commands/' + command_name);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Bot information update
|
|
|
|
* @param {Object} data
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
info(data) {
|
|
|
|
return this._request.patch(this._version + '/my/info', data);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get users
|
|
|
|
* @param {Object} params
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
getUsers(params = {}) {
|
|
|
|
return this._request.get(this._version + '/users', params);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get websocket url
|
|
|
|
* @param {array<string>} events
|
|
|
|
* @returns {Map}
|
|
|
|
* @throws {Error}
|
|
|
|
*/
|
|
|
|
getWebsocketData(events) {
|
|
|
|
if (!events) {
|
|
|
|
throw new Error('Events is required');
|
|
|
|
}
|
|
|
|
|
|
|
|
let map = new Map();
|
|
|
|
let url = 'wss://' + this._request.host + '/api/bot/' + this._version + '/ws?events=';
|
|
|
|
|
|
|
|
events.forEach(function (event) {
|
|
|
|
url += event + ',';
|
|
|
|
});
|
|
|
|
|
|
|
|
url = url.slice(0, -1);
|
|
|
|
|
|
|
|
map.set('url', url);
|
|
|
|
map.set('headers', {
|
|
|
|
'X-Bot-Token': this._request.token
|
|
|
|
});
|
|
|
|
|
|
|
|
return map;
|
|
|
|
};
|
|
|
|
}
|