UNPKG

koishi-plugin-beatsaber-bot

Version:

一个 用于 BeatSaber 的 koishi Bot 插件

63 lines (62 loc) 3.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SubscribeCmd = exports.JoinSubscribeCmd = exports.UnSubscribeCmd = exports.LeaveSubscribeCmd = void 0; const koishi_1 = require("koishi"); const alert_1 = require("./alert"); const beatleader_1 = require("./beatleader"); const beatsaver_1 = require("./beatsaver"); var subleave_1 = require("./subleave"); Object.defineProperty(exports, "LeaveSubscribeCmd", { enumerable: true, get: function () { return subleave_1.LeaveSubscribeCmd; } }); var unsubscribe_1 = require("./unsubscribe"); Object.defineProperty(exports, "UnSubscribeCmd", { enumerable: true, get: function () { return unsubscribe_1.UnSubscribeCmd; } }); var subjoin_1 = require("./subjoin"); Object.defineProperty(exports, "JoinSubscribeCmd", { enumerable: true, get: function () { return subjoin_1.JoinSubscribeCmd; } }); function SubscribeCmd(ctx, cfg, render, api, logger) { const subcmd = ctx .command('bsbot.subscribe') .alias('bbsub') .userFields(['id']) .option('type', '<type:string>') .action(async ({ session, options }, input) => { // check admin permission if (options.type === "beatsaver-alert") { return (0, alert_1.alert)(ctx, api, { session, options }, input, logger); } if (options.type === "beatsaver") { return (0, beatsaver_1.beatsaver)(ctx, api, { session, options }, input); } if (options.type === "beatleader") { return (0, beatleader_1.beatleader)(ctx, api, { session, options }, input); } const uid = session.user.id; const jointable = ctx.database.join(['BSBotSubscribe', 'BSSubscribeMember']); const rows = await jointable.where(row => koishi_1.$.and(koishi_1.$.eq(row.BSBotSubscribe.id, row.BSSubscribeMember.subscribeId), koishi_1.$.eq(row.BSBotSubscribe.channelId, session.channelId))) .groupBy(['BSBotSubscribe.id'], { subscribe: row => row.BSBotSubscribe, members: row => koishi_1.$.count(row.BSSubscribeMember), me: row => koishi_1.$.in(uid, koishi_1.$.array(row.BSSubscribeMember.memberUid)), }) .execute(); if (rows.length < 1) { session.sendQuote(session.text('commands.bsbot.subscribe.info.none')); return; } let text = session.text('commands.bsbot.subscribe.info.header'); for (const row of rows) { text += session.text('commands.bsbot.subscribe.info.body-item', { type: row.subscribe.type, cnt: row.members }); if (row.me) { text += session.text('commands.bsbot.subscribe.info.body-item-include-you'); } text += '\n\n'; } session.sendQueued((0, koishi_1.h)('message', [(0, koishi_1.h)('quote', { id: session.messageId }), text])); }); return { key: 'subscribe', cmd: subcmd }; } exports.SubscribeCmd = SubscribeCmd;