UNPKG

koishi-plugin-kbot

Version:
105 lines (104 loc) 4.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initViolation = void 0; const jsx_runtime_1 = require("@satorijs/element/jsx-runtime"); const enum_1 = require("../enum"); const utils_1 = require("../utils"); async function initViolation(context) { context.database.extend('guildmanage.violationList', { id: 'unsigned', guildId: 'string', violations: { type: 'list', initial: [], }, count: { type: 'integer', initial: 3, }, handleWay: { type: 'string', initial: 'mute', }, }, { autoInc: true, }); context.database.extend('guildmanage.userViolation', { id: 'unsigned', userId: 'string', userCount: 'integer(3)', day: 'integer(2)', }, { autoInc: true, }); context.guild().middleware(async (session, next) => { const { userId, guildId, content } = session; let userRes = await context.database.get('guildmanage.userViolation', { userId }); const violationRes = await context.database.get('guildmanage.violationList', { guildId }); if (violationRes.length === 0) return next(); if (userRes.length === 0) { await context.database.upsert('guildmanage.userViolation', [{ userId, userCount: 0, day: new Date().getDate(), }]); userRes = await context.database.get('guildmanage.userViolation', { userId }); } const botRole = await (0, utils_1.getGroupMemberRole)(session.bot, guildId, session.selfId); const userRole = await (0, utils_1.getGroupMemberRole)(session.bot, guildId, userId); const { id, day } = userRes[0]; let { userCount } = userRes[0]; let isViolation = false; if (botRole === 'member' || enum_1.RoleNumber[userRole] >= enum_1.RoleNumber[botRole]) return next(); const { violations = [], count = 3, handleWay = 'mute' } = violationRes[0]; for (const violation of violations) { if (content.includes(violation)) { if (userRes.length) { if (day === new Date().getDate()) { if (userCount + 1 < count) { await context.database.upsert('guildmanage.userViolation', [{ id, userCount: userCount + 1, }]); } } else { await context.database.upsert('guildmanage.userViolation', [{ id, userCount: 1, day: new Date().getDate(), }]); } } else { await context.database.upsert('guildmanage.userViolation', [{ userId, userCount: 1, day: new Date().getDate(), }]); } userCount = userCount || 0 + 1; isViolation = true; break; } } if (isViolation) { await session.bot.deleteMessage(guildId, session.messageId); await session.send((0, jsx_runtime_1.jsxs)("message", { children: [(0, jsx_runtime_1.jsx)("at", { id: userId }), (0, jsx_runtime_1.jsxs)("p", { children: ["\u56E0\u4E3A\u8FDD\u89C4\u53D1\u8A00, \u5DF2\u88AB\u64A4\u56DE, \u4ECA\u65E5\u8FDD\u89C4\u6B21\u6570 +1, \u5F53\u524D\u8FDD\u89C4\u6B21\u6570: ", userCount, ", \u6BCF\u65E5\u8FDD\u89C4\u6B21\u6570\u4E3A: ", count] })] })); } if (userCount < count) return next(); if (handleWay === 'mute') { await session.send((0, jsx_runtime_1.jsxs)("message", { children: [(0, jsx_runtime_1.jsx)("at", { id: userId }), (0, jsx_runtime_1.jsx)("p", { children: "\u56E0\u4E3A\u8FDD\u89C4\u53D1\u8A00, \u5DF2\u88AB\u7981\u8A00 1 \u5929" })] })); await session.bot.muteGuildMember(guildId, userId, 60 * 60 * 24 * 1); } else if (handleWay === 'kick') { await session.send((0, jsx_runtime_1.jsxs)("message", { children: [(0, jsx_runtime_1.jsx)("at", { id: userId }), (0, jsx_runtime_1.jsx)("p", { children: "\u56E0\u4E3A\u8FDD\u89C4\u53D1\u8A00, \u5DF2\u88AB\u8E22\u51FA\u672C\u7FA4" })] })); await session.bot.kickGuildMember(guildId, userId); } return next(); }, true); } exports.initViolation = initViolation;