UNPKG

koishi-plugin-beatsaber-bot

Version:

一个 用于 BeatSaber 的 koishi Bot 插件

41 lines (40 loc) 1.36 kB
"use strict"; 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;