vk-chat-bot
Version:
Package for easy creation of chat bots for VK communities (uses Callback API).
3 lines (2 loc) • 9.91 kB
JavaScript
;var __importDefault=this&&this.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0});const log_1=require("./extra/log"),body_parser_1=__importDefault(require("body-parser")),express_1=__importDefault(require("express"));class Bot{constructor(o,t,e,r,s){this.core=o,this.groupId=t,this.confirmationToken=e,this.secret=r,this.port=s}start(){this.core.lock();const{evt:o,cmd:t,reg:e,pld:r}=this.core.getHandlerCounts();log_1.log().i(`Handlers count: on:${o} cmd:${t} regex:${e} payload:${r}`).from("bot").now(),o+t+e+r===0&&log_1.log().w("The bot won't do anything without handlers!").from("bot").now(),log_1.log().i("Preparing and starting the server...").from("bot").now();const s=express_1.default();s.use(body_parser_1.default.json()),s.get("/",(o,t)=>{t.status(400).send("Only POST allowed."),log_1.log().w("Received a GET request").from("bot").now()}),s.post("/",(o,t)=>{const{body:e}=o;return e.secret!==this.secret?(t.status(400).send("Invalid secret key."),void log_1.log().w("Received a request with an invalid secret key").from("bot").now()):e.group_id.toString()!==this.groupId?(t.status(400).send("Invalid group id."),void log_1.log().w("Received a request with an invalid group id").from("bot").now()):void("confirmation"===e.type?(t.status(200).send(this.confirmationToken),log_1.log().r("Sent confirmation token.").from("bot").now()):(t.status(200).send("ok"),this.core.parseRequest(e)))}),s.listen(this.port,o=>{o&&log_1.log().e(`Error occured while starting the server: ${o}`).from("bot").now(),log_1.log().i(`Server is listening on port ${this.port}`).from("bot").now()})}}exports.default=Bot;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJvdC5qcyIsImJvdC50cyJdLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJ0aGlzIiwibW9kIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImxvZ18xIiwicmVxdWlyZSIsImJvZHlfcGFyc2VyXzEiLCJleHByZXNzXzEiLCJCb3QiLCJbb2JqZWN0IE9iamVjdF0iLCJjb3JlIiwiZ3JvdXBJZCIsImNvbmZpcm1hdGlvblRva2VuIiwic2VjcmV0IiwicG9ydCIsImxvY2siLCJldnQiLCJjbWQiLCJyZWciLCJwbGQiLCJnZXRIYW5kbGVyQ291bnRzIiwibG9nIiwiaSIsImZyb20iLCJub3ciLCJ3IiwiYXBwIiwidXNlIiwianNvbiIsImdldCIsIl9yZXEiLCJyZXMiLCJzdGF0dXMiLCJzZW5kIiwicG9zdCIsInJlcSIsImJvZHkiLCJncm91cF9pZCIsInRvU3RyaW5nIiwidHlwZSIsInIiLCJwYXJzZVJlcXVlc3QiLCJsaXN0ZW4iLCJlcnIiLCJlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBLElBQUlBLGdCQUFtQkMsTUFBUUEsS0FBS0QsaUJBQW9CLFNBQVVFLEdBQzlELE9BQVFBLEdBQU9BLEVBQUlDLFdBQWNELEVBQU0sQ0FBRUUsUUFBV0YsSUFFeERHLE9BQU9DLGVBQWVDLFFBQVMsYUFBYyxDQUFFQyxPQUFPLElDSHRELE1BQUFDLE1BQUFDLFFBQUEsZUFFQUMsY0FBQVgsZ0JBQUFVLFFBQUEsZ0JBQ0FFLFVBQUFaLGdCQUFBVSxRQUFBLFlBTUEsTUFBcUJHLElBOEJqQkMsWUFDSUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsR0FFQWxCLEtBQUtjLEtBQU9BLEVBQ1pkLEtBQUtlLFFBQVVBLEVBQ2ZmLEtBQUtnQixrQkFBb0JBLEVBQ3pCaEIsS0FBS2lCLE9BQVNBLEVBQ2RqQixLQUFLa0IsS0FBT0EsRUFNVEwsUUFDSGIsS0FBS2MsS0FBS0ssT0FDVixNQUFNQyxJQUFFQSxFQUFHQyxJQUFFQSxFQUFHQyxJQUFFQSxFQUFHQyxJQUFFQSxHQUFRdkIsS0FBS2MsS0FBS1UsbUJBRXpDaEIsTUFBQWlCLE1BQ0tDLEVBQUUsc0JBQXNCTixTQUFXQyxXQUFhQyxhQUFlQyxLQUMvREksS0FBSyxPQUNMQyxNQUVEUixFQUFNQyxFQUFNQyxFQUFNQyxJQUFRLEdBQzFCZixNQUFBaUIsTUFDS0ksRUFBRSwrQ0FDRkYsS0FBSyxPQUNMQyxNQUdUcEIsTUFBQWlCLE1BQ0tDLEVBQUUsd0NBQ0ZDLEtBQUssT0FDTEMsTUFFTCxNQUFNRSxFQUFNbkIsVUFBQVIsVUFFWjJCLEVBQUlDLElBQUlyQixjQUFBUCxRQUFXNkIsUUFFbkJGLEVBQUlHLElBQ0EsSUFDQSxDQUNJQyxFQUNBQyxLQUVBQSxFQUFJQyxPQUFPLEtBQUtDLEtBQUssc0JBQ3JCN0IsTUFBQWlCLE1BQ0tJLEVBQUUsMEJBQ0ZGLEtBQUssT0FDTEMsUUFJYkUsRUFBSVEsS0FDQSxJQUNBLENBQ0lDLEVBQ0FKLEtBRUEsTUFBTUssS0FBRUEsR0FBU0QsRUFFakIsT0FBSUMsRUFBS3ZCLFNBQVdqQixLQUFLaUIsUUFDckJrQixFQUFJQyxPQUFPLEtBQUtDLEtBQUssNEJBQ3JCN0IsTUFBQWlCLE1BQ0tJLEVBQUUsaURBQ0ZGLEtBQUssT0FDTEMsT0FJTFksRUFBS0MsU0FBU0MsYUFBZTFDLEtBQUtlLFNBQ2xDb0IsRUFBSUMsT0FBTyxLQUFLQyxLQUFLLDBCQUNyQjdCLE1BQUFpQixNQUNLSSxFQUFFLCtDQUNGRixLQUFLLE9BQ0xDLFlBSVMsaUJBQWRZLEVBQUtHLE1BQ0xSLEVBQUlDLE9BQU8sS0FBS0MsS0FBS3JDLEtBQUtnQixtQkFDMUJSLE1BQUFpQixNQUNLbUIsRUFBRSw0QkFDRmpCLEtBQUssT0FDTEMsUUFFTE8sRUFBSUMsT0FBTyxLQUFLQyxLQUFLLE1BQ3JCckMsS0FBS2MsS0FBSytCLGFBQWFMLE9BS25DVixFQUFJZ0IsT0FBTzlDLEtBQUtrQixLQUFPNkIsSUFDZkEsR0FDQXZDLE1BQUFpQixNQUNLdUIsRUFBRSw0Q0FBNENELEtBQzlDcEIsS0FBSyxPQUNMQyxNQUdUcEIsTUFBQWlCLE1BQ0tDLEVBQUUsK0JBQStCMUIsS0FBS2tCLFFBQ3RDUyxLQUFLLE9BQ0xDLFNBeElqQnRCLFFBQUFILFFBQUFTIiwiZmlsZSI6ImJvdC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IENvcmUgZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vZXh0cmEvbG9nJztcblxuaW1wb3J0IGJvZHlQYXJzZXIgZnJvbSAnYm9keS1wYXJzZXInO1xuaW1wb3J0IGV4cHJlc3MsIHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcblxuLyoqXG4gKiBUaGUgW1tCb3RdXSBjbGFzcyByZXNwb25kcyB0byBpbmNvbWluZyBldmVudHMgZnJvbSBDYWxsYmFjayBBUEksXG4gKiBhbmQgZmlndXJlcyBvdXQgd2hhdCBuZWVkcyB0byBiZSBkb25lLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCb3Qge1xuICAgIC8qKlxuICAgICAqIENvcmUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb3JlOiBDb3JlO1xuICAgIC8qKlxuICAgICAqIEdyb3VwIElELlxuICAgICAqL1xuICAgIHByaXZhdGUgZ3JvdXBJZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENvbmZpcm1hdGlvbiB0b2tlbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblRva2VuOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogU2VjcmV0LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2VjcmV0OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUG9ydC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHBvcnQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgW1tCb3RdXS5cbiAgICAgKiBAcGFyYW0gY29yZSAtIGEgW1tDb3JlXV0gb2JqZWN0XG4gICAgICogQHBhcmFtIGdyb3VwSWQgLSBncm91cCBJRCBmcm9tIENhbGxiYWNrIEFQSSBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBjb25maXJtYXRpb25Ub2tlbiAtIGNvbmZpcm1hdGlvbiB0b2tlbiBmcm9tIENhbGxiYWNrIEFQSSBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBzZWNyZXQgLSBzZWNyZXQga2V5IChjYW4gYmUgc2V0IGluIENhbGxiYWNrIEFQSSBzZXR0aW5ncylcbiAgICAgKiBAcGFyYW0gcG9ydCAtIHRoZSBwb3J0IGJvdCB3aWxsIHJ1biBhdFxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgY29yZTogQ29yZSxcbiAgICAgICAgZ3JvdXBJZDogc3RyaW5nLFxuICAgICAgICBjb25maXJtYXRpb25Ub2tlbjogc3RyaW5nLFxuICAgICAgICBzZWNyZXQ6IHN0cmluZyxcbiAgICAgICAgcG9ydDogbnVtYmVyLFxuICAgICkge1xuICAgICAgICB0aGlzLmNvcmUgPSBjb3JlO1xuICAgICAgICB0aGlzLmdyb3VwSWQgPSBncm91cElkO1xuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblRva2VuID0gY29uZmlybWF0aW9uVG9rZW47XG4gICAgICAgIHRoaXMuc2VjcmV0ID0gc2VjcmV0O1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXJ0cyB0aGUgYm90LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3JlLmxvY2soKTtcbiAgICAgICAgY29uc3QgeyBldnQsIGNtZCwgcmVnLCBwbGQgfSA9IHRoaXMuY29yZS5nZXRIYW5kbGVyQ291bnRzKCk7XG5cbiAgICAgICAgbG9nKClcbiAgICAgICAgICAgIC5pKGBIYW5kbGVycyBjb3VudDogb246JHtldnR9IGNtZDoke2NtZH0gcmVnZXg6JHtyZWd9IHBheWxvYWQ6JHtwbGR9YClcbiAgICAgICAgICAgIC5mcm9tKCdib3QnKVxuICAgICAgICAgICAgLm5vdygpO1xuXG4gICAgICAgIGlmIChldnQgKyBjbWQgKyByZWcgKyBwbGQgPT09IDApIHtcbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLncoXCJUaGUgYm90IHdvbid0IGRvIGFueXRoaW5nIHdpdGhvdXQgaGFuZGxlcnMhXCIpXG4gICAgICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9nKClcbiAgICAgICAgICAgIC5pKCdQcmVwYXJpbmcgYW5kIHN0YXJ0aW5nIHRoZSBzZXJ2ZXIuLi4nKVxuICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAubm93KCk7XG5cbiAgICAgICAgY29uc3QgYXBwID0gZXhwcmVzcygpO1xuXG4gICAgICAgIGFwcC51c2UoYm9keVBhcnNlci5qc29uKCkpO1xuXG4gICAgICAgIGFwcC5nZXQoXG4gICAgICAgICAgICAnLycsXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgX3JlcTogUmVxdWVzdCxcbiAgICAgICAgICAgICAgICByZXM6IFJlc3BvbnNlLFxuICAgICAgICAgICAgKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoJ09ubHkgUE9TVCBhbGxvd2VkLicpO1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC53KCdSZWNlaXZlZCBhIEdFVCByZXF1ZXN0JylcbiAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgYXBwLnBvc3QoXG4gICAgICAgICAgICAnLycsXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgcmVxOiBSZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHJlczogUmVzcG9uc2UsXG4gICAgICAgICAgICApOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGJvZHkgfSA9IHJlcTtcblxuICAgICAgICAgICAgICAgIGlmIChib2R5LnNlY3JldCAhPT0gdGhpcy5zZWNyZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoJ0ludmFsaWQgc2VjcmV0IGtleS4nKTtcbiAgICAgICAgICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC53KCdSZWNlaXZlZCBhIHJlcXVlc3Qgd2l0aCBhbiBpbnZhbGlkIHNlY3JldCBrZXknKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoYm9keS5ncm91cF9pZC50b1N0cmluZygpICE9PSB0aGlzLmdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoJ0ludmFsaWQgZ3JvdXAgaWQuJyk7XG4gICAgICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAudygnUmVjZWl2ZWQgYSByZXF1ZXN0IHdpdGggYW4gaW52YWxpZCBncm91cCBpZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZnJvbSgnYm90JylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChib2R5LnR5cGUgPT09ICdjb25maXJtYXRpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXMoMjAwKS5zZW5kKHRoaXMuY29uZmlybWF0aW9uVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnIoJ1NlbnQgY29uZmlybWF0aW9uIHRva2VuLicpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZnJvbSgnYm90JylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXMuc3RhdHVzKDIwMCkuc2VuZCgnb2snKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3JlLnBhcnNlUmVxdWVzdChib2R5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGFwcC5saXN0ZW4odGhpcy5wb3J0LCAoZXJyOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC5lKGBFcnJvciBvY2N1cmVkIHdoaWxlIHN0YXJ0aW5nIHRoZSBzZXJ2ZXI6ICR7ZXJyfWApXG4gICAgICAgICAgICAgICAgICAgIC5mcm9tKCdib3QnKVxuICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLmkoYFNlcnZlciBpcyBsaXN0ZW5pbmcgb24gcG9ydCAke3RoaXMucG9ydH1gKVxuICAgICAgICAgICAgICAgIC5mcm9tKCdib3QnKVxuICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19