koishi-plugin-beatsaber-bot
Version:
一个 用于 BeatSaber 的 koishi Bot 插件
41 lines (40 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pluginWS = void 0;
const beatleader_1 = require("./beatleader");
const beatsaver_1 = require("./beatsaver");
const service_1 = require("../service");
class WS {
constructor(ws) {
this.ws = ws;
this.closed = false;
this.ws.addEventListener('close', (evt) => {
this.closed = true;
this.closedTime = Date.now();
});
}
reopen(ws) {
this.ws = ws;
this.closed = false;
}
}
function pluginWS(ctx, cfg) {
const logger = ctx.logger('beatsaber-bot.ws');
const bllogger = logger.extend('BeatSaverWS');
const bslogger = logger.extend('BeatSaverWS');
const api = service_1.APIService.create(ctx, cfg);
const render = service_1.RenderService.create(ctx, cfg, api);
const ws = {
bsws: new WS((0, beatleader_1.BeatLeaderWS)(ctx, cfg, render, bslogger)),
blws: new WS((0, beatsaver_1.BeatSaverWS)(ctx, cfg, render, bllogger))
};
ctx.setInterval(() => {
if (ws.blws.closed) {
ws.blws.reopen((0, beatleader_1.BeatLeaderWS)(ctx, cfg, render, bslogger));
}
if (ws.bsws.closed) {
ws.bsws.reopen((0, beatsaver_1.BeatSaverWS)(ctx, cfg, render, bslogger));
}
}, 30000);
}
exports.pluginWS = pluginWS;