trivious 1.3.21 → 1.3.23
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/dist/index.cjs +1443 -67
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +979 -3
- package/dist/index.d.ts +979 -3
- package/dist/index.js +1432 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/client/trivious.client.cjs +0 -90
- package/dist/core/client/trivious.client.cjs.map +0 -1
- package/dist/core/client/trivious.client.d.cts +0 -3
- package/dist/core/client/trivious.client.d.ts +0 -3
- package/dist/core/client/trivious.client.js +0 -88
- package/dist/core/client/trivious.client.js.map +0 -1
- package/dist/core/commands/command.base.cjs +0 -224
- package/dist/core/commands/command.base.cjs.map +0 -1
- package/dist/core/commands/command.base.d.cts +0 -3
- package/dist/core/commands/command.base.d.ts +0 -3
- package/dist/core/commands/command.base.js +0 -214
- package/dist/core/commands/command.base.js.map +0 -1
- package/dist/core/commands/contextcommand.base.cjs +0 -98
- package/dist/core/commands/contextcommand.base.cjs.map +0 -1
- package/dist/core/commands/contextcommand.base.d.cts +0 -3
- package/dist/core/commands/contextcommand.base.d.ts +0 -3
- package/dist/core/commands/contextcommand.base.js +0 -93
- package/dist/core/commands/contextcommand.base.js.map +0 -1
- package/dist/core/commands/subcommand.base.cjs +0 -96
- package/dist/core/commands/subcommand.base.cjs.map +0 -1
- package/dist/core/commands/subcommand.base.d.cts +0 -3
- package/dist/core/commands/subcommand.base.d.ts +0 -3
- package/dist/core/commands/subcommand.base.js +0 -91
- package/dist/core/commands/subcommand.base.js.map +0 -1
- package/dist/core/components/component.base.cjs +0 -111
- package/dist/core/components/component.base.cjs.map +0 -1
- package/dist/core/components/component.base.d.cts +0 -3
- package/dist/core/components/component.base.d.ts +0 -3
- package/dist/core/components/component.base.js +0 -106
- package/dist/core/components/component.base.js.map +0 -1
- package/dist/core/events/interactionCreate.cjs +0 -68
- package/dist/core/events/interactionCreate.cjs.map +0 -1
- package/dist/core/events/interactionCreate.d.cts +0 -10
- package/dist/core/events/interactionCreate.d.ts +0 -10
- package/dist/core/events/interactionCreate.js +0 -66
- package/dist/core/events/interactionCreate.js.map +0 -1
- package/dist/core/registry/command.registry.cjs +0 -56
- package/dist/core/registry/command.registry.cjs.map +0 -1
- package/dist/core/registry/command.registry.d.cts +0 -3
- package/dist/core/registry/command.registry.d.ts +0 -3
- package/dist/core/registry/command.registry.js +0 -54
- package/dist/core/registry/command.registry.js.map +0 -1
- package/dist/core/registry/component.registry.cjs +0 -42
- package/dist/core/registry/component.registry.cjs.map +0 -1
- package/dist/core/registry/component.registry.d.cts +0 -3
- package/dist/core/registry/component.registry.d.ts +0 -3
- package/dist/core/registry/component.registry.js +0 -40
- package/dist/core/registry/component.registry.js.map +0 -1
- package/dist/core/registry/event.registry.cjs +0 -57
- package/dist/core/registry/event.registry.cjs.map +0 -1
- package/dist/core/registry/event.registry.d.cts +0 -3
- package/dist/core/registry/event.registry.d.ts +0 -3
- package/dist/core/registry/event.registry.js +0 -51
- package/dist/core/registry/event.registry.js.map +0 -1
- package/dist/core/registry/index.cjs +0 -49
- package/dist/core/registry/index.cjs.map +0 -1
- package/dist/core/registry/index.d.cts +0 -19
- package/dist/core/registry/index.d.ts +0 -19
- package/dist/core/registry/index.js +0 -39
- package/dist/core/registry/index.js.map +0 -1
- package/dist/core/registry/module.registry.cjs +0 -57
- package/dist/core/registry/module.registry.cjs.map +0 -1
- package/dist/core/registry/module.registry.d.cts +0 -3
- package/dist/core/registry/module.registry.d.ts +0 -3
- package/dist/core/registry/module.registry.js +0 -55
- package/dist/core/registry/module.registry.js.map +0 -1
- package/dist/index-BPaYmWRO.d.ts +0 -927
- package/dist/index-CU2Xl9Xo.d.cts +0 -927
- package/dist/shared/typings/client.cjs +0 -4
- package/dist/shared/typings/client.cjs.map +0 -1
- package/dist/shared/typings/client.d.cts +0 -3
- package/dist/shared/typings/client.d.ts +0 -3
- package/dist/shared/typings/client.js +0 -3
- package/dist/shared/typings/client.js.map +0 -1
- package/dist/shared/typings/commands.cjs +0 -4
- package/dist/shared/typings/commands.cjs.map +0 -1
- package/dist/shared/typings/commands.d.cts +0 -3
- package/dist/shared/typings/commands.d.ts +0 -3
- package/dist/shared/typings/commands.js +0 -3
- package/dist/shared/typings/commands.js.map +0 -1
- package/dist/shared/typings/components.cjs +0 -22
- package/dist/shared/typings/components.cjs.map +0 -1
- package/dist/shared/typings/components.d.cts +0 -3
- package/dist/shared/typings/components.d.ts +0 -3
- package/dist/shared/typings/components.js +0 -19
- package/dist/shared/typings/components.js.map +0 -1
- package/dist/shared/typings/events.cjs +0 -4
- package/dist/shared/typings/events.cjs.map +0 -1
- package/dist/shared/typings/events.d.cts +0 -3
- package/dist/shared/typings/events.d.ts +0 -3
- package/dist/shared/typings/events.js +0 -3
- package/dist/shared/typings/events.js.map +0 -1
- package/dist/shared/typings/index.cjs +0 -56
- package/dist/shared/typings/index.cjs.map +0 -1
- package/dist/shared/typings/index.d.cts +0 -3
- package/dist/shared/typings/index.d.ts +0 -3
- package/dist/shared/typings/index.js +0 -9
- package/dist/shared/typings/index.js.map +0 -1
- package/dist/shared/typings/module.cjs +0 -4
- package/dist/shared/typings/module.cjs.map +0 -1
- package/dist/shared/typings/module.d.cts +0 -3
- package/dist/shared/typings/module.d.ts +0 -3
- package/dist/shared/typings/module.js +0 -3
- package/dist/shared/typings/module.js.map +0 -1
- package/dist/shared/typings/permissions.cjs +0 -22
- package/dist/shared/typings/permissions.cjs.map +0 -1
- package/dist/shared/typings/permissions.d.cts +0 -3
- package/dist/shared/typings/permissions.d.ts +0 -3
- package/dist/shared/typings/permissions.js +0 -19
- package/dist/shared/typings/permissions.js.map +0 -1
- package/dist/shared/typings/registry.cjs +0 -63
- package/dist/shared/typings/registry.cjs.map +0 -1
- package/dist/shared/typings/registry.d.cts +0 -51
- package/dist/shared/typings/registry.d.ts +0 -51
- package/dist/shared/typings/registry.js +0 -61
- package/dist/shared/typings/registry.js.map +0 -1
- package/dist/shared/utility/functions.cjs +0 -81
- package/dist/shared/utility/functions.cjs.map +0 -1
- package/dist/shared/utility/functions.d.cts +0 -56
- package/dist/shared/utility/functions.d.ts +0 -56
- package/dist/shared/utility/functions.js +0 -74
- package/dist/shared/utility/functions.js.map +0 -1
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { ContextMenuCommandBuilder } from 'discord.js';
|
|
2
|
-
import { Command, PermissionLevel } from '../../index.js';
|
|
3
|
-
|
|
4
|
-
class ContextMenuCommand extends Command {
|
|
5
|
-
/**
|
|
6
|
-
* Base command handler.
|
|
7
|
-
*
|
|
8
|
-
* @public
|
|
9
|
-
* @async
|
|
10
|
-
* @param {TriviousClient} client
|
|
11
|
-
* @param {ContextMenuCommandInteraction} interaction
|
|
12
|
-
* @returns {*}
|
|
13
|
-
*/
|
|
14
|
-
async execute(client, interaction) {
|
|
15
|
-
const { run, metadata } = this;
|
|
16
|
-
const memberHasPermission = await this.validateGuildPermission(
|
|
17
|
-
client,
|
|
18
|
-
interaction,
|
|
19
|
-
metadata.permission,
|
|
20
|
-
false
|
|
21
|
-
);
|
|
22
|
-
if (memberHasPermission) await run(client, interaction);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
class ContextMenuBuilder extends ContextMenuCommandBuilder {
|
|
26
|
-
_active = true;
|
|
27
|
-
_ownerOnly = false;
|
|
28
|
-
_permission = PermissionLevel.USER;
|
|
29
|
-
_ephemeralReply = false;
|
|
30
|
-
/**
|
|
31
|
-
* Set the command as disabled.
|
|
32
|
-
*
|
|
33
|
-
* @public
|
|
34
|
-
* @returns {this}
|
|
35
|
-
*/
|
|
36
|
-
disable() {
|
|
37
|
-
this._active = false;
|
|
38
|
-
return this;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Set the command as owner only.
|
|
42
|
-
*
|
|
43
|
-
* @public
|
|
44
|
-
* @returns {this}
|
|
45
|
-
*/
|
|
46
|
-
setOwnerOnly() {
|
|
47
|
-
this._permission = PermissionLevel.BOT_OWNER;
|
|
48
|
-
this._ownerOnly = true;
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Set the permission level required to run the command.
|
|
53
|
-
*
|
|
54
|
-
* @public
|
|
55
|
-
* @param {PermissionLevel} permission
|
|
56
|
-
* @returns {this}
|
|
57
|
-
*/
|
|
58
|
-
setPermission(permission) {
|
|
59
|
-
this._permission = permission;
|
|
60
|
-
return this;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Set the interaction as ephemeral.
|
|
64
|
-
*
|
|
65
|
-
* @public
|
|
66
|
-
* @returns {this}
|
|
67
|
-
*/
|
|
68
|
-
setEphemeralReply() {
|
|
69
|
-
this._ephemeralReply = true;
|
|
70
|
-
return this;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Build the builder
|
|
74
|
-
*
|
|
75
|
-
* @public
|
|
76
|
-
* @returns {{ data: ContextMenuBuilder; metadata: ContextMenuMetadata; }}
|
|
77
|
-
*/
|
|
78
|
-
build() {
|
|
79
|
-
return {
|
|
80
|
-
data: this,
|
|
81
|
-
metadata: {
|
|
82
|
-
active: this._active,
|
|
83
|
-
ownerOnly: this._ownerOnly,
|
|
84
|
-
permission: this._permission,
|
|
85
|
-
ephemeralReply: this._ephemeralReply
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export { ContextMenuBuilder, ContextMenuCommand as default };
|
|
92
|
-
//# sourceMappingURL=contextcommand.base.js.map
|
|
93
|
-
//# sourceMappingURL=contextcommand.base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/commands/contextcommand.base.ts"],"names":[],"mappings":";;;AAaA,MAAO,2BAAkD,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BhE,MAAa,OAAA,CAAQ,MAAA,EAAwB,WAAA,EAA4C;AACxF,IAAA,MAAM,EAAE,GAAA,EAAK,QAAA,EAAS,GAAI,IAAA;AAE1B,IAAA,MAAM,mBAAA,GAAsB,MAAM,IAAA,CAAK,uBAAA;AAAA,MACtC,MAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA,CAAS,UAAA;AAAA,MACT;AAAA,KACD;AACA,IAAA,IAAI,mBAAA,EAAqB,MAAM,GAAA,CAAI,MAAA,EAAQ,WAAW,CAAA;AAAA,EACvD;AACD;AAUO,MAAM,2BAA2B,yBAAA,CAA0B;AAAA,EACzD,OAAA,GAAU,IAAA;AAAA,EACV,UAAA,GAAa,KAAA;AAAA,EACb,cAAc,eAAA,CAAgB,IAAA;AAAA,EAC9B,eAAA,GAAkB,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnB,OAAA,GAAgB;AACtB,IAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AACf,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,YAAA,GAAqB;AAC3B,IAAA,IAAA,CAAK,cAAc,eAAA,CAAgB,SAAA;AACnC,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,cAAc,UAAA,EAAmC;AACvD,IAAA,IAAA,CAAK,WAAA,GAAc,UAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,iBAAA,GAA0B;AAChC,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,KAAA,GAAQ;AACd,IAAA,OAAO;AAAA,MACN,IAAA,EAAM,IAAA;AAAA,MACN,QAAA,EAAU;AAAA,QACT,QAAQ,IAAA,CAAK,OAAA;AAAA,QACb,WAAW,IAAA,CAAK,UAAA;AAAA,QAChB,YAAY,IAAA,CAAK,WAAA;AAAA,QACjB,gBAAgB,IAAA,CAAK;AAAA;AACtB,KACD;AAAA,EACD;AACD","file":"contextcommand.base.js","sourcesContent":["import { ContextMenuCommandBuilder } from \"discord.js\";\nimport { ContextMenuMetadata } from \"src/shared/typings/commands.js\";\nimport { Command, ContextMenuCommandInteraction, PermissionLevel, TriviousClient } from \"src/index.js\";\n\n/**\n * Base ContextMenuCommand.\n *\n * @export\n * @abstract\n * @class ContextMenuCommand\n * @typedef {ContextMenuCommand}\n * @extends {Command}\n */\nexport default abstract class ContextMenuCommand extends Command {\n\tabstract data: ContextMenuCommandBuilder;\n\tabstract metadata: ContextMenuMetadata;\n\t/**\n\t * Function to run when the command is used.\n\t *\n\t * @abstract\n\t * @type {(\n\t * \t\tclient: TriviousClient,\n\t * \t\tinteraction: ContextMenuCommandInteraction\n\t * \t) => Promise<void>}\n\t */\n\tabstract run: (\n\t\tclient: TriviousClient,\n\t\tinteraction: ContextMenuCommandInteraction\n\t) => Promise<void>;\n\n\t/**\n\t * Base command handler.\n\t *\n\t * @public\n\t * @async\n\t * @param {TriviousClient} client\n\t * @param {ContextMenuCommandInteraction} interaction\n\t * @returns {*}\n\t */\n\tpublic async execute(client: TriviousClient, interaction: ContextMenuCommandInteraction) {\n\t\tconst { run, metadata } = this;\n\n\t\tconst memberHasPermission = await this.validateGuildPermission(\n\t\t\tclient,\n\t\t\tinteraction,\n\t\t\tmetadata.permission,\n\t\t\tfalse\n\t\t);\n\t\tif (memberHasPermission) await run(client, interaction);\n\t}\n}\n\n/**\n * Base ContextMenuBuilder.\n *\n * @export\n * @class ContextMenuBuilder\n * @typedef {ContextMenuBuilder}\n * @extends {ContextMenuCommandBuilder}\n */\nexport class ContextMenuBuilder extends ContextMenuCommandBuilder {\n\tprivate _active = true;\n\tprivate _ownerOnly = false;\n\tprivate _permission = PermissionLevel.USER;\n\tprivate _ephemeralReply = false;\n\n\t/**\n\t * Set the command as disabled.\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic disable(): this {\n\t\tthis._active = false;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the command as owner only.\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic setOwnerOnly(): this {\n\t\tthis._permission = PermissionLevel.BOT_OWNER;\n\t\tthis._ownerOnly = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the permission level required to run the command.\n\t *\n\t * @public\n\t * @param {PermissionLevel} permission\n\t * @returns {this}\n\t */\n\tpublic setPermission(permission: PermissionLevel): this {\n\t\tthis._permission = permission;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the interaction as ephemeral.\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic setEphemeralReply(): this {\n\t\tthis._ephemeralReply = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Build the builder\n\t *\n\t * @public\n\t * @returns {{ data: ContextMenuBuilder; metadata: ContextMenuMetadata; }}\n\t */\n\tpublic build() {\n\t\treturn {\n\t\t\tdata: this as ContextMenuBuilder,\n\t\t\tmetadata: {\n\t\t\t\tactive: this._active,\n\t\t\t\townerOnly: this._ownerOnly,\n\t\t\t\tpermission: this._permission,\n\t\t\t\tephemeralReply: this._ephemeralReply,\n\t\t\t} satisfies ContextMenuMetadata,\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var discord_js = require('discord.js');
|
|
6
|
-
var index_js = require('../../shared/typings/index.js');
|
|
7
|
-
|
|
8
|
-
class SubcommandBuilder extends discord_js.SlashCommandSubcommandBuilder {
|
|
9
|
-
_active = true;
|
|
10
|
-
_ownerOnly = false;
|
|
11
|
-
_permission = index_js.PermissionLevel.USER;
|
|
12
|
-
_ephemeralReply = false;
|
|
13
|
-
/**
|
|
14
|
-
* Set the subcommand as disabled.
|
|
15
|
-
*
|
|
16
|
-
* @public
|
|
17
|
-
* @returns {this}
|
|
18
|
-
*/
|
|
19
|
-
disable() {
|
|
20
|
-
this._active = false;
|
|
21
|
-
return this;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Set the subcommand as owner only.
|
|
25
|
-
*
|
|
26
|
-
* @public
|
|
27
|
-
* @returns {this}
|
|
28
|
-
*/
|
|
29
|
-
setOwnerOnly() {
|
|
30
|
-
this._permission = index_js.PermissionLevel.BOT_OWNER;
|
|
31
|
-
this._ownerOnly = true;
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Set the permission level required to run the subcommand.
|
|
36
|
-
*
|
|
37
|
-
* @public
|
|
38
|
-
* @param {PermissionLevel} permission
|
|
39
|
-
* @returns {this}
|
|
40
|
-
*/
|
|
41
|
-
setPermission(permission) {
|
|
42
|
-
this._permission = permission;
|
|
43
|
-
return this;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Set the interaction as ephemeral
|
|
47
|
-
*
|
|
48
|
-
* @public
|
|
49
|
-
* @returns {this}
|
|
50
|
-
*/
|
|
51
|
-
setEphemeralReply() {
|
|
52
|
-
this._ephemeralReply = true;
|
|
53
|
-
return this;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Build the builder.
|
|
57
|
-
*
|
|
58
|
-
* @public
|
|
59
|
-
* @returns {{ data: SlashCommandSubcommandBuilder; metadata: SubcommandMetadata; }}
|
|
60
|
-
*/
|
|
61
|
-
build() {
|
|
62
|
-
return {
|
|
63
|
-
data: this,
|
|
64
|
-
metadata: {
|
|
65
|
-
active: this._active,
|
|
66
|
-
ownerOnly: this._ownerOnly,
|
|
67
|
-
permission: this._permission,
|
|
68
|
-
ephemeralReply: this._ephemeralReply
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
class Subcommand {
|
|
74
|
-
/**
|
|
75
|
-
* Reply to the interaction respecting command metadata and if the interaction has already been replied to.
|
|
76
|
-
*
|
|
77
|
-
* @async
|
|
78
|
-
* @param {ChatInputCommandInteraction<CacheType>} interaction
|
|
79
|
-
* @param {(MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions)} options
|
|
80
|
-
* @returns {*}
|
|
81
|
-
*/
|
|
82
|
-
async reply(interaction, options) {
|
|
83
|
-
if (interaction.replied) {
|
|
84
|
-
await interaction.editReply(options);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const newOptions = { ...options };
|
|
88
|
-
if (this.metadata.ephemeralReply) newOptions.flags = ["Ephemeral"];
|
|
89
|
-
await interaction.reply(newOptions);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
exports.SubcommandBuilder = SubcommandBuilder;
|
|
94
|
-
exports.default = Subcommand;
|
|
95
|
-
//# sourceMappingURL=subcommand.base.cjs.map
|
|
96
|
-
//# sourceMappingURL=subcommand.base.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/commands/subcommand.base.ts"],"names":["SlashCommandSubcommandBuilder","PermissionLevel"],"mappings":";;;;;;;AAoBO,MAAM,0BAA0BA,wCAAA,CAA8B;AAAA,EAC5D,OAAA,GAAU,IAAA;AAAA,EACV,UAAA,GAAa,KAAA;AAAA,EACb,cAAcC,wBAAA,CAAgB,IAAA;AAAA,EAC9B,eAAA,GAAkB,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnB,OAAA,GAAgB;AACtB,IAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AACf,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,YAAA,GAAqB;AAC3B,IAAA,IAAA,CAAK,cAAcA,wBAAA,CAAgB,SAAA;AACnC,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,cAAc,UAAA,EAAmC;AACvD,IAAA,IAAA,CAAK,WAAA,GAAc,UAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,iBAAA,GAA0B;AAChC,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,KAAA,GAAQ;AACd,IAAA,OAAO;AAAA,MACN,IAAA,EAAM,IAAA;AAAA,MACN,QAAA,EAAU;AAAA,QACT,QAAQ,IAAA,CAAK,OAAA;AAAA,QACb,WAAW,IAAA,CAAK,UAAA;AAAA,QAChB,YAAY,IAAA,CAAK,WAAA;AAAA,QACjB,gBAAgB,IAAA,CAAK;AAAA;AACtB,KACD;AAAA,EACD;AACD;AAUA,MAAO,UAAA,CAAkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BxC,MAAM,KAAA,CACL,WAAA,EACA,OAAA,EACC;AACD,IAAA,IAAI,YAAY,OAAA,EAAS;AACxB,MAAA,MAAM,WAAA,CAAY,UAAU,OAAsC,CAAA;AAClE,MAAA;AAAA,IACD;AAEA,IAAA,MAAM,UAAA,GAAa,EAAE,GAAG,OAAA,EAAQ;AAChC,IAAA,IAAI,KAAK,QAAA,CAAS,cAAA,EAAgB,UAAA,CAAW,KAAA,GAAQ,CAAC,WAAW,CAAA;AAEjE,IAAA,MAAM,WAAA,CAAY,MAAM,UAAU,CAAA;AAAA,EACnC;AACD","file":"subcommand.base.cjs","sourcesContent":["import {\n\tCacheType,\n\tChatInputCommandInteraction,\n\tInteractionEditReplyOptions,\n\tInteractionReplyOptions,\n\tMessagePayload,\n\tSlashCommandSubcommandBuilder,\n} from \"discord.js\";\nimport { PermissionLevel, SubcommandMetadata } from \"src/shared/typings/index.js\";\nimport { TriviousClient } from \"src/index.js\";\n\n\n/**\n * Base SubcommandBuilder.\n *\n * @export\n * @class SubcommandBuilder\n * @typedef {SubcommandBuilder}\n * @extends {SlashCommandSubcommandBuilder}\n */\nexport class SubcommandBuilder extends SlashCommandSubcommandBuilder {\n\tprivate _active = true;\n\tprivate _ownerOnly = false;\n\tprivate _permission = PermissionLevel.USER;\n\tprivate _ephemeralReply = false;\n\n\t/**\n\t * Set the subcommand as disabled.\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic disable(): this {\n\t\tthis._active = false;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the subcommand as owner only.\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic setOwnerOnly(): this {\n\t\tthis._permission = PermissionLevel.BOT_OWNER;\n\t\tthis._ownerOnly = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the permission level required to run the subcommand.\n\t *\n\t * @public\n\t * @param {PermissionLevel} permission\n\t * @returns {this}\n\t */\n\tpublic setPermission(permission: PermissionLevel): this {\n\t\tthis._permission = permission;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the interaction as ephemeral\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic setEphemeralReply(): this {\n\t\tthis._ephemeralReply = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Build the builder.\n\t *\n\t * @public\n\t * @returns {{ data: SlashCommandSubcommandBuilder; metadata: SubcommandMetadata; }}\n\t */\n\tpublic build() {\n\t\treturn {\n\t\t\tdata: this as SlashCommandSubcommandBuilder,\n\t\t\tmetadata: {\n\t\t\t\tactive: this._active,\n\t\t\t\townerOnly: this._ownerOnly,\n\t\t\t\tpermission: this._permission,\n\t\t\t\tephemeralReply: this._ephemeralReply,\n\t\t\t} satisfies SubcommandMetadata,\n\t\t};\n\t}\n}\n\n/**\n * Base Subcommand\n *\n * @export\n * @abstract\n * @class Subcommand\n * @typedef {Subcommand}\n */\nexport default abstract class Subcommand {\n\tabstract data: SlashCommandSubcommandBuilder;\n\tabstract metadata: SubcommandMetadata;\n\t/**\n\t * Function to execute the subcommand.\n\t *\n\t * @abstract\n\t * @readonly\n\t * @type {(\n\t * \t\tclient: TriviousClient,\n\t * \t\tinteraction: ChatInputCommandInteraction<CacheType>\n\t * \t) => Promise<void>}\n\t */\n\tabstract readonly execute: (\n\t\tclient: TriviousClient,\n\t\tinteraction: ChatInputCommandInteraction<CacheType>\n\t) => Promise<void>;\n\n\t/**\n\t * Reply to the interaction respecting command metadata and if the interaction has already been replied to.\n\t *\n\t * @async\n\t * @param {ChatInputCommandInteraction<CacheType>} interaction\n\t * @param {(MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions)} options\n\t * @returns {*}\n\t */\n\tasync reply(\n\t\tinteraction: ChatInputCommandInteraction<CacheType>,\n\t\toptions: MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions\n\t) {\n\t\tif (interaction.replied) {\n\t\t\tawait interaction.editReply(options as InteractionEditReplyOptions);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newOptions = { ...options } as InteractionReplyOptions;\n\t\tif (this.metadata.ephemeralReply) newOptions.flags = [\"Ephemeral\"];\n\n\t\tawait interaction.reply(newOptions);\n\t}\n}\n"]}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { SlashCommandSubcommandBuilder } from 'discord.js';
|
|
2
|
-
import { PermissionLevel } from '../../shared/typings/index.js';
|
|
3
|
-
|
|
4
|
-
class SubcommandBuilder extends SlashCommandSubcommandBuilder {
|
|
5
|
-
_active = true;
|
|
6
|
-
_ownerOnly = false;
|
|
7
|
-
_permission = PermissionLevel.USER;
|
|
8
|
-
_ephemeralReply = false;
|
|
9
|
-
/**
|
|
10
|
-
* Set the subcommand as disabled.
|
|
11
|
-
*
|
|
12
|
-
* @public
|
|
13
|
-
* @returns {this}
|
|
14
|
-
*/
|
|
15
|
-
disable() {
|
|
16
|
-
this._active = false;
|
|
17
|
-
return this;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Set the subcommand as owner only.
|
|
21
|
-
*
|
|
22
|
-
* @public
|
|
23
|
-
* @returns {this}
|
|
24
|
-
*/
|
|
25
|
-
setOwnerOnly() {
|
|
26
|
-
this._permission = PermissionLevel.BOT_OWNER;
|
|
27
|
-
this._ownerOnly = true;
|
|
28
|
-
return this;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Set the permission level required to run the subcommand.
|
|
32
|
-
*
|
|
33
|
-
* @public
|
|
34
|
-
* @param {PermissionLevel} permission
|
|
35
|
-
* @returns {this}
|
|
36
|
-
*/
|
|
37
|
-
setPermission(permission) {
|
|
38
|
-
this._permission = permission;
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Set the interaction as ephemeral
|
|
43
|
-
*
|
|
44
|
-
* @public
|
|
45
|
-
* @returns {this}
|
|
46
|
-
*/
|
|
47
|
-
setEphemeralReply() {
|
|
48
|
-
this._ephemeralReply = true;
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Build the builder.
|
|
53
|
-
*
|
|
54
|
-
* @public
|
|
55
|
-
* @returns {{ data: SlashCommandSubcommandBuilder; metadata: SubcommandMetadata; }}
|
|
56
|
-
*/
|
|
57
|
-
build() {
|
|
58
|
-
return {
|
|
59
|
-
data: this,
|
|
60
|
-
metadata: {
|
|
61
|
-
active: this._active,
|
|
62
|
-
ownerOnly: this._ownerOnly,
|
|
63
|
-
permission: this._permission,
|
|
64
|
-
ephemeralReply: this._ephemeralReply
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
class Subcommand {
|
|
70
|
-
/**
|
|
71
|
-
* Reply to the interaction respecting command metadata and if the interaction has already been replied to.
|
|
72
|
-
*
|
|
73
|
-
* @async
|
|
74
|
-
* @param {ChatInputCommandInteraction<CacheType>} interaction
|
|
75
|
-
* @param {(MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions)} options
|
|
76
|
-
* @returns {*}
|
|
77
|
-
*/
|
|
78
|
-
async reply(interaction, options) {
|
|
79
|
-
if (interaction.replied) {
|
|
80
|
-
await interaction.editReply(options);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
const newOptions = { ...options };
|
|
84
|
-
if (this.metadata.ephemeralReply) newOptions.flags = ["Ephemeral"];
|
|
85
|
-
await interaction.reply(newOptions);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export { SubcommandBuilder, Subcommand as default };
|
|
90
|
-
//# sourceMappingURL=subcommand.base.js.map
|
|
91
|
-
//# sourceMappingURL=subcommand.base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/commands/subcommand.base.ts"],"names":[],"mappings":";;;AAoBO,MAAM,0BAA0B,6BAAA,CAA8B;AAAA,EAC5D,OAAA,GAAU,IAAA;AAAA,EACV,UAAA,GAAa,KAAA;AAAA,EACb,cAAc,eAAA,CAAgB,IAAA;AAAA,EAC9B,eAAA,GAAkB,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnB,OAAA,GAAgB;AACtB,IAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AACf,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,YAAA,GAAqB;AAC3B,IAAA,IAAA,CAAK,cAAc,eAAA,CAAgB,SAAA;AACnC,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,cAAc,UAAA,EAAmC;AACvD,IAAA,IAAA,CAAK,WAAA,GAAc,UAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,iBAAA,GAA0B;AAChC,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,KAAA,GAAQ;AACd,IAAA,OAAO;AAAA,MACN,IAAA,EAAM,IAAA;AAAA,MACN,QAAA,EAAU;AAAA,QACT,QAAQ,IAAA,CAAK,OAAA;AAAA,QACb,WAAW,IAAA,CAAK,UAAA;AAAA,QAChB,YAAY,IAAA,CAAK,WAAA;AAAA,QACjB,gBAAgB,IAAA,CAAK;AAAA;AACtB,KACD;AAAA,EACD;AACD;AAUA,MAAO,UAAA,CAAkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BxC,MAAM,KAAA,CACL,WAAA,EACA,OAAA,EACC;AACD,IAAA,IAAI,YAAY,OAAA,EAAS;AACxB,MAAA,MAAM,WAAA,CAAY,UAAU,OAAsC,CAAA;AAClE,MAAA;AAAA,IACD;AAEA,IAAA,MAAM,UAAA,GAAa,EAAE,GAAG,OAAA,EAAQ;AAChC,IAAA,IAAI,KAAK,QAAA,CAAS,cAAA,EAAgB,UAAA,CAAW,KAAA,GAAQ,CAAC,WAAW,CAAA;AAEjE,IAAA,MAAM,WAAA,CAAY,MAAM,UAAU,CAAA;AAAA,EACnC;AACD","file":"subcommand.base.js","sourcesContent":["import {\n\tCacheType,\n\tChatInputCommandInteraction,\n\tInteractionEditReplyOptions,\n\tInteractionReplyOptions,\n\tMessagePayload,\n\tSlashCommandSubcommandBuilder,\n} from \"discord.js\";\nimport { PermissionLevel, SubcommandMetadata } from \"src/shared/typings/index.js\";\nimport { TriviousClient } from \"src/index.js\";\n\n\n/**\n * Base SubcommandBuilder.\n *\n * @export\n * @class SubcommandBuilder\n * @typedef {SubcommandBuilder}\n * @extends {SlashCommandSubcommandBuilder}\n */\nexport class SubcommandBuilder extends SlashCommandSubcommandBuilder {\n\tprivate _active = true;\n\tprivate _ownerOnly = false;\n\tprivate _permission = PermissionLevel.USER;\n\tprivate _ephemeralReply = false;\n\n\t/**\n\t * Set the subcommand as disabled.\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic disable(): this {\n\t\tthis._active = false;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the subcommand as owner only.\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic setOwnerOnly(): this {\n\t\tthis._permission = PermissionLevel.BOT_OWNER;\n\t\tthis._ownerOnly = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the permission level required to run the subcommand.\n\t *\n\t * @public\n\t * @param {PermissionLevel} permission\n\t * @returns {this}\n\t */\n\tpublic setPermission(permission: PermissionLevel): this {\n\t\tthis._permission = permission;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the interaction as ephemeral\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic setEphemeralReply(): this {\n\t\tthis._ephemeralReply = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Build the builder.\n\t *\n\t * @public\n\t * @returns {{ data: SlashCommandSubcommandBuilder; metadata: SubcommandMetadata; }}\n\t */\n\tpublic build() {\n\t\treturn {\n\t\t\tdata: this as SlashCommandSubcommandBuilder,\n\t\t\tmetadata: {\n\t\t\t\tactive: this._active,\n\t\t\t\townerOnly: this._ownerOnly,\n\t\t\t\tpermission: this._permission,\n\t\t\t\tephemeralReply: this._ephemeralReply,\n\t\t\t} satisfies SubcommandMetadata,\n\t\t};\n\t}\n}\n\n/**\n * Base Subcommand\n *\n * @export\n * @abstract\n * @class Subcommand\n * @typedef {Subcommand}\n */\nexport default abstract class Subcommand {\n\tabstract data: SlashCommandSubcommandBuilder;\n\tabstract metadata: SubcommandMetadata;\n\t/**\n\t * Function to execute the subcommand.\n\t *\n\t * @abstract\n\t * @readonly\n\t * @type {(\n\t * \t\tclient: TriviousClient,\n\t * \t\tinteraction: ChatInputCommandInteraction<CacheType>\n\t * \t) => Promise<void>}\n\t */\n\tabstract readonly execute: (\n\t\tclient: TriviousClient,\n\t\tinteraction: ChatInputCommandInteraction<CacheType>\n\t) => Promise<void>;\n\n\t/**\n\t * Reply to the interaction respecting command metadata and if the interaction has already been replied to.\n\t *\n\t * @async\n\t * @param {ChatInputCommandInteraction<CacheType>} interaction\n\t * @param {(MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions)} options\n\t * @returns {*}\n\t */\n\tasync reply(\n\t\tinteraction: ChatInputCommandInteraction<CacheType>,\n\t\toptions: MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions\n\t) {\n\t\tif (interaction.replied) {\n\t\t\tawait interaction.editReply(options as InteractionEditReplyOptions);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newOptions = { ...options } as InteractionReplyOptions;\n\t\tif (this.metadata.ephemeralReply) newOptions.flags = [\"Ephemeral\"];\n\n\t\tawait interaction.reply(newOptions);\n\t}\n}\n"]}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var index_js = require('../../shared/typings/index.js');
|
|
6
|
-
var functions_js = require('../../shared/utility/functions.js');
|
|
7
|
-
|
|
8
|
-
class ComponentBuilder {
|
|
9
|
-
_customId = "";
|
|
10
|
-
_permission = index_js.PermissionLevel.USER;
|
|
11
|
-
_ephemeralReply = false;
|
|
12
|
-
/**
|
|
13
|
-
* Set the customId for the component.
|
|
14
|
-
*
|
|
15
|
-
* @public
|
|
16
|
-
* @param {{
|
|
17
|
-
* type: ComponentType;
|
|
18
|
-
* data: string;
|
|
19
|
-
* tags?: ComponentCustomIdTag[];
|
|
20
|
-
* }} options
|
|
21
|
-
* @returns {this}
|
|
22
|
-
*/
|
|
23
|
-
setCustomId(options) {
|
|
24
|
-
const { data, type, tags } = options;
|
|
25
|
-
this._customId = `${type}:${data}${tags ? `.${tags.join(".")}` : ""}`;
|
|
26
|
-
return this;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Set the permission required to use the component.
|
|
30
|
-
*
|
|
31
|
-
* @public
|
|
32
|
-
* @param {PermissionLevel} permission
|
|
33
|
-
* @returns {this}
|
|
34
|
-
*/
|
|
35
|
-
setPermission(permission) {
|
|
36
|
-
this._permission = permission;
|
|
37
|
-
return this;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Set the interaction as ephemeral.
|
|
41
|
-
*
|
|
42
|
-
* @public
|
|
43
|
-
* @returns {this}
|
|
44
|
-
*/
|
|
45
|
-
setEphemeralReply() {
|
|
46
|
-
this._ephemeralReply = true;
|
|
47
|
-
return this;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Builder the builder.
|
|
51
|
-
*
|
|
52
|
-
* @public
|
|
53
|
-
* @returns {{ metadata: ComponentMetadata; }}
|
|
54
|
-
*/
|
|
55
|
-
build() {
|
|
56
|
-
return {
|
|
57
|
-
metadata: {
|
|
58
|
-
customId: this._customId,
|
|
59
|
-
permission: this._permission,
|
|
60
|
-
ephemeralReply: this._ephemeralReply
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
class Component {
|
|
66
|
-
/**
|
|
67
|
-
* Validate permissions for a user/member in a guild.
|
|
68
|
-
*
|
|
69
|
-
* @async
|
|
70
|
-
* @param {ComponentInteraction} interaction
|
|
71
|
-
* @param {PermissionLevel} permission
|
|
72
|
-
* @param {boolean} [doReply=true] Defaults to `true`
|
|
73
|
-
* @returns {unknown}
|
|
74
|
-
*/
|
|
75
|
-
async validateGuildPermission(client, interaction, permission, doReply = true) {
|
|
76
|
-
if (interaction.guild) {
|
|
77
|
-
const member = interaction.member;
|
|
78
|
-
const memberHasPermission = functions_js.hasPermission(client, { permission, member });
|
|
79
|
-
if (!memberHasPermission) {
|
|
80
|
-
if (doReply)
|
|
81
|
-
await this.reply(interaction, {
|
|
82
|
-
content: `You do not have permission to run this command, required permission: \`${index_js.PermissionLevel[permission]}\``
|
|
83
|
-
});
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Reply to the interaction respecting command metadata and if the interaction has already been replied to.
|
|
91
|
-
*
|
|
92
|
-
* @async
|
|
93
|
-
* @param {ComponentInteraction} interaction
|
|
94
|
-
* @param {(MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions)} options
|
|
95
|
-
* @returns {*}
|
|
96
|
-
*/
|
|
97
|
-
async reply(interaction, options) {
|
|
98
|
-
if (interaction.replied) {
|
|
99
|
-
await interaction.editReply(options);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const newOptions = { ...options };
|
|
103
|
-
if (this.metadata.ephemeralReply) newOptions.flags = ["Ephemeral"];
|
|
104
|
-
await interaction.reply(newOptions);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
exports.ComponentBuilder = ComponentBuilder;
|
|
109
|
-
exports.default = Component;
|
|
110
|
-
//# sourceMappingURL=component.base.cjs.map
|
|
111
|
-
//# sourceMappingURL=component.base.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/components/component.base.ts"],"names":["PermissionLevel","hasPermission"],"mappings":";;;;;;;AAuBO,MAAM,gBAAA,CAAiB;AAAA,EACrB,SAAA,GAAY,EAAA;AAAA,EACZ,cAAcA,wBAAA,CAAgB,IAAA;AAAA,EAC9B,eAAA,GAAkB,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAanB,YAAY,OAAA,EAIV;AACR,IAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAK,GAAI,OAAA;AAC7B,IAAA,IAAA,CAAK,SAAA,GAAY,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,EAAG,IAAA,GAAO,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,KAAK,EAAE,CAAA,CAAA;AACnE,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,cAAc,UAAA,EAAmC;AACvD,IAAA,IAAA,CAAK,WAAA,GAAc,UAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,iBAAA,GAA0B;AAChC,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,KAAA,GAAQ;AACd,IAAA,OAAO;AAAA,MACN,QAAA,EAAU;AAAA,QACT,UAAU,IAAA,CAAK,SAAA;AAAA,QACf,YAAY,IAAA,CAAK,WAAA;AAAA,QACjB,gBAAgB,IAAA,CAAK;AAAA;AACtB,KACD;AAAA,EACD;AACD;AAUA,MAAO,SAAA,CAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBvC,MAAM,uBAAA,CACL,MAAA,EACA,WAAA,EACA,UAAA,EACA,UAAmB,IAAA,EAClB;AACD,IAAA,IAAI,YAAY,KAAA,EAAO;AACtB,MAAA,MAAM,SAAS,WAAA,CAAY,MAAA;AAC3B,MAAA,MAAM,sBAAsBC,0BAAA,CAAc,MAAA,EAAQ,EAAE,UAAA,EAAY,QAAQ,CAAA;AAExE,MAAA,IAAI,CAAC,mBAAA,EAAqB;AACzB,QAAA,IAAI,OAAA;AACH,UAAA,MAAM,IAAA,CAAK,MAAM,WAAA,EAAa;AAAA,YAC7B,OAAA,EAAS,CAAA,uEAAA,EAA0ED,wBAAA,CAAgB,UAAU,CAAC,CAAA,EAAA;AAAA,WAC9G,CAAA;AACF,QAAA,OAAO,KAAA;AAAA,MACR;AAAA,IACD;AAEA,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,KAAA,CACL,WAAA,EACA,OAAA,EACC;AACD,IAAA,IAAI,YAAY,OAAA,EAAS;AACxB,MAAA,MAAM,WAAA,CAAY,UAAU,OAAsC,CAAA;AAClE,MAAA;AAAA,IACD;AAEA,IAAA,MAAM,UAAA,GAAa,EAAE,GAAG,OAAA,EAAQ;AAChC,IAAA,IAAI,KAAK,QAAA,CAAS,cAAA,EAAgB,UAAA,CAAW,KAAA,GAAQ,CAAC,WAAW,CAAA;AAEjE,IAAA,MAAM,WAAA,CAAY,MAAM,UAAU,CAAA;AAAA,EACnC;AACD","file":"component.base.cjs","sourcesContent":["import {\n\tComponentType,\n\tGuildMember,\n\tInteractionEditReplyOptions,\n\tInteractionReplyOptions,\n\tMessagePayload,\n} from \"discord.js\";\nimport {\n\tComponentCustomIdTag,\n\tComponentInteraction,\n\tComponentMetadata,\n\tPermissionLevel,\n} from \"src/shared/typings/index.js\";\nimport { hasPermission } from \"src/shared/utility/functions.js\";\nimport TriviousClient from \"../client/trivious.client.js\";\n\n/**\n * Base ComponentBuilder.\n *\n * @export\n * @class ComponentBuilder\n * @typedef {ComponentBuilder}\n */\nexport class ComponentBuilder {\n\tprivate _customId = \"\";\n\tprivate _permission = PermissionLevel.USER;\n\tprivate _ephemeralReply = false;\n\n\t/**\n\t * Set the customId for the component.\n\t *\n\t * @public\n\t * @param {{\n\t * \t\ttype: ComponentType;\n\t * \t\tdata: string;\n\t * \t\ttags?: ComponentCustomIdTag[];\n\t * \t}} options\n\t * @returns {this}\n\t */\n\tpublic setCustomId(options: {\n\t\ttype: ComponentType;\n\t\tdata: string;\n\t\ttags?: ComponentCustomIdTag[];\n\t}): this {\n\t\tconst { data, type, tags } = options;\n\t\tthis._customId = `${type}:${data}${tags ? `.${tags.join(\".\")}` : \"\"}`;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the permission required to use the component.\n\t *\n\t * @public\n\t * @param {PermissionLevel} permission\n\t * @returns {this}\n\t */\n\tpublic setPermission(permission: PermissionLevel): this {\n\t\tthis._permission = permission;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the interaction as ephemeral.\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic setEphemeralReply(): this {\n\t\tthis._ephemeralReply = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Builder the builder.\n\t *\n\t * @public\n\t * @returns {{ metadata: ComponentMetadata; }}\n\t */\n\tpublic build() {\n\t\treturn {\n\t\t\tmetadata: {\n\t\t\t\tcustomId: this._customId,\n\t\t\t\tpermission: this._permission,\n\t\t\t\tephemeralReply: this._ephemeralReply,\n\t\t\t} satisfies ComponentMetadata,\n\t\t};\n\t}\n}\n\n/**\n * Base Component.\n *\n * @export\n * @abstract\n * @class Component\n * @typedef {Component}\n */\nexport default abstract class Component {\n\tabstract metadata: ComponentMetadata;\n\t/**\n\t * Execute the component.\n\t *\n\t * @abstract\n\t * @type {(client: TriviousClient, interaction: ComponentInteraction) => Promise<void>}\n\t */\n\tabstract execute: (client: TriviousClient, interaction: ComponentInteraction) => Promise<void>;\n\n\t/**\n\t * Validate permissions for a user/member in a guild.\n\t *\n\t * @async\n\t * @param {ComponentInteraction} interaction\n\t * @param {PermissionLevel} permission\n\t * @param {boolean} [doReply=true] Defaults to `true`\n\t * @returns {unknown}\n\t */\n\tasync validateGuildPermission(\n\t\tclient: TriviousClient,\n\t\tinteraction: ComponentInteraction,\n\t\tpermission: PermissionLevel,\n\t\tdoReply: boolean = true\n\t) {\n\t\tif (interaction.guild) {\n\t\t\tconst member = interaction.member as GuildMember;\n\t\t\tconst memberHasPermission = hasPermission(client, { permission, member });\n\n\t\t\tif (!memberHasPermission) {\n\t\t\t\tif (doReply)\n\t\t\t\t\tawait this.reply(interaction, {\n\t\t\t\t\t\tcontent: `You do not have permission to run this command, required permission: \\`${PermissionLevel[permission]}\\``,\n\t\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Reply to the interaction respecting command metadata and if the interaction has already been replied to.\n\t *\n\t * @async\n\t * @param {ComponentInteraction} interaction\n\t * @param {(MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions)} options\n\t * @returns {*}\n\t */\n\tasync reply(\n\t\tinteraction: ComponentInteraction,\n\t\toptions: MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions\n\t) {\n\t\tif (interaction.replied) {\n\t\t\tawait interaction.editReply(options as InteractionEditReplyOptions);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newOptions = { ...options } as InteractionReplyOptions;\n\t\tif (this.metadata.ephemeralReply) newOptions.flags = [\"Ephemeral\"];\n\n\t\tawait interaction.reply(newOptions);\n\t}\n}\n"]}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { PermissionLevel } from '../../shared/typings/index.js';
|
|
2
|
-
import { hasPermission } from '../../shared/utility/functions.js';
|
|
3
|
-
|
|
4
|
-
class ComponentBuilder {
|
|
5
|
-
_customId = "";
|
|
6
|
-
_permission = PermissionLevel.USER;
|
|
7
|
-
_ephemeralReply = false;
|
|
8
|
-
/**
|
|
9
|
-
* Set the customId for the component.
|
|
10
|
-
*
|
|
11
|
-
* @public
|
|
12
|
-
* @param {{
|
|
13
|
-
* type: ComponentType;
|
|
14
|
-
* data: string;
|
|
15
|
-
* tags?: ComponentCustomIdTag[];
|
|
16
|
-
* }} options
|
|
17
|
-
* @returns {this}
|
|
18
|
-
*/
|
|
19
|
-
setCustomId(options) {
|
|
20
|
-
const { data, type, tags } = options;
|
|
21
|
-
this._customId = `${type}:${data}${tags ? `.${tags.join(".")}` : ""}`;
|
|
22
|
-
return this;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Set the permission required to use the component.
|
|
26
|
-
*
|
|
27
|
-
* @public
|
|
28
|
-
* @param {PermissionLevel} permission
|
|
29
|
-
* @returns {this}
|
|
30
|
-
*/
|
|
31
|
-
setPermission(permission) {
|
|
32
|
-
this._permission = permission;
|
|
33
|
-
return this;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Set the interaction as ephemeral.
|
|
37
|
-
*
|
|
38
|
-
* @public
|
|
39
|
-
* @returns {this}
|
|
40
|
-
*/
|
|
41
|
-
setEphemeralReply() {
|
|
42
|
-
this._ephemeralReply = true;
|
|
43
|
-
return this;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Builder the builder.
|
|
47
|
-
*
|
|
48
|
-
* @public
|
|
49
|
-
* @returns {{ metadata: ComponentMetadata; }}
|
|
50
|
-
*/
|
|
51
|
-
build() {
|
|
52
|
-
return {
|
|
53
|
-
metadata: {
|
|
54
|
-
customId: this._customId,
|
|
55
|
-
permission: this._permission,
|
|
56
|
-
ephemeralReply: this._ephemeralReply
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
class Component {
|
|
62
|
-
/**
|
|
63
|
-
* Validate permissions for a user/member in a guild.
|
|
64
|
-
*
|
|
65
|
-
* @async
|
|
66
|
-
* @param {ComponentInteraction} interaction
|
|
67
|
-
* @param {PermissionLevel} permission
|
|
68
|
-
* @param {boolean} [doReply=true] Defaults to `true`
|
|
69
|
-
* @returns {unknown}
|
|
70
|
-
*/
|
|
71
|
-
async validateGuildPermission(client, interaction, permission, doReply = true) {
|
|
72
|
-
if (interaction.guild) {
|
|
73
|
-
const member = interaction.member;
|
|
74
|
-
const memberHasPermission = hasPermission(client, { permission, member });
|
|
75
|
-
if (!memberHasPermission) {
|
|
76
|
-
if (doReply)
|
|
77
|
-
await this.reply(interaction, {
|
|
78
|
-
content: `You do not have permission to run this command, required permission: \`${PermissionLevel[permission]}\``
|
|
79
|
-
});
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Reply to the interaction respecting command metadata and if the interaction has already been replied to.
|
|
87
|
-
*
|
|
88
|
-
* @async
|
|
89
|
-
* @param {ComponentInteraction} interaction
|
|
90
|
-
* @param {(MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions)} options
|
|
91
|
-
* @returns {*}
|
|
92
|
-
*/
|
|
93
|
-
async reply(interaction, options) {
|
|
94
|
-
if (interaction.replied) {
|
|
95
|
-
await interaction.editReply(options);
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const newOptions = { ...options };
|
|
99
|
-
if (this.metadata.ephemeralReply) newOptions.flags = ["Ephemeral"];
|
|
100
|
-
await interaction.reply(newOptions);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export { ComponentBuilder, Component as default };
|
|
105
|
-
//# sourceMappingURL=component.base.js.map
|
|
106
|
-
//# sourceMappingURL=component.base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/components/component.base.ts"],"names":[],"mappings":";;;AAuBO,MAAM,gBAAA,CAAiB;AAAA,EACrB,SAAA,GAAY,EAAA;AAAA,EACZ,cAAc,eAAA,CAAgB,IAAA;AAAA,EAC9B,eAAA,GAAkB,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAanB,YAAY,OAAA,EAIV;AACR,IAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAK,GAAI,OAAA;AAC7B,IAAA,IAAA,CAAK,SAAA,GAAY,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,EAAG,IAAA,GAAO,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,KAAK,EAAE,CAAA,CAAA;AACnE,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,cAAc,UAAA,EAAmC;AACvD,IAAA,IAAA,CAAK,WAAA,GAAc,UAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,iBAAA,GAA0B;AAChC,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,KAAA,GAAQ;AACd,IAAA,OAAO;AAAA,MACN,QAAA,EAAU;AAAA,QACT,UAAU,IAAA,CAAK,SAAA;AAAA,QACf,YAAY,IAAA,CAAK,WAAA;AAAA,QACjB,gBAAgB,IAAA,CAAK;AAAA;AACtB,KACD;AAAA,EACD;AACD;AAUA,MAAO,SAAA,CAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBvC,MAAM,uBAAA,CACL,MAAA,EACA,WAAA,EACA,UAAA,EACA,UAAmB,IAAA,EAClB;AACD,IAAA,IAAI,YAAY,KAAA,EAAO;AACtB,MAAA,MAAM,SAAS,WAAA,CAAY,MAAA;AAC3B,MAAA,MAAM,sBAAsB,aAAA,CAAc,MAAA,EAAQ,EAAE,UAAA,EAAY,QAAQ,CAAA;AAExE,MAAA,IAAI,CAAC,mBAAA,EAAqB;AACzB,QAAA,IAAI,OAAA;AACH,UAAA,MAAM,IAAA,CAAK,MAAM,WAAA,EAAa;AAAA,YAC7B,OAAA,EAAS,CAAA,uEAAA,EAA0E,eAAA,CAAgB,UAAU,CAAC,CAAA,EAAA;AAAA,WAC9G,CAAA;AACF,QAAA,OAAO,KAAA;AAAA,MACR;AAAA,IACD;AAEA,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,KAAA,CACL,WAAA,EACA,OAAA,EACC;AACD,IAAA,IAAI,YAAY,OAAA,EAAS;AACxB,MAAA,MAAM,WAAA,CAAY,UAAU,OAAsC,CAAA;AAClE,MAAA;AAAA,IACD;AAEA,IAAA,MAAM,UAAA,GAAa,EAAE,GAAG,OAAA,EAAQ;AAChC,IAAA,IAAI,KAAK,QAAA,CAAS,cAAA,EAAgB,UAAA,CAAW,KAAA,GAAQ,CAAC,WAAW,CAAA;AAEjE,IAAA,MAAM,WAAA,CAAY,MAAM,UAAU,CAAA;AAAA,EACnC;AACD","file":"component.base.js","sourcesContent":["import {\n\tComponentType,\n\tGuildMember,\n\tInteractionEditReplyOptions,\n\tInteractionReplyOptions,\n\tMessagePayload,\n} from \"discord.js\";\nimport {\n\tComponentCustomIdTag,\n\tComponentInteraction,\n\tComponentMetadata,\n\tPermissionLevel,\n} from \"src/shared/typings/index.js\";\nimport { hasPermission } from \"src/shared/utility/functions.js\";\nimport TriviousClient from \"../client/trivious.client.js\";\n\n/**\n * Base ComponentBuilder.\n *\n * @export\n * @class ComponentBuilder\n * @typedef {ComponentBuilder}\n */\nexport class ComponentBuilder {\n\tprivate _customId = \"\";\n\tprivate _permission = PermissionLevel.USER;\n\tprivate _ephemeralReply = false;\n\n\t/**\n\t * Set the customId for the component.\n\t *\n\t * @public\n\t * @param {{\n\t * \t\ttype: ComponentType;\n\t * \t\tdata: string;\n\t * \t\ttags?: ComponentCustomIdTag[];\n\t * \t}} options\n\t * @returns {this}\n\t */\n\tpublic setCustomId(options: {\n\t\ttype: ComponentType;\n\t\tdata: string;\n\t\ttags?: ComponentCustomIdTag[];\n\t}): this {\n\t\tconst { data, type, tags } = options;\n\t\tthis._customId = `${type}:${data}${tags ? `.${tags.join(\".\")}` : \"\"}`;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the permission required to use the component.\n\t *\n\t * @public\n\t * @param {PermissionLevel} permission\n\t * @returns {this}\n\t */\n\tpublic setPermission(permission: PermissionLevel): this {\n\t\tthis._permission = permission;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the interaction as ephemeral.\n\t *\n\t * @public\n\t * @returns {this}\n\t */\n\tpublic setEphemeralReply(): this {\n\t\tthis._ephemeralReply = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Builder the builder.\n\t *\n\t * @public\n\t * @returns {{ metadata: ComponentMetadata; }}\n\t */\n\tpublic build() {\n\t\treturn {\n\t\t\tmetadata: {\n\t\t\t\tcustomId: this._customId,\n\t\t\t\tpermission: this._permission,\n\t\t\t\tephemeralReply: this._ephemeralReply,\n\t\t\t} satisfies ComponentMetadata,\n\t\t};\n\t}\n}\n\n/**\n * Base Component.\n *\n * @export\n * @abstract\n * @class Component\n * @typedef {Component}\n */\nexport default abstract class Component {\n\tabstract metadata: ComponentMetadata;\n\t/**\n\t * Execute the component.\n\t *\n\t * @abstract\n\t * @type {(client: TriviousClient, interaction: ComponentInteraction) => Promise<void>}\n\t */\n\tabstract execute: (client: TriviousClient, interaction: ComponentInteraction) => Promise<void>;\n\n\t/**\n\t * Validate permissions for a user/member in a guild.\n\t *\n\t * @async\n\t * @param {ComponentInteraction} interaction\n\t * @param {PermissionLevel} permission\n\t * @param {boolean} [doReply=true] Defaults to `true`\n\t * @returns {unknown}\n\t */\n\tasync validateGuildPermission(\n\t\tclient: TriviousClient,\n\t\tinteraction: ComponentInteraction,\n\t\tpermission: PermissionLevel,\n\t\tdoReply: boolean = true\n\t) {\n\t\tif (interaction.guild) {\n\t\t\tconst member = interaction.member as GuildMember;\n\t\t\tconst memberHasPermission = hasPermission(client, { permission, member });\n\n\t\t\tif (!memberHasPermission) {\n\t\t\t\tif (doReply)\n\t\t\t\t\tawait this.reply(interaction, {\n\t\t\t\t\t\tcontent: `You do not have permission to run this command, required permission: \\`${PermissionLevel[permission]}\\``,\n\t\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Reply to the interaction respecting command metadata and if the interaction has already been replied to.\n\t *\n\t * @async\n\t * @param {ComponentInteraction} interaction\n\t * @param {(MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions)} options\n\t * @returns {*}\n\t */\n\tasync reply(\n\t\tinteraction: ComponentInteraction,\n\t\toptions: MessagePayload | InteractionEditReplyOptions | InteractionReplyOptions\n\t) {\n\t\tif (interaction.replied) {\n\t\t\tawait interaction.editReply(options as InteractionEditReplyOptions);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newOptions = { ...options } as InteractionReplyOptions;\n\t\tif (this.metadata.ephemeralReply) newOptions.flags = [\"Ephemeral\"];\n\n\t\tawait interaction.reply(newOptions);\n\t}\n}\n"]}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var discord_js = require('discord.js');
|
|
4
|
-
var index_js = require('../../shared/typings/index.js');
|
|
5
|
-
|
|
6
|
-
var interactionCreate_default = {
|
|
7
|
-
name: "interactionCreate",
|
|
8
|
-
execute: async (client, interaction) => {
|
|
9
|
-
if (interaction.isChatInputCommand() || interaction.isContextMenuCommand()) {
|
|
10
|
-
const { commandName } = interaction;
|
|
11
|
-
const registeredCommands = client.registries.commands.get();
|
|
12
|
-
const command = registeredCommands.get(commandName);
|
|
13
|
-
if (!command) {
|
|
14
|
-
await interaction.reply({
|
|
15
|
-
content: `Command is outdated, inactive or does not have a handler!`,
|
|
16
|
-
flags: ["Ephemeral"]
|
|
17
|
-
});
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const requiredPermission = command.metadata.permission;
|
|
21
|
-
const hasPermission = await command.validateGuildPermission(
|
|
22
|
-
client,
|
|
23
|
-
interaction,
|
|
24
|
-
requiredPermission
|
|
25
|
-
);
|
|
26
|
-
if (!hasPermission) return;
|
|
27
|
-
if (!("execute" in command)) {
|
|
28
|
-
await command.reply(interaction, { content: "Command does not have a way to execute! Ensure the command is a SlashCommand or ContextMenuCommand!" });
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
await command.reply(interaction, { content: "Processing command..." });
|
|
32
|
-
if (interaction.isChatInputCommand() && command.isSlashCommand()) {
|
|
33
|
-
await command.execute(client, interaction);
|
|
34
|
-
} else if (interaction.isContextMenuCommand() && command.isContextMenuCommand()) {
|
|
35
|
-
await command.execute(client, interaction);
|
|
36
|
-
}
|
|
37
|
-
} else if (interaction.isMessageComponent() || interaction.isModalSubmit()) {
|
|
38
|
-
const { componentType, tags, data } = index_js.deconstructCustomId(interaction.customId);
|
|
39
|
-
if (componentType === index_js.ComponentType.Button && !(interaction instanceof discord_js.ButtonInteraction))
|
|
40
|
-
return;
|
|
41
|
-
if (componentType === index_js.ComponentType.Modal && !(interaction instanceof discord_js.ModalSubmitInteraction))
|
|
42
|
-
return;
|
|
43
|
-
if (tags.includes("awaited")) return;
|
|
44
|
-
const registeredComponents = client.registries.components.get();
|
|
45
|
-
const component = registeredComponents.get(data);
|
|
46
|
-
if (!component) {
|
|
47
|
-
await interaction.reply({
|
|
48
|
-
content: `Command is outdated, inactive or does not have a handler!`,
|
|
49
|
-
flags: ["Ephemeral"]
|
|
50
|
-
});
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const requiredPermission = component.metadata.permission;
|
|
54
|
-
const hasPermission = await component.validateGuildPermission(
|
|
55
|
-
client,
|
|
56
|
-
interaction,
|
|
57
|
-
requiredPermission
|
|
58
|
-
);
|
|
59
|
-
if (!hasPermission) return;
|
|
60
|
-
if (!interaction.isModalSubmit()) await interaction.deferUpdate();
|
|
61
|
-
await component.execute(client, interaction);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
module.exports = interactionCreate_default;
|
|
67
|
-
//# sourceMappingURL=interactionCreate.cjs.map
|
|
68
|
-
//# sourceMappingURL=interactionCreate.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/events/interactionCreate.ts"],"names":["deconstructCustomId","ComponentType","ButtonInteraction","ModalSubmitInteraction"],"mappings":";;;;;AAIA,IAAO,yBAAA,GAAQ;AAAA,EACd,IAAA,EAAM,mBAAA;AAAA,EACN,OAAA,EAAS,OAAO,MAAA,EAAQ,WAAA,KAAgB;AACvC,IAAA,IAAI,WAAA,CAAY,kBAAA,EAAmB,IAAK,WAAA,CAAY,sBAAqB,EAAG;AAC3E,MAAA,MAAM,EAAE,aAAY,GAAI,WAAA;AAExB,MAAA,MAAM,kBAAA,GAAqB,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,GAAA,EAAI;AAC1D,MAAA,MAAM,OAAA,GAAU,kBAAA,CAAmB,GAAA,CAAI,WAAW,CAAA;AAClD,MAAA,IAAI,CAAC,OAAA,EAAS;AACb,QAAA,MAAM,YAAY,KAAA,CAAM;AAAA,UACvB,OAAA,EAAS,CAAA,yDAAA,CAAA;AAAA,UACT,KAAA,EAAO,CAAC,WAAW;AAAA,SACnB,CAAA;AACD,QAAA;AAAA,MACD;AAEA,MAAA,MAAM,kBAAA,GAAqB,QAAQ,QAAA,CAAS,UAAA;AAC5C,MAAA,MAAM,aAAA,GAAgB,MAAM,OAAA,CAAQ,uBAAA;AAAA,QACnC,MAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACD;AACA,MAAA,IAAI,CAAC,aAAA,EAAe;AAEpB,MAAA,IAAI,EAAE,aAAa,OAAA,CAAA,EAAU;AAC5B,QAAA,MAAO,QAAoB,KAAA,CAAM,WAAA,EAAa,EAAE,OAAA,EAAS,uGAAuG,CAAA;AAChK,QAAA;AAAA,MACD;AAEA,MAAA,MAAM,QAAQ,KAAA,CAAM,WAAA,EAAa,EAAE,OAAA,EAAS,yBAAyB,CAAA;AAErE,MAAA,IAAI,WAAA,CAAY,kBAAA,EAAmB,IAAK,OAAA,CAAQ,gBAAe,EAAG;AACjE,QAAA,MAAM,OAAA,CAAQ,OAAA,CAAQ,MAAA,EAAQ,WAAW,CAAA;AAAA,MAC1C,WAAW,WAAA,CAAY,oBAAA,EAAqB,IAAK,OAAA,CAAQ,sBAAqB,EAAG;AAChF,QAAA,MAAM,OAAA,CAAQ,OAAA,CAAQ,MAAA,EAAQ,WAAW,CAAA;AAAA,MAC1C;AAAA,IACD,WAAW,WAAA,CAAY,kBAAA,EAAmB,IAAK,WAAA,CAAY,eAAc,EAAG;AAC3E,MAAA,MAAM,EAAE,aAAA,EAAe,IAAA,EAAM,MAAK,GAAIA,4BAAA,CAAoB,YAAY,QAAQ,CAAA;AAE9E,MAAA,IAAI,aAAA,KAAkBC,sBAAA,CAAc,MAAA,IAAU,EAAE,WAAA,YAAuBC,4BAAA,CAAA;AACtE,QAAA;AACD,MAAA,IAAI,aAAA,KAAkBD,sBAAA,CAAc,KAAA,IAAS,EAAE,WAAA,YAAuBE,iCAAA,CAAA;AACrE,QAAA;AAED,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,EAAG;AAE9B,MAAA,MAAM,oBAAA,GAAuB,MAAA,CAAO,UAAA,CAAW,UAAA,CAAW,GAAA,EAAI;AAC9D,MAAA,MAAM,SAAA,GAAY,oBAAA,CAAqB,GAAA,CAAI,IAAI,CAAA;AAC/C,MAAA,IAAI,CAAC,SAAA,EAAW;AACf,QAAA,MAAM,YAAY,KAAA,CAAM;AAAA,UACvB,OAAA,EAAS,CAAA,yDAAA,CAAA;AAAA,UACT,KAAA,EAAO,CAAC,WAAW;AAAA,SACnB,CAAA;AACD,QAAA;AAAA,MACD;AAEA,MAAA,MAAM,kBAAA,GAAqB,UAAU,QAAA,CAAS,UAAA;AAC9C,MAAA,MAAM,aAAA,GAAgB,MAAM,SAAA,CAAU,uBAAA;AAAA,QACrC,MAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACD;AACA,MAAA,IAAI,CAAC,aAAA,EAAe;AAEpB,MAAA,IAAI,CAAC,WAAA,CAAY,aAAA,EAAc,EAAG,MAAM,YAAY,WAAA,EAAY;AAChE,MAAA,MAAM,SAAA,CAAU,OAAA,CAAQ,MAAA,EAAQ,WAAW,CAAA;AAAA,IAC5C;AAAA,EACD;AACD","file":"interactionCreate.cjs","sourcesContent":["import { ButtonInteraction, ModalSubmitInteraction } from \"discord.js\";\nimport { ComponentType, deconstructCustomId, Event } from \"src/shared/typings/index.js\";\nimport Command from \"../commands/command.base.js\";\n\nexport default {\n\tname: \"interactionCreate\",\n\texecute: async (client, interaction) => {\n\t\tif (interaction.isChatInputCommand() || interaction.isContextMenuCommand()) {\n\t\t\tconst { commandName } = interaction;\n\n\t\t\tconst registeredCommands = client.registries.commands.get();\n\t\t\tconst command = registeredCommands.get(commandName);\n\t\t\tif (!command) {\n\t\t\t\tawait interaction.reply({\n\t\t\t\t\tcontent: `Command is outdated, inactive or does not have a handler!`,\n\t\t\t\t\tflags: [\"Ephemeral\"],\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst requiredPermission = command.metadata.permission;\n\t\t\tconst hasPermission = await command.validateGuildPermission(\n\t\t\t\tclient,\n\t\t\t\tinteraction,\n\t\t\t\trequiredPermission\n\t\t\t);\n\t\t\tif (!hasPermission) return;\n\n\t\t\tif (!(\"execute\" in command)) {\n\t\t\t\tawait (command as Command).reply(interaction, { content: \"Command does not have a way to execute! Ensure the command is a SlashCommand or ContextMenuCommand!\" });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait command.reply(interaction, { content: \"Processing command...\" });\n\n\t\t\tif (interaction.isChatInputCommand() && command.isSlashCommand()) {\n\t\t\t\tawait command.execute(client, interaction);\n\t\t\t} else if (interaction.isContextMenuCommand() && command.isContextMenuCommand()) {\n\t\t\t\tawait command.execute(client, interaction);\n\t\t\t}\n\t\t} else if (interaction.isMessageComponent() || interaction.isModalSubmit()) {\n\t\t\tconst { componentType, tags, data } = deconstructCustomId(interaction.customId);\n\n\t\t\tif (componentType === ComponentType.Button && !(interaction instanceof ButtonInteraction))\n\t\t\t\treturn;\n\t\t\tif (componentType === ComponentType.Modal && !(interaction instanceof ModalSubmitInteraction))\n\t\t\t\treturn;\n\n\t\t\tif (tags.includes(\"awaited\")) return;\n\n\t\t\tconst registeredComponents = client.registries.components.get();\n\t\t\tconst component = registeredComponents.get(data);\n\t\t\tif (!component) {\n\t\t\t\tawait interaction.reply({\n\t\t\t\t\tcontent: `Command is outdated, inactive or does not have a handler!`,\n\t\t\t\t\tflags: [\"Ephemeral\"],\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst requiredPermission = component.metadata.permission;\n\t\t\tconst hasPermission = await component.validateGuildPermission(\n\t\t\t\tclient,\n\t\t\t\tinteraction,\n\t\t\t\trequiredPermission\n\t\t\t);\n\t\t\tif (!hasPermission) return;\n\n\t\t\tif (!interaction.isModalSubmit()) await interaction.deferUpdate();\n\t\t\tawait component.execute(client, interaction);\n\t\t}\n\t},\n} satisfies Event<\"interactionCreate\">;\n"]}
|