miraipie
Version:
the most powerful nodejs development kit for mirai-api-http
157 lines (156 loc) • 5.95 kB
JavaScript
;
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;