@pikokr/command.ts 3.0.0-dev.7170769 → 3.0.0-dev.85a29c3
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.
- package/.prettierrc +2 -1
- package/README.md +3 -1
- package/dist/builtinModules/BuiltInModule.d.ts +4 -0
- package/dist/builtinModules/BuiltInModule.js +12 -0
- package/dist/builtinModules/BuiltinCommandConverters.d.ts +14 -0
- package/dist/builtinModules/BuiltinCommandConverters.js +89 -0
- package/dist/builtinModules/CommandHandler.d.ts +9 -0
- package/dist/builtinModules/CommandHandler.js +134 -0
- package/dist/builtinModules/index.d.ts +2 -0
- package/dist/builtinModules/index.js +14 -0
- package/dist/command/ArgumentConverter.d.ts +9 -0
- package/dist/command/ArgumentConverter.js +14 -0
- package/dist/command/Command.d.ts +14 -5
- package/dist/command/Command.js +9 -4
- package/dist/command/decorator.d.ts +11 -2
- package/dist/command/decorator.js +66 -10
- package/dist/command/index.d.ts +2 -0
- package/dist/command/index.js +2 -0
- package/dist/command/utils.d.ts +2 -0
- package/dist/command/utils.js +17 -0
- package/dist/constants.d.ts +7 -0
- package/dist/constants.js +9 -2
- package/dist/error/ArgumentConverterNotFound.d.ts +7 -0
- package/dist/error/ArgumentConverterNotFound.js +11 -0
- package/dist/error/ArgumentNotProvided.d.ts +8 -0
- package/dist/error/ArgumentNotProvided.js +12 -0
- package/dist/error/CommandCheckFailed.d.ts +7 -0
- package/dist/error/CommandCheckFailed.js +11 -0
- package/dist/error/CommandNotFound.d.ts +4 -0
- package/dist/error/CommandNotFound.js +10 -0
- package/dist/error/PermissionRequired.d.ts +10 -0
- package/dist/error/PermissionRequired.js +18 -0
- package/dist/error/index.d.ts +4 -0
- package/dist/error/index.js +4 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/listener/Listener.d.ts +5 -0
- package/dist/listener/Listener.js +10 -0
- package/dist/listener/decorator.d.ts +2 -0
- package/dist/listener/decorator.js +21 -0
- package/dist/listener/index.d.ts +2 -0
- package/dist/listener/index.js +14 -0
- package/dist/structures/CommandClient.d.ts +0 -1
- package/dist/structures/CommandClient.js +15 -38
- package/dist/structures/Module.d.ts +7 -0
- package/dist/structures/Module.js +13 -0
- package/dist/structures/Registry.d.ts +16 -6
- package/dist/structures/Registry.js +113 -22
- package/dist/structures/index.d.ts +2 -1
- package/dist/structures/index.js +2 -1
- package/dist/typings.d.ts +11 -0
- package/dist/typings.js +2 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +10 -0
- package/package.json +3 -2
- package/src/builtinModules/BuiltInModule.ts +9 -0
- package/src/builtinModules/BuiltinCommandConverters.ts +56 -0
- package/src/builtinModules/CommandHandler.ts +120 -0
- package/src/builtinModules/index.ts +2 -0
- package/src/command/ArgumentConverter.ts +10 -0
- package/src/command/Command.ts +20 -5
- package/src/command/decorator.ts +84 -12
- package/src/command/index.ts +2 -0
- package/src/command/utils.ts +15 -0
- package/src/constants.ts +15 -1
- package/src/error/ArgumentConverterNotFound.ts +8 -0
- package/src/error/ArgumentNotProvided.ts +8 -0
- package/src/error/CommandCheckFailed.ts +8 -0
- package/src/error/CommandNotFound.ts +5 -0
- package/src/error/PermissionRequired.ts +13 -0
- package/src/error/index.ts +4 -0
- package/src/index.ts +3 -0
- package/src/listener/Listener.ts +3 -0
- package/src/listener/decorator.ts +25 -0
- package/src/listener/index.ts +2 -0
- package/src/structures/CommandClient.ts +10 -48
- package/src/structures/Module.ts +21 -0
- package/src/structures/Registry.ts +108 -19
- package/src/structures/index.ts +2 -1
- package/src/typings.ts +12 -0
- package/src/utils.ts +6 -0
- package/test/index.ts +5 -2
- package/test/modules/test.ts +44 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GuildMember, Permissions } from 'discord.js';
|
|
2
|
+
export declare class UserPermissionRequired extends Error {
|
|
3
|
+
user: GuildMember;
|
|
4
|
+
permissions: Permissions;
|
|
5
|
+
constructor(user: GuildMember, permissions: Permissions);
|
|
6
|
+
}
|
|
7
|
+
export declare class ClientPermissionRequired extends Error {
|
|
8
|
+
permissions: Permissions;
|
|
9
|
+
constructor(permissions: Permissions);
|
|
10
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClientPermissionRequired = exports.UserPermissionRequired = void 0;
|
|
4
|
+
class UserPermissionRequired extends Error {
|
|
5
|
+
constructor(user, permissions) {
|
|
6
|
+
super();
|
|
7
|
+
this.user = user;
|
|
8
|
+
this.permissions = permissions;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.UserPermissionRequired = UserPermissionRequired;
|
|
12
|
+
class ClientPermissionRequired extends Error {
|
|
13
|
+
constructor(permissions) {
|
|
14
|
+
super();
|
|
15
|
+
this.permissions = permissions;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.ClientPermissionRequired = ClientPermissionRequired;
|
package/dist/error/index.d.ts
CHANGED
package/dist/error/index.js
CHANGED
|
@@ -12,3 +12,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./InvalidTargetError"), exports);
|
|
14
14
|
__exportStar(require("./ModuleError"), exports);
|
|
15
|
+
__exportStar(require("./ArgumentNotProvided"), exports);
|
|
16
|
+
__exportStar(require("./ArgumentConverterNotFound"), exports);
|
|
17
|
+
__exportStar(require("./CommandCheckFailed"), exports);
|
|
18
|
+
__exportStar(require("./PermissionRequired"), exports);
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -11,7 +11,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
require("reflect-metadata");
|
|
14
|
+
require("./typings");
|
|
14
15
|
__exportStar(require("./interface"), exports);
|
|
15
16
|
__exportStar(require("./structures"), exports);
|
|
16
17
|
__exportStar(require("./error"), exports);
|
|
17
18
|
__exportStar(require("./command"), exports);
|
|
19
|
+
__exportStar(require("./listener"), exports);
|
|
20
|
+
__exportStar(require("./builtinModules/BuiltInModule"), exports);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listener = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const Listener_1 = require("./Listener");
|
|
7
|
+
const listener = (event) => {
|
|
8
|
+
return (target, propertyKey) => {
|
|
9
|
+
utils_1.checkTarget(target);
|
|
10
|
+
let properties = Reflect.getMetadata(constants_1.KListeners, target);
|
|
11
|
+
const listener = new Listener_1.Listener(event, Reflect.get(target, propertyKey));
|
|
12
|
+
if (properties) {
|
|
13
|
+
properties.push(listener);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
properties = [listener];
|
|
17
|
+
Reflect.defineMetadata(constants_1.KListeners, properties, target);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
exports.listener = listener;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./Listener"), exports);
|
|
14
|
+
__exportStar(require("./decorator"), exports);
|
|
@@ -27,6 +27,7 @@ exports.CommandClient = void 0;
|
|
|
27
27
|
const lodash_1 = __importDefault(require("lodash"));
|
|
28
28
|
const Registry_1 = require("./Registry");
|
|
29
29
|
const discord_js_1 = require("discord.js");
|
|
30
|
+
const builtinModules_1 = require("../builtinModules");
|
|
30
31
|
class CommandClient {
|
|
31
32
|
constructor(_a) {
|
|
32
33
|
var { client } = _a, options = __rest(_a, ["client"]);
|
|
@@ -40,54 +41,30 @@ class CommandClient {
|
|
|
40
41
|
},
|
|
41
42
|
owners: 'auto',
|
|
42
43
|
});
|
|
43
|
-
this.client.
|
|
44
|
-
this.
|
|
44
|
+
this.client.once('ready', () => this.ready());
|
|
45
|
+
this.registry.registerModule(new builtinModules_1.CommandHandler(this.registry));
|
|
46
|
+
this.registry.registerModule(new builtinModules_1.BuiltinCommandConverters(this));
|
|
45
47
|
}
|
|
46
|
-
|
|
48
|
+
fetchOwners() {
|
|
49
|
+
var _a, _b;
|
|
47
50
|
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (!res)
|
|
57
|
-
return;
|
|
58
|
-
prefix = res;
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
if (!msg.content.includes(prefixList))
|
|
62
|
-
return;
|
|
63
|
-
prefix = prefixList;
|
|
64
|
-
}
|
|
65
|
-
const args = msg.content.slice(prefix.length).split(' ');
|
|
66
|
-
const command = args.shift();
|
|
67
|
-
if (!command)
|
|
68
|
-
return;
|
|
69
|
-
this.registry.commands;
|
|
70
|
-
console.log(command);
|
|
71
|
-
console.log(args);
|
|
51
|
+
yield ((_a = this.client.application) === null || _a === void 0 ? void 0 : _a.fetch());
|
|
52
|
+
const o = (_b = this.client.application) === null || _b === void 0 ? void 0 : _b.owner;
|
|
53
|
+
if (!o)
|
|
54
|
+
return [];
|
|
55
|
+
if (o instanceof discord_js_1.User)
|
|
56
|
+
return [o.id];
|
|
57
|
+
else
|
|
58
|
+
return o.members.map((x) => x.id);
|
|
72
59
|
});
|
|
73
60
|
}
|
|
74
|
-
fetchOwners() {
|
|
75
|
-
var _a;
|
|
76
|
-
const o = (_a = this.client.application) === null || _a === void 0 ? void 0 : _a.owner;
|
|
77
|
-
if (!o)
|
|
78
|
-
return [];
|
|
79
|
-
if (o instanceof discord_js_1.User)
|
|
80
|
-
return [o.id];
|
|
81
|
-
else
|
|
82
|
-
return o.members.map((x) => x.id);
|
|
83
|
-
}
|
|
84
61
|
ready() {
|
|
85
62
|
return __awaiter(this, void 0, void 0, function* () {
|
|
86
63
|
if (this._isReady)
|
|
87
64
|
return;
|
|
88
65
|
this._isReady = true;
|
|
89
66
|
if (this.options.owners === 'auto') {
|
|
90
|
-
const owners = this.fetchOwners();
|
|
67
|
+
const owners = yield this.fetchOwners();
|
|
91
68
|
this.owners.push(...owners);
|
|
92
69
|
}
|
|
93
70
|
});
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
import type { Command } from '../command';
|
|
2
|
+
import { Listener } from '../listener';
|
|
3
|
+
import { ArgumentConverter } from '../command';
|
|
1
4
|
export declare abstract class Module {
|
|
5
|
+
get commands(): Command[];
|
|
6
|
+
get listeners(): Listener[];
|
|
7
|
+
get argumentConverters(): ArgumentConverter[];
|
|
8
|
+
get path(): string | undefined;
|
|
2
9
|
load(): void;
|
|
3
10
|
unload(): void;
|
|
4
11
|
beforeReload(): void;
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Module = void 0;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
4
5
|
class Module {
|
|
6
|
+
get commands() {
|
|
7
|
+
return Reflect.getMetadata(constants_1.KCommands, this) || [];
|
|
8
|
+
}
|
|
9
|
+
get listeners() {
|
|
10
|
+
return Reflect.getMetadata(constants_1.KListeners, this) || [];
|
|
11
|
+
}
|
|
12
|
+
get argumentConverters() {
|
|
13
|
+
return Reflect.getMetadata(constants_1.KArgumentConverters, this) || [];
|
|
14
|
+
}
|
|
15
|
+
get path() {
|
|
16
|
+
return Reflect.getMetadata(constants_1.KModulePath, this);
|
|
17
|
+
}
|
|
5
18
|
load() { }
|
|
6
19
|
unload() { }
|
|
7
20
|
beforeReload() { }
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import { CommandClient } from './CommandClient';
|
|
2
2
|
import { Module } from './Module';
|
|
3
3
|
import { Command } from '../command';
|
|
4
|
+
import { Collection } from 'discord.js';
|
|
5
|
+
import { ArgumentConverter } from '../command';
|
|
4
6
|
export declare class Registry {
|
|
5
|
-
|
|
7
|
+
client: CommandClient;
|
|
6
8
|
constructor(client: CommandClient);
|
|
7
|
-
modules: Module
|
|
9
|
+
modules: Collection<symbol, Module>;
|
|
8
10
|
get commands(): Command[];
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
get argumentConverters(): ArgumentConverter[];
|
|
12
|
+
registerModule(module: Module): Module;
|
|
13
|
+
loadModulesIn(dir: string, absolute?: boolean): Promise<void>;
|
|
14
|
+
loadModule(file: string, absolute?: boolean): Promise<Module>;
|
|
15
|
+
unregisterModule(module: Module): Promise<Module>;
|
|
16
|
+
unloadModule(module: Module): Promise<void>;
|
|
17
|
+
reloadModule(module: Module): Promise<boolean>;
|
|
18
|
+
reloadAll(): Promise<{
|
|
19
|
+
path: string;
|
|
20
|
+
success: boolean;
|
|
21
|
+
error?: Error | undefined;
|
|
22
|
+
}[]>;
|
|
13
23
|
}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
13
|
};
|
|
@@ -8,44 +17,126 @@ const Module_1 = require("./Module");
|
|
|
8
17
|
const constants_1 = require("../constants");
|
|
9
18
|
const path_1 = __importDefault(require("path"));
|
|
10
19
|
const error_1 = require("../error");
|
|
20
|
+
const discord_js_1 = require("discord.js");
|
|
21
|
+
const walk_sync_1 = __importDefault(require("walk-sync"));
|
|
11
22
|
class Registry {
|
|
12
23
|
constructor(client) {
|
|
13
24
|
this.client = client;
|
|
14
|
-
this.modules =
|
|
25
|
+
this.modules = new discord_js_1.Collection();
|
|
15
26
|
}
|
|
16
27
|
get commands() {
|
|
17
28
|
const result = [];
|
|
18
|
-
for (const module of this.modules) {
|
|
19
|
-
|
|
20
|
-
|
|
29
|
+
for (const [, module] of this.modules) {
|
|
30
|
+
result.push(...module.commands);
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
get argumentConverters() {
|
|
35
|
+
const result = [];
|
|
36
|
+
for (const [, module] of this.modules) {
|
|
37
|
+
result.push(...module.argumentConverters);
|
|
21
38
|
}
|
|
22
39
|
return result;
|
|
23
40
|
}
|
|
24
41
|
registerModule(module) {
|
|
25
|
-
|
|
42
|
+
this.modules.set(Symbol(module.constructor.name), module);
|
|
43
|
+
const list = [];
|
|
44
|
+
for (const listener of module.listeners) {
|
|
45
|
+
const bound = listener.execute.bind(module);
|
|
46
|
+
list.push({ event: listener.name, execute: bound });
|
|
47
|
+
this.client.client.on(listener.name, bound);
|
|
48
|
+
}
|
|
49
|
+
Reflect.defineMetadata(constants_1.KListenerExecuteCache, list, module);
|
|
50
|
+
return module;
|
|
51
|
+
}
|
|
52
|
+
loadModulesIn(dir, absolute = false) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
let p = absolute ? dir : path_1.default.join(require.main.path, dir);
|
|
55
|
+
for (const i of walk_sync_1.default(p)) {
|
|
56
|
+
yield this.loadModule(path_1.default.join(p, i), true);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
26
59
|
}
|
|
27
60
|
loadModule(file, absolute = false) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
let p = absolute ? file : path_1.default.join(require.main.path, file);
|
|
63
|
+
let m;
|
|
64
|
+
try {
|
|
65
|
+
m = require(p);
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
throw new error_1.ModuleLoadError(p);
|
|
69
|
+
}
|
|
70
|
+
if (m.loaded)
|
|
71
|
+
throw new Error('MODULE_ALREADY_LOADED');
|
|
72
|
+
if (!m.install)
|
|
73
|
+
throw new error_1.InvalidModuleError('Install function not found.');
|
|
74
|
+
const mod = m.install(this.client);
|
|
75
|
+
if (!(mod instanceof Module_1.Module))
|
|
76
|
+
throw new error_1.InvalidTargetError();
|
|
77
|
+
Reflect.defineMetadata(constants_1.KModulePath, require.resolve(p), mod);
|
|
78
|
+
this.registerModule(mod);
|
|
79
|
+
yield mod.load();
|
|
80
|
+
m.loaded = true;
|
|
81
|
+
return mod;
|
|
82
|
+
});
|
|
43
83
|
}
|
|
44
84
|
unregisterModule(module) {
|
|
45
|
-
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
if (Reflect.getMetadata(constants_1.KBuiltInModule, module))
|
|
87
|
+
throw new Error('Built-in modules cannot be unloaded');
|
|
88
|
+
const symbol = this.modules.findKey((x) => x === module);
|
|
89
|
+
if (!symbol)
|
|
90
|
+
return module;
|
|
91
|
+
yield module.unload();
|
|
92
|
+
const list = Reflect.getMetadata(constants_1.KListenerExecuteCache, module);
|
|
93
|
+
for (const listener of list) {
|
|
94
|
+
this.client.client.removeListener(listener.event, listener.execute);
|
|
95
|
+
}
|
|
96
|
+
this.modules.delete(symbol);
|
|
97
|
+
return module;
|
|
98
|
+
});
|
|
46
99
|
}
|
|
47
100
|
unloadModule(module) {
|
|
48
|
-
|
|
101
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
const p = Reflect.getMetadata(constants_1.KModulePath, module);
|
|
103
|
+
if (!p)
|
|
104
|
+
throw new error_1.InvalidModuleError('This module is not loaded by loadModule.');
|
|
105
|
+
yield this.unregisterModule(module);
|
|
106
|
+
delete require.cache[p];
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
reloadModule(module) {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
yield module.beforeReload();
|
|
112
|
+
const p = Reflect.getMetadata(constants_1.KModulePath, module);
|
|
113
|
+
yield this.unloadModule(module);
|
|
114
|
+
const mod = yield this.loadModule(p, true);
|
|
115
|
+
yield mod.afterReload();
|
|
116
|
+
return true;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
reloadAll() {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
const results = [];
|
|
122
|
+
for (const [, module] of this.modules.filter((x) => !!x.path)) {
|
|
123
|
+
try {
|
|
124
|
+
yield this.reloadModule(module);
|
|
125
|
+
results.push({
|
|
126
|
+
path: module.path,
|
|
127
|
+
success: false,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
results.push({
|
|
132
|
+
error: e,
|
|
133
|
+
path: module.path,
|
|
134
|
+
success: false,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return results;
|
|
139
|
+
});
|
|
49
140
|
}
|
|
50
141
|
}
|
|
51
142
|
exports.Registry = Registry;
|
package/dist/structures/index.js
CHANGED
|
@@ -10,5 +10,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./CommandClient"), exports);
|
|
14
13
|
__exportStar(require("./Module"), exports);
|
|
14
|
+
__exportStar(require("./CommandClient"), exports);
|
|
15
|
+
__exportStar(require("./Registry"), exports);
|
package/dist/typings.js
ADDED
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const checkTarget: (target: Object) => void;
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkTarget = void 0;
|
|
4
|
+
const structures_1 = require("./structures");
|
|
5
|
+
const error_1 = require("./error");
|
|
6
|
+
const checkTarget = (target) => {
|
|
7
|
+
if (!(target instanceof structures_1.Module))
|
|
8
|
+
throw new error_1.InvalidTargetError();
|
|
9
|
+
};
|
|
10
|
+
exports.checkTarget = checkTarget;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pikokr/command.ts",
|
|
3
3
|
"description": "Discord.js command framework for typescript.",
|
|
4
|
-
"version": "3.0.0-dev.
|
|
4
|
+
"version": "3.0.0-dev.85a29c3",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "MIT",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"@types/node": "^14.14.37",
|
|
17
17
|
"lodash": "^4.17.21",
|
|
18
18
|
"reflect-metadata": "^0.1.13",
|
|
19
|
-
"typescript": "^4.2.3"
|
|
19
|
+
"typescript": "^4.2.3",
|
|
20
|
+
"walk-sync": "^3.0.0"
|
|
20
21
|
},
|
|
21
22
|
"repository": {
|
|
22
23
|
"type": "git",
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { BuiltInModule } from './BuiltInModule'
|
|
2
|
+
import { argumentConverter } from '../command'
|
|
3
|
+
import { Client, GuildMember, Message, User } from 'discord.js'
|
|
4
|
+
import { CommandClient } from '../structures'
|
|
5
|
+
|
|
6
|
+
export class BuiltinCommandConverters extends BuiltInModule {
|
|
7
|
+
client: Client
|
|
8
|
+
|
|
9
|
+
constructor(private cts: CommandClient) {
|
|
10
|
+
super()
|
|
11
|
+
this.client = cts.client
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@argumentConverter(Message, false)
|
|
15
|
+
message(msg: Message) {
|
|
16
|
+
return msg
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@argumentConverter(String)
|
|
20
|
+
string(msg: Message, arg: string) {
|
|
21
|
+
return arg
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
getUserIDByMention(mention: string): `${bigint}` | undefined {
|
|
25
|
+
if (!mention) return
|
|
26
|
+
if (mention.startsWith('<@') && mention.endsWith('>')) {
|
|
27
|
+
mention = mention.slice(2, -1)
|
|
28
|
+
if (mention.startsWith('!')) {
|
|
29
|
+
mention = mention.slice(1)
|
|
30
|
+
}
|
|
31
|
+
return mention as `${bigint}`
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@argumentConverter(User)
|
|
36
|
+
user(value: string): User | null {
|
|
37
|
+
const id = this.getUserIDByMention(value)
|
|
38
|
+
if (!id) return null
|
|
39
|
+
const user = this.client.users.cache.get(id)
|
|
40
|
+
return user || null
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@argumentConverter(GuildMember)
|
|
44
|
+
member(value: string, msg: Message): GuildMember | undefined {
|
|
45
|
+
const id = this.getUserIDByMention(value)
|
|
46
|
+
if (!id) return
|
|
47
|
+
const user = msg.guild?.members.cache.get(id)
|
|
48
|
+
return user || undefined
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@argumentConverter(Number)
|
|
52
|
+
number(value: string) {
|
|
53
|
+
const n = Number(value)
|
|
54
|
+
return isNaN(n) ? undefined : n
|
|
55
|
+
}
|
|
56
|
+
}
|