munar-adapter-plugdj
Version:
plug.dj adapter for Munar
132 lines (98 loc) • 2.81 kB
JavaScript
"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';