UNPKG

telebot

Version:

The easy way to write Telegram bots.

53 lines (52 loc) 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("../utils"); class TeleBotEvents { constructor() { this.events = new Map(); } on(event, processor) { const events = utils_1.convertToArray(event); events.forEach((key) => { const eventHandler = this.events.get(key); if (eventHandler) { eventHandler.processors.add(processor); } else { this.events.set(key, { processors: new Set([processor]) }); } }); return processor; } dispatch(event, data) { return this._dispatch("", event, data); } off(processor) { return undefined; } _dispatch(storageId, events, data, context) { const storage = this.events; const promises = []; events = utils_1.convertToArray(events); events.forEach((name) => { const handler = storage.get(name); if (handler) { for (const processor of handler.processors) { promises.push(new Promise((resolve, reject) => { const result = processor.call(this, data, Object.assign({ unsubscribe: this.off.bind(this, processor) }, context)); if (result instanceof Promise) { result.then(resolve).catch(reject); } else { resolve(result); } })); } } }); return Promise.all(promises); } } exports.TeleBotEvents = TeleBotEvents;