koishi-plugin-beatsaber-bot
Version:
一个 用于 BeatSaber 的 koishi Bot 插件
47 lines (46 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LeaveSubscribeCmd = void 0;
const koishi_1 = require("koishi");
function LeaveSubscribeCmd(ctx, cfg, render, api, logger) {
const leaveCmd = ctx
.command('bsbot.subscribe.leave')
.alias('bbleave')
.userFields(['id'])
.option('type', '<type:string>')
.action(async ({ session, options }, input) => {
const selection = ctx.database.join(['BSBotSubscribe', 'BSSubscribeMember']);
const subs = await selection.where(row => koishi_1.$.and(koishi_1.$.eq(row.BSBotSubscribe.channelId, session.channelId), koishi_1.$.eq(row.BSBotSubscribe.id, row.BSSubscribeMember.subscribeId), koishi_1.$.eq(row.BSSubscribeMember.memberUid, session.user.id))).execute();
if (options.type === "beatleader") {
const ok = subs.some(it => it.BSBotSubscribe.type == "beatleader");
if (!ok) {
session.sendQuote(session.text('commands.bsbot.subscribe.leave.not-exist.beatleader'));
return;
}
const res = subs.find(it => it.BSBotSubscribe.type == "beatleader");
await ctx.database.remove('BSSubscribeMember', {
subscribeId: res.BSBotSubscribe.id,
memberUid: session.user.id,
});
session.sendQuote(session.text('commands.bsbot.subscribe.leave.success.beatleader'));
}
else if (options.type === "beatsaver") {
const ok = subs.some(it => it.BSBotSubscribe.type == "beatsaver");
if (!ok) {
session.sendQuote(session.text('commands.bsbot.subscribe.leave.not-exist.beatsaver'));
return;
}
const res = subs.find(it => it.BSBotSubscribe.type == "beatsaver");
await ctx.database.remove('BSSubscribeMember', {
subscribeId: res.BSBotSubscribe.id,
memberUid: session.user.id,
});
session.sendQuote(session.text('commands.bsbot.subscribe.leave.success.beatsaver'));
}
});
return {
key: 'subscribe.leave',
cmd: leaveCmd
};
}
exports.LeaveSubscribeCmd = LeaveSubscribeCmd;