onebots
Version:
基于icqq的多例oneBot实现
130 lines (129 loc) • 4.99 kB
JavaScript
"use strict";
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var _OneBot_logger;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BOOLS = exports.OneBotStatus = exports.OneBot = exports.NotFoundError = void 0;
const events_1 = require("events");
const utils_1 = require("./utils");
const V11_1 = require("./service/V11");
const V12_1 = require("./service/V12");
class NotFoundError extends Error {
constructor() {
super(...arguments);
this.message = "不支持的API";
}
}
exports.NotFoundError = NotFoundError;
class OneBot extends events_1.EventEmitter {
get app() {
return this.adapter.app;
}
get V11() {
return this.instances.find(i => i.version === "V11");
}
get V12() {
return this.instances.find(i => i.version === "V12");
}
get platform() {
return this.adapter.platform;
}
get logger() {
return (__classPrivateFieldSet(this, _OneBot_logger, __classPrivateFieldGet(this, _OneBot_logger, "f") || this.adapter.getLogger(this.uin), "f"));
}
get info() {
return {
uin: this.uin,
status: this.status,
platform: this.platform,
avatar: this.avatar,
nickname: this.nickname,
dependency: this.dependency,
urls: this.instances.map(ins => {
return `/${this.platform}/${this.uin}/${ins.version}`;
}),
};
}
constructor(adapter, uin, version_configs) {
super();
this.adapter = adapter;
this.uin = uin;
_OneBot_logger.set(this, void 0);
this.config = version_configs.map(c => {
if (!c.version)
c.version = "V11";
switch (c.version) {
case "V11":
return (0, utils_1.deepMerge)((0, utils_1.deepClone)(this.adapter.app.config.general.V11), c);
case "V12":
return (0, utils_1.deepMerge)((0, utils_1.deepClone)(this.adapter.app.config.general.V12), c);
default:
throw new Error("不支持的oneBot版本:" + c.version);
}
});
this.instances = this.config.map(c => {
switch (c.version) {
case "V11":
return new V11_1.V11(this, c);
case "V12":
return new V12_1.V12(this, c);
default:
throw new Error("不支持的oneBot版本:" + c.version);
}
});
this.status = OneBotStatus.Pending;
}
async start() {
for (const instance of this.instances) {
instance.start();
}
}
async stop(force) {
for (const instance of this.instances) {
await instance.stop(force);
}
this.emit("stop");
}
getGroupList(version) {
return this.adapter.getGroupList(this.uin, version);
}
getFriendList(version) {
return this.adapter.getFriendList(this.uin, version);
}
async dispatch(event, data) {
for (const instance of this.instances) {
instance.dispatch(instance.format(event, this.adapter.formatEventPayload(this.uin, instance.version, event, data)));
}
}
}
exports.OneBot = OneBot;
_OneBot_logger = new WeakMap();
var OneBotStatus;
(function (OneBotStatus) {
OneBotStatus["Pending"] = "pending";
OneBotStatus["Online"] = "online";
OneBotStatus["OffLine"] = "offline";
})(OneBotStatus || (exports.OneBotStatus = OneBotStatus = {}));
(function (OneBot) {
OneBot.UnsupportedMethodError = new Error("不支持的方法");
OneBot.UnsupportedVersionError = new Error("不支持的oneBot版本");
})(OneBot || (exports.OneBot = OneBot = {}));
exports.BOOLS = [
"no_cache",
"auto_escape",
"as_long",
"enable",
"reject_add_request",
"is_dismiss",
"approve",
"block",
];