UNPKG

munar-adapter-plugdj

Version:

plug.dj adapter for Munar

132 lines (98 loc) 2.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ultron = _interopRequireDefault(require("ultron")); var _miniplug = _interopRequireDefault(require("miniplug")); var _munarCore = require("munar-core"); var _PlugdjMessage = _interopRequireDefault(require("./PlugdjMessage")); var _Waitlist = _interopRequireDefault(require("./Waitlist")); var _DJBooth = _interopRequireDefault(require("./DJBooth")); var _DJHistory = _interopRequireDefault(require("./DJHistory")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const debug = require('debug')('munar:adapter:plugdj'); class PlugdjAdapter extends _munarCore.Adapter { constructor(bot, options) { super(bot); this.mp = (0, _miniplug.default)(); this.deleteMessage = this.mp.deleteChat; this.onChat = message => { const { user } = message; this.receive('message', new _PlugdjMessage.default(this, message, user && this.toBotUser(user))); }; this.onJoin = user => { if (user) { this.receive('user:join', this.toBotUser(user)); } }; this.onLeave = id => { const user = this.mp.user(id); if (user) { this.receive('user:leave', this.toBotUser(user)); } }; this.options = options; this.events = new _ultron.default(this.mp); this.waitlist = new _Waitlist.default(this); this.djBooth = new _DJBooth.default(this); this.djHistory = new _DJHistory.default(this); } getWaitlist() { return this.waitlist; } getDJBooth() { return this.djBooth; } getDJHistory() { return this.djHistory; } toBotUser(user) { debug('toBotUser', user.id, user.username); return new _munarCore.User(this, user.id, user.username, user); } // Base Adapter async connect() { this.events.on('userJoin', this.onJoin); this.events.on('userLeave', this.onLeave); this.events.on('chat', this.onChat); await this.mp.connect({ email: this.options.email, password: this.options.password }); await this.mp.join(this.options.room); } async disconnect() { this.mp.ws.close(); } reply(message, text) { this.send(`@${message.username} ${text}`); } send(text) { this.mp.chat(text); } getSelf() { return this.toBotUser(this.mp.me()); } getUsers() { return this.mp.users().map(this.toBotUser, this); } getChannels() { return [this]; } getChannel(str) { if (str !== 'main') { throw new Error(`Channel ${str} does not exist`); } return this; } canExecute() { return true; } toString() { return 'plug.dj'; } } exports.default = PlugdjAdapter; PlugdjAdapter.adapterName = 'plugdj';