@kotori-bot/core 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Elements = void 0;
4
+ const tools_1 = require("@kotori-bot/tools");
5
+ const defaultMethod = (...args) => {
6
+ (0, tools_1.none)(...args);
7
+ return '';
8
+ };
9
+ class Elements {
10
+ constructor(data) {
11
+ this.at = data.at || defaultMethod;
12
+ this.image = data.image || defaultMethod;
13
+ this.voice = data.voice || defaultMethod;
14
+ this.video = data.video || defaultMethod;
15
+ this.face = data.face || defaultMethod;
16
+ this.file = data.file || defaultMethod;
17
+ this.supports = Object.keys(data);
18
+ }
19
+ at;
20
+ image;
21
+ voice;
22
+ video;
23
+ face;
24
+ file;
25
+ supports;
26
+ }
27
+ exports.Elements = Elements;
28
+ exports.default = Elements;
@@ -0,0 +1,13 @@
1
+ interface ServiceImpl {
2
+ readonly config: object;
3
+ handle(...data: unknown[]): void;
4
+ start(): void;
5
+ stop(): void;
6
+ }
7
+ export declare abstract class Service implements ServiceImpl {
8
+ abstract readonly config: object;
9
+ abstract handle(...data: unknown[]): void;
10
+ abstract start(): void;
11
+ abstract stop(): void;
12
+ }
13
+ export default Service;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Service = void 0;
4
+ class Service {
5
+ }
6
+ exports.Service = Service;
7
+ exports.default = Service;
@@ -0,0 +1,11 @@
1
+ import { LocaleType } from '@kotori-bot/i18n';
2
+ export declare const OFFICIAL_MODULES_SCOPE = "@kotori-bot/";
3
+ export declare const PLUGIN_PREFIX = "kotori-plugin-";
4
+ export declare const ADAPTER_PREFIX = "kotori-plugin-adapter-";
5
+ export declare const LOAD_MODULE_MAX_TIME: number;
6
+ export declare const LOAD_MODULE_SLEEP_TIME = 150;
7
+ export declare const DEFAULT_LANG: LocaleType;
8
+ export declare const DEFAULT_ROOT_DIR = "./";
9
+ export declare const DEFAULT_MODULES_DIR = "./modules";
10
+ export declare const DEFAULT_COMMAND_PREFIX = "/";
11
+ export declare const DEFAULT_ENV = "dev";
package/lib/consts.js ADDED
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_ENV = exports.DEFAULT_COMMAND_PREFIX = exports.DEFAULT_MODULES_DIR = exports.DEFAULT_ROOT_DIR = exports.DEFAULT_LANG = exports.LOAD_MODULE_SLEEP_TIME = exports.LOAD_MODULE_MAX_TIME = exports.ADAPTER_PREFIX = exports.PLUGIN_PREFIX = exports.OFFICIAL_MODULES_SCOPE = void 0;
4
+ exports.OFFICIAL_MODULES_SCOPE = '@kotori-bot/';
5
+ exports.PLUGIN_PREFIX = 'kotori-plugin-';
6
+ exports.ADAPTER_PREFIX = `${exports.PLUGIN_PREFIX}adapter-`;
7
+ exports.LOAD_MODULE_MAX_TIME = 10 * 1000;
8
+ exports.LOAD_MODULE_SLEEP_TIME = 150;
9
+ exports.DEFAULT_LANG = 'en_US';
10
+ exports.DEFAULT_ROOT_DIR = './';
11
+ exports.DEFAULT_MODULES_DIR = './modules';
12
+ exports.DEFAULT_COMMAND_PREFIX = '/';
13
+ exports.DEFAULT_ENV = 'dev';
@@ -0,0 +1,13 @@
1
+ import Logger from '@kotori-bot/logger';
2
+ import { Http } from '@kotori-bot/tools';
3
+ import Locale from './utils/i18n';
4
+ import Internal from './base/internal';
5
+ import { KotoriConfig } from './types';
6
+ export declare class Context extends Internal {
7
+ http: Http;
8
+ logger: typeof Logger & typeof Logger.debug;
9
+ readonly i18n: Locale;
10
+ private initialize;
11
+ constructor(Config?: KotoriConfig);
12
+ }
13
+ export default Context;
package/lib/context.js ADDED
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Context = void 0;
7
+ const logger_1 = __importDefault(require("@kotori-bot/logger"));
8
+ const tools_1 = require("@kotori-bot/tools");
9
+ const i18n_1 = __importDefault(require("./utils/i18n"));
10
+ const internal_1 = __importDefault(require("./base/internal"));
11
+ class Context extends internal_1.default {
12
+ http = new tools_1.Http({ validateStatus: () => true });
13
+ logger = Object.assign(logger_1.default, new Proxy(logger_1.default.debug, {
14
+ apply: (target, _, argArray) => {
15
+ if (this.options.env === 'dev')
16
+ target(argArray);
17
+ },
18
+ }));
19
+ i18n;
20
+ initialize() {
21
+ this.registeMessageEvent();
22
+ this.midware((next, session) => {
23
+ const { selfId } = session.api.adapter;
24
+ if (session.userId !== selfId)
25
+ next();
26
+ }, 50);
27
+ }
28
+ constructor(Config) {
29
+ super(Config);
30
+ this.i18n = new i18n_1.default(this.config.global.lang);
31
+ this.initialize();
32
+ }
33
+ }
34
+ exports.Context = Context;
35
+ exports.default = Context;
package/lib/index.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ import Context from './context';
2
+ export * from './components/adapter';
3
+ export * from './components/api';
4
+ export * from './components/elements';
5
+ export * from './context';
6
+ export * from './utils/errror';
7
+ export * from './consts';
8
+ export * from './types';
9
+ export * from '@kotori-bot/tools';
10
+ export * from 'tsukiko';
11
+ export declare class ContextInstance {
12
+ protected constructor();
13
+ private static instance;
14
+ protected static setInstance(ctx: Context): void;
15
+ static getInstance(): Context;
16
+ static getMixin(): any;
17
+ }
package/lib/index.js ADDED
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ContextInstance = void 0;
18
+ const tools_1 = require("@kotori-bot/tools");
19
+ __exportStar(require("./components/adapter"), exports);
20
+ __exportStar(require("./components/api"), exports);
21
+ __exportStar(require("./components/elements"), exports);
22
+ __exportStar(require("./context"), exports);
23
+ __exportStar(require("./utils/errror"), exports);
24
+ __exportStar(require("./consts"), exports);
25
+ __exportStar(require("./types"), exports);
26
+ __exportStar(require("@kotori-bot/tools"), exports);
27
+ __exportStar(require("tsukiko"), exports);
28
+ class ContextInstance {
29
+ constructor() {
30
+ (0, tools_1.none)();
31
+ }
32
+ static instance = {};
33
+ static setInstance(ctx) {
34
+ this.instance = ctx;
35
+ }
36
+ static getInstance() {
37
+ return this.instance;
38
+ }
39
+ static getMixin() {
40
+ return Object.assign(ContextInstance.getInstance() /* , Context */);
41
+ }
42
+ }
43
+ exports.ContextInstance = ContextInstance;
package/lib/types.d.ts ADDED
@@ -0,0 +1,417 @@
1
+ import type { StringTempArgs, obj } from '@kotori-bot/tools';
2
+ import Tsu from 'tsukiko';
3
+ import { LocaleType } from '@kotori-bot/i18n';
4
+ import type Api from './components/api';
5
+ import type Adapter from './components/adapter';
6
+ import type Context from './context';
7
+ import type Elements from './components/elements';
8
+ export declare const baseDirSchema: import("tsukiko").ObjectParser<{
9
+ root: import("tsukiko").StringParser;
10
+ modules: import("tsukiko").StringParser;
11
+ }>;
12
+ export type BaseDir = Tsu.infer<typeof baseDirSchema>;
13
+ export declare const packageInfoSchema: import("tsukiko").ObjectParser<{
14
+ name: import("tsukiko").StringParser;
15
+ version: import("tsukiko").StringParser;
16
+ description: import("tsukiko").StringParser;
17
+ main: import("tsukiko").StringParser;
18
+ license: import("tsukiko").LiteralParser<"GPL-3.0">;
19
+ author: import("tsukiko").StringParser;
20
+ }>;
21
+ export type PackageInfo = Tsu.infer<typeof packageInfoSchema>;
22
+ export declare const localeTypeSchema: import("tsukiko").UnionParser<[import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"en_US">, import("tsukiko").LiteralParser<"ja_JP">]>, import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"zh_CN">, import("tsukiko").LiteralParser<"zh_TW">]>]>;
23
+ export declare const globalOptions: import("tsukiko").ObjectParser<{
24
+ env: import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"dev">, import("tsukiko").LiteralParser<"build">]>;
25
+ }>;
26
+ export type GlobalOptions = Tsu.infer<typeof globalOptions>;
27
+ declare const adapterConfigBaseSchema: import("tsukiko").IntersectionParser<[import("tsukiko").ObjectParser<{
28
+ extends: import("tsukiko").StringParser;
29
+ master: import("tsukiko").UnionParser<[import("tsukiko").NumberParser, import("tsukiko").StringParser]>;
30
+ }>, import("tsukiko").ObjectParser<{
31
+ lang: import("tsukiko").UnionParser<[import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"en_US">, import("tsukiko").LiteralParser<"ja_JP">]>, import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"zh_CN">, import("tsukiko").LiteralParser<"zh_TW">]>]>;
32
+ 'command-prefix': import("tsukiko").StringParser;
33
+ }>]>;
34
+ export declare const globalConfigSchemaController: (lang?: LocaleType, commandPrefix?: string) => import("tsukiko").ObjectParser<{
35
+ global: import("tsukiko").IntersectionParser<[import("tsukiko").ObjectParser<{
36
+ dirs: import("tsukiko").ArrayParser<import("tsukiko").StringParser>;
37
+ }>, import("tsukiko").ObjectParser<{
38
+ lang: import("tsukiko").UnionParser<[import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"en_US">, import("tsukiko").LiteralParser<"ja_JP">]>, import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"zh_CN">, import("tsukiko").LiteralParser<"zh_TW">]>]>;
39
+ 'command-prefix': import("tsukiko").StringParser;
40
+ }>]>;
41
+ adapter: import("tsukiko").Parser<import("tsukiko").IndexObject<import("tsukiko").ObjectParserInfer<{
42
+ extends: import("tsukiko").StringParser;
43
+ master: import("tsukiko").UnionParser<[import("tsukiko").NumberParser, import("tsukiko").StringParser]>;
44
+ }> & import("tsukiko").ObjectParserInfer<{
45
+ lang: import("tsukiko").UnionParser<[import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"en_US">, import("tsukiko").LiteralParser<"ja_JP">]>, import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"zh_CN">, import("tsukiko").LiteralParser<"zh_TW">]>]>;
46
+ 'command-prefix': import("tsukiko").StringParser;
47
+ }>>>;
48
+ plugin: import("tsukiko").Parser<import("tsukiko").IndexObject<import("tsukiko").ObjectParserInfer<{
49
+ priority: import("tsukiko").NumberParser;
50
+ }>>>;
51
+ }>;
52
+ declare const globalConfigSchema: import("tsukiko").ObjectParser<{
53
+ global: import("tsukiko").IntersectionParser<[import("tsukiko").ObjectParser<{
54
+ dirs: import("tsukiko").ArrayParser<import("tsukiko").StringParser>;
55
+ }>, import("tsukiko").ObjectParser<{
56
+ lang: import("tsukiko").UnionParser<[import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"en_US">, import("tsukiko").LiteralParser<"ja_JP">]>, import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"zh_CN">, import("tsukiko").LiteralParser<"zh_TW">]>]>;
57
+ 'command-prefix': import("tsukiko").StringParser;
58
+ }>]>;
59
+ adapter: import("tsukiko").Parser<import("tsukiko").IndexObject<import("tsukiko").ObjectParserInfer<{
60
+ extends: import("tsukiko").StringParser;
61
+ master: import("tsukiko").UnionParser<[import("tsukiko").NumberParser, import("tsukiko").StringParser]>;
62
+ }> & import("tsukiko").ObjectParserInfer<{
63
+ lang: import("tsukiko").UnionParser<[import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"en_US">, import("tsukiko").LiteralParser<"ja_JP">]>, import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"zh_CN">, import("tsukiko").LiteralParser<"zh_TW">]>]>;
64
+ 'command-prefix': import("tsukiko").StringParser;
65
+ }>>>;
66
+ plugin: import("tsukiko").Parser<import("tsukiko").IndexObject<import("tsukiko").ObjectParserInfer<{
67
+ priority: import("tsukiko").NumberParser;
68
+ }>>>;
69
+ }>;
70
+ export type GlobalConfig = Tsu.infer<typeof globalConfigSchema>;
71
+ export type AdapterConfig = Tsu.infer<typeof adapterConfigBaseSchema>;
72
+ export type AdapterConstructor = new (ctx: Context, config: AdapterConfig, identity: string) => Adapter;
73
+ export type ApiConstructor<T extends Api> = new (adapter: Adapter, el: Elements) => T;
74
+ export type ElementsParam = {
75
+ [K in Exclude<keyof Elements, 'supports'>]?: (...args: unknown[]) => string;
76
+ };
77
+ export declare const kotoriConfigSchema: import("tsukiko").ObjectParser<{
78
+ baseDir: import("tsukiko").ObjectParser<{
79
+ root: import("tsukiko").StringParser;
80
+ modules: import("tsukiko").StringParser;
81
+ }>;
82
+ config: import("tsukiko").ObjectParser<{
83
+ global: import("tsukiko").IntersectionParser<[import("tsukiko").ObjectParser<{
84
+ dirs: import("tsukiko").ArrayParser<import("tsukiko").StringParser>;
85
+ }>, import("tsukiko").ObjectParser<{
86
+ lang: import("tsukiko").UnionParser<[import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"en_US">, import("tsukiko").LiteralParser<"ja_JP">]>, import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"zh_CN">, import("tsukiko").LiteralParser<"zh_TW">]>]>;
87
+ 'command-prefix': import("tsukiko").StringParser;
88
+ }>]>;
89
+ adapter: import("tsukiko").Parser<import("tsukiko").IndexObject<import("tsukiko").ObjectParserInfer<{
90
+ extends: import("tsukiko").StringParser;
91
+ master: import("tsukiko").UnionParser<[import("tsukiko").NumberParser, import("tsukiko").StringParser]>;
92
+ }> & import("tsukiko").ObjectParserInfer<{
93
+ lang: import("tsukiko").UnionParser<[import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"en_US">, import("tsukiko").LiteralParser<"ja_JP">]>, import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"zh_CN">, import("tsukiko").LiteralParser<"zh_TW">]>]>;
94
+ 'command-prefix': import("tsukiko").StringParser;
95
+ }>>>;
96
+ plugin: import("tsukiko").Parser<import("tsukiko").IndexObject<import("tsukiko").ObjectParserInfer<{
97
+ priority: import("tsukiko").NumberParser;
98
+ }>>>;
99
+ }>;
100
+ options: import("tsukiko").ObjectParser<{
101
+ env: import("tsukiko").UnionParser<[import("tsukiko").LiteralParser<"dev">, import("tsukiko").LiteralParser<"build">]>;
102
+ }>;
103
+ }>;
104
+ export type KotoriConfig = Tsu.infer<typeof kotoriConfigSchema>;
105
+ export interface ApiExtra {
106
+ default: {
107
+ type: 'default';
108
+ };
109
+ }
110
+ export declare const enum CommandAccess {
111
+ MEMBER = 0,
112
+ MANGER = 1,
113
+ ADMIN = 2
114
+ }
115
+ export type CommandAction = (data: {
116
+ args: CommandArgType[];
117
+ options: obj<CommandArgType>;
118
+ }, session: EventType['group_msg' | 'private_msg']) => MessageQuick | CommandResultExtra[keyof CommandResultExtra] | void | Promise<MessageQuick | CommandResultExtra[keyof CommandResultExtra] | void>;
119
+ export type CommandArgType = string | number;
120
+ export type CommandArgTypeSign = 'string' | 'number';
121
+ export interface CommandConfig {
122
+ alias?: string[];
123
+ scope?: MessageScope | 'all';
124
+ access?: CommandAccess;
125
+ help?: string;
126
+ action?: CommandAction;
127
+ }
128
+ export interface CommandArg {
129
+ name: string;
130
+ type: CommandArgTypeSign;
131
+ optional: boolean;
132
+ default?: CommandArgType;
133
+ rest: boolean;
134
+ }
135
+ export interface CommandOption {
136
+ name: string;
137
+ type: CommandArgTypeSign;
138
+ default?: CommandArgType;
139
+ realname: string;
140
+ description?: string;
141
+ }
142
+ export interface CommandData {
143
+ root: string;
144
+ alias: string[];
145
+ args: CommandArg[];
146
+ options: CommandOption[];
147
+ scope: CommandConfig['scope'];
148
+ access: CommandAccess;
149
+ help?: string;
150
+ action?: CommandAction;
151
+ description?: string;
152
+ }
153
+ export interface CommandParseResult {
154
+ parsed: {
155
+ action: CommandAction;
156
+ args: CommandArgType[];
157
+ options: obj<CommandArgType>;
158
+ };
159
+ option_error: {
160
+ expected: string;
161
+ reality: string;
162
+ target: string;
163
+ };
164
+ arg_many: {
165
+ expected: number;
166
+ reality: number;
167
+ };
168
+ arg_few: CommandParseResult['arg_many'];
169
+ arg_error: CommandParseResult['option_error'];
170
+ syntax: {
171
+ index: number;
172
+ char: string;
173
+ };
174
+ unknown: {
175
+ input: string;
176
+ };
177
+ }
178
+ export interface CommandResult extends CommandParseResult {
179
+ success: {
180
+ return?: string;
181
+ };
182
+ error: {
183
+ error: unknown;
184
+ };
185
+ }
186
+ export type CommandParseResultExtra = Pick<CommandResultExtra, keyof CommandParseResult>;
187
+ export type CommandExecuteResultExtra = Pick<CommandResultExtra, Exclude<keyof CommandResult, keyof CommandParseResult>>;
188
+ export type CommandResultExtra = {
189
+ [K in keyof CommandResult]: {
190
+ type: K;
191
+ } & CommandResult[K];
192
+ };
193
+ export type MessageRaw = string;
194
+ export type MessageScope = 'private' | 'group';
195
+ export type MessageQuickFunc = (msg: MessageQuick) => void;
196
+ export type MessageQuickReal = MessageRaw | [string, StringTempArgs] | void;
197
+ export type MessageQuick = MessageQuickReal | Promise<MessageQuickReal>;
198
+ export type ModuleType = 'database' | 'adapter' | 'plugin';
199
+ export type ModuleInstanceType = 'constructor' | 'function' | 'none';
200
+ export type ModuleInstanceConstructor = new (ctx: Context, config: object) => unknown;
201
+ export type ModuleInstanceFunction = (ctx: Context, config: object) => unknown;
202
+ export type MidwareCallback = (next: () => void, session: EventDataMsg) => MessageQuick;
203
+ export type RegexpCallback = (match: RegExpMatchArray, session: EventDataMsg) => MessageQuick;
204
+ export interface MidwareStack {
205
+ extend: string;
206
+ callback: MidwareCallback;
207
+ priority: number;
208
+ }
209
+ export interface CommandStack {
210
+ extend: string;
211
+ data: CommandData;
212
+ }
213
+ export interface RegexpStack {
214
+ extend: string;
215
+ match: RegExp;
216
+ callback: RegexpCallback;
217
+ }
218
+ export declare const ModulePackageSchema: import("tsukiko").ObjectParser<{
219
+ name: import("tsukiko").StringParser;
220
+ version: import("tsukiko").StringParser;
221
+ description: import("tsukiko").StringParser;
222
+ main: import("tsukiko").StringParser;
223
+ license: import("tsukiko").LiteralParser<"GPL-3.0">;
224
+ author: import("tsukiko").UnionParser<[import("tsukiko").StringParser, import("tsukiko").ArrayParser<import("tsukiko").StringParser>]>;
225
+ peerDependencies: import("tsukiko").ObjectParser<{
226
+ 'kotori-bot': import("tsukiko").StringParser;
227
+ }>;
228
+ }>;
229
+ export type ModulePackage = Tsu.infer<typeof ModulePackageSchema>;
230
+ export interface ModuleData {
231
+ package: ModulePackage;
232
+ fileList: string[];
233
+ mainPath: string;
234
+ }
235
+ export interface EventDataBase<T extends keyof EventType> {
236
+ type: T;
237
+ }
238
+ interface EventDataLoadModule extends EventDataBase<'load_module'> {
239
+ module: ModuleData | null;
240
+ moduleType: ModuleType;
241
+ instanceType: ModuleInstanceType;
242
+ }
243
+ interface EventDataLoadAllModule extends EventDataBase<'load_all_module'> {
244
+ reality: number;
245
+ expected: number;
246
+ }
247
+ interface EventDataUnloadModule extends EventDataBase<'unload_module'> {
248
+ module: ModuleData | null;
249
+ }
250
+ type EventDataMsgSenderSex = 'male' | 'female' | 'unknown';
251
+ type EventDataOperation = 'set' | 'unset';
252
+ export interface EventDataMsgSender {
253
+ nickname: string;
254
+ sex: EventDataMsgSenderSex;
255
+ age: number;
256
+ }
257
+ export interface EventDataAdapterBase<T extends keyof EventType> extends EventDataBase<T> {
258
+ adapter: Adapter;
259
+ }
260
+ interface EventDataConnect extends EventDataAdapterBase<'connect'> {
261
+ normal: boolean;
262
+ info: string;
263
+ onlyStart?: boolean;
264
+ }
265
+ interface EventDataDisconnect extends EventDataAdapterBase<'disconnect'> {
266
+ normal: boolean;
267
+ info: string;
268
+ }
269
+ interface EventDataReady extends EventDataAdapterBase<'ready'> {
270
+ }
271
+ interface EventDataOnline extends EventDataAdapterBase<'online'> {
272
+ }
273
+ interface EventDataOffline extends EventDataAdapterBase<'offline'> {
274
+ }
275
+ export type EventDataMsg = EventDataPrivateMsg | EventDataGroupMsg;
276
+ interface EventDataMidwares extends EventDataBase<'midwares'> {
277
+ isPass: boolean;
278
+ event: EventDataMsg;
279
+ }
280
+ interface EventDataBeforeParse extends EventDataBase<'before_parse'> {
281
+ event: EventDataMsg;
282
+ command: string;
283
+ }
284
+ interface EventDataParse extends EventDataBase<'parse'> {
285
+ event: EventDataMsg;
286
+ command: string;
287
+ result: CommandParseResultExtra[keyof CommandParseResultExtra];
288
+ cancel(): void;
289
+ }
290
+ interface EventDataBeforeCommand extends EventDataBase<'before_command'> {
291
+ event: EventDataMsg;
292
+ command: string;
293
+ scope: MessageScope;
294
+ access: CommandAccess;
295
+ cancel(): void;
296
+ }
297
+ interface EventDataCommand extends EventDataBase<'command'> {
298
+ event: EventDataMsg;
299
+ command: string;
300
+ scope: MessageScope;
301
+ access: CommandAccess;
302
+ result: CommandResultExtra[keyof CommandResultExtra];
303
+ }
304
+ export declare const eventDataTargetIdSchema: import("tsukiko").UnionParser<[import("tsukiko").StringParser, import("tsukiko").NumberParser]>;
305
+ export type EventDataTargetId = Tsu.infer<typeof eventDataTargetIdSchema>;
306
+ interface EventDataBeforeSend extends EventDataBase<'before_send'> {
307
+ api: Api;
308
+ message: MessageRaw;
309
+ messageType: MessageScope;
310
+ targetId: EventDataTargetId;
311
+ cancel(): void;
312
+ }
313
+ interface EventDataSend extends EventDataBase<'send'> {
314
+ api: Api;
315
+ messageId: EventDataTargetId;
316
+ }
317
+ export interface EventDataApiBase<T extends keyof EventType, M extends MessageScope = MessageScope> extends EventDataBase<T> {
318
+ api: Api;
319
+ el: Elements;
320
+ userId: EventDataTargetId;
321
+ messageType: M;
322
+ send(message: MessageRaw): void;
323
+ locale(val: string): string;
324
+ quick(message: MessageQuick): void;
325
+ error<T extends keyof CommandResult>(type: T, data?: Omit<CommandResultExtra[T], 'type'>): CommandResultExtra[T];
326
+ extra?: unknown;
327
+ }
328
+ interface EventDataPrivateMsg extends EventDataApiBase<'private_msg', 'private'> {
329
+ messageId: EventDataTargetId;
330
+ message: MessageRaw;
331
+ sender: EventDataMsgSender;
332
+ groupId?: EventDataTargetId;
333
+ }
334
+ interface EventDataGroupMsg extends EventDataApiBase<'group_msg', 'group'> {
335
+ messageId: EventDataTargetId;
336
+ message: MessageRaw;
337
+ sender: EventDataMsgSender;
338
+ groupId: EventDataTargetId;
339
+ }
340
+ interface EventDataPrivateRecall extends EventDataApiBase<'private_recall', 'private'> {
341
+ messageId: EventDataTargetId;
342
+ }
343
+ interface EventDataGroupRecall extends EventDataApiBase<'group_recall', 'group'> {
344
+ messageId: EventDataTargetId;
345
+ operatorId: EventDataTargetId;
346
+ groupId: EventDataTargetId;
347
+ }
348
+ interface EventDataPrivateRequest extends EventDataApiBase<'private_request', 'private'> {
349
+ userId: EventDataTargetId;
350
+ }
351
+ interface EventDataGroupRequest extends EventDataApiBase<'group_request', 'group'> {
352
+ userId: EventDataTargetId;
353
+ operatorId: EventDataTargetId;
354
+ groupId: EventDataTargetId;
355
+ }
356
+ interface EventDataPrivateAdd extends EventDataApiBase<'private_add', 'private'> {
357
+ userId: EventDataTargetId;
358
+ }
359
+ interface EventDataGroupIncrease extends EventDataApiBase<'group_increase', 'group'> {
360
+ userId: EventDataTargetId;
361
+ operatorId: EventDataTargetId;
362
+ groupId: EventDataTargetId;
363
+ }
364
+ interface EventDataGroupDecrease extends EventDataApiBase<'group_decrease', 'group'> {
365
+ userId: EventDataTargetId;
366
+ operatorId: EventDataTargetId;
367
+ groupId: EventDataTargetId;
368
+ }
369
+ interface EventDataGroupAdmin extends EventDataApiBase<'group_admin', 'group'> {
370
+ userId: EventDataTargetId;
371
+ operation: EventDataOperation;
372
+ groupId: EventDataTargetId;
373
+ }
374
+ interface EventDataGroupBan extends EventDataApiBase<'group_ban', 'group'> {
375
+ userId: EventDataTargetId | 0;
376
+ operatorId?: EventDataTargetId;
377
+ time?: number | -1;
378
+ groupId: EventDataTargetId;
379
+ }
380
+ export interface EventType {
381
+ load_module: EventDataLoadModule;
382
+ load_all_module: EventDataLoadAllModule;
383
+ unload_module: EventDataUnloadModule;
384
+ connect: EventDataConnect;
385
+ disconnect: EventDataDisconnect;
386
+ ready: EventDataReady;
387
+ online: EventDataOnline;
388
+ offline: EventDataOffline;
389
+ midwares: EventDataMidwares;
390
+ before_parse: EventDataBeforeParse;
391
+ parse: EventDataParse;
392
+ before_command: EventDataBeforeCommand;
393
+ command: EventDataCommand;
394
+ before_send: EventDataBeforeSend;
395
+ send: EventDataSend;
396
+ private_msg: EventDataPrivateMsg;
397
+ group_msg: EventDataGroupMsg;
398
+ private_recall: EventDataPrivateRecall;
399
+ group_recall: EventDataGroupRecall;
400
+ private_request: EventDataPrivateRequest;
401
+ group_request: EventDataGroupRequest;
402
+ private_add: EventDataPrivateAdd;
403
+ group_increase: EventDataGroupIncrease;
404
+ group_decrease: EventDataGroupDecrease;
405
+ group_admin: EventDataGroupAdmin;
406
+ group_ban: EventDataGroupBan;
407
+ }
408
+ export type EventCallback<T extends keyof EventType> = (data: EventType[T]) => void;
409
+ export type EventLists = {
410
+ type: keyof EventType;
411
+ callback: EventCallback<keyof EventType>;
412
+ }[];
413
+ export interface DevErrorExtra {
414
+ path: string;
415
+ type: 'warning' | 'info' | 'error';
416
+ }
417
+ export {};