UNPKG

miraipie

Version:

the most powerful nodejs development kit for mirai-api-http

157 lines (156 loc) 5.95 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.makePie = exports.PieFilter = void 0; var events_1 = __importDefault(require("events")); var log4js_1 = require("log4js"); var config_1 = require("./config"); var miraipie_1 = require("./miraipie"); /** pie消息过滤器 */ var PieFilter = /** @class */ (function () { function PieFilter() { } /** 消息包含@我 */ PieFilter.atMe = { sign: 'AtMe', handler: function (chat, chain) { return chain.selected('At').some(function (at) { return at.target === miraipie_1.MiraiPieApplication.instance.qq; }); } }; /** 消息包含@全体成员 */ PieFilter.atAll = { sign: 'AtAll', handler: function (chat, chain) { return chain.selected('AtAll').length > 0; } }; /** 消息来自好友 */ PieFilter.fromFriend = { sign: 'FromFriend', handler: function (chat) { return chat.isFriendChat(); } }; /** 消息来自群聊 */ PieFilter.fromGroup = { sign: 'FromGroup', handler: function (chat) { return chat.isGroupChat(); } }; /** 消息来自群成员 */ PieFilter.fromMember = { sign: 'FromMember', handler: function (chat) { return chat.isTempChat(); } }; /** * 消息包含@指定QQ号群成员 * @param id 群成员QQ号 */ PieFilter.at = function (id) { return { sign: "At(" + id + ")", handler: function (chat, chain) { return chain.selected('At').some(function (at) { return at.target === id; }); } }; }; /** * 消息来自指定账号 * @param id QQ号或群号 */ PieFilter.from = function (id) { return { sign: "From(" + id + ")", handler: function (chat) { return chat.contact.id === id; } }; }; /** * 消息不来自指定账号 * @param id QQ号或群号 */ PieFilter.notFrom = function (id) { return { sign: "NotFrom(" + id + ")", handler: function (chat) { return chat.contact.id !== id; } }; }; /** * 消息包含单一消息类型 * @param type 单一消息类型 */ PieFilter.containsType = function (type) { return { sign: "ContainsType(" + type + ")", handler: function (chat, chain) { return chain.selected(type).length > 0; } }; }; /** * 消息显示串匹配正则表达式 * @param regexp 正则表达式 */ PieFilter.displayStringMatch = function (regexp) { return { sign: "DisplayStringMatch(" + regexp + ")", handler: function (chat, chain) { return chain.toDisplayString().match(regexp) !== null; } }; }; /** * 消息显示串和指定串全等 * @param displayString 指定字符串 */ PieFilter.displayStringEquals = function (displayString) { return { sign: "DisplayStringEquals(" + displayString + ")", handler: function (chat, chain) { return chain.toDisplayString() === displayString; } }; }; /** * 多个消息过滤器求<strong>或</strong> * @param filters 消息过滤器 */ PieFilter.or = function () { var filters = []; for (var _i = 0; _i < arguments.length; _i++) { filters[_i] = arguments[_i]; } return { sign: "Or(" + filters.map(function (filter) { return filter.sign; }).join(', ') + ")", handler: function (chat, chain, pie) { return filters.some(function (filter) { return filter.handler(chat, chain, pie); }); } }; }; return PieFilter; }()); exports.PieFilter = PieFilter; /** * 创建 pie * @param options pie 选项 */ function makePie(options) { var pie = Object.assign(new events_1.default(), __assign(__assign(__assign({}, (options.data || {})), (options.methods || {})), { id: options.id, name: options.name, author: options.author, version: options.version, description: options.description || '', authorUrl: options.authorUrl || '', projectUrl: options.projectUrl || '', configMeta: options.configMeta || {}, configs: config_1.makeConfigs(options.configMeta), filters: options.filters || [], logger: log4js_1.getLogger("pie:" + options.id), __isPie: true })); if (typeof options.received === 'function') pie.on('received', function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return options.received.apply(pie, args); }); if (typeof options.installed === 'function') pie.on('installed', function () { return options.installed.apply(pie); }); if (typeof options.uninstalled === 'function') pie.on('uninstalled', function () { return options.uninstalled.apply(pie); }); if (typeof options.enabled === 'function') pie.on('enabled', function () { return options.enabled.apply(pie); }); if (typeof options.disabled === 'function') pie.on('disabled', function () { return options.disabled.apply(pie); }); return pie; } exports.makePie = makePie;