spacecommands 1.0.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.
- package/LICENSE +21 -0
- package/README.md +519 -0
- package/dist/Command.js +384 -0
- package/dist/CommandHandler.js +339 -0
- package/dist/FeatureHandler.js +89 -0
- package/dist/SlashCommands.js +220 -0
- package/dist/command-checks/channel-specific.js +30 -0
- package/dist/command-checks/guild-only-check.js +24 -0
- package/dist/command-checks/has-entitlement.js +52 -0
- package/dist/command-checks/has-permissions.js +39 -0
- package/dist/command-checks/has-roles.js +69 -0
- package/dist/command-checks/has-valid-arguments.js +54 -0
- package/dist/command-checks/in-cooldown.js +42 -0
- package/dist/command-checks/is-enabled.js +31 -0
- package/dist/command-checks/is-not-test-only.js +8 -0
- package/dist/command-checks/owner-only-check.js +22 -0
- package/dist/commands/channelonly.js +88 -0
- package/dist/commands/command.js +87 -0
- package/dist/commands/help/!ReactionListener.js +217 -0
- package/dist/commands/help/!get-first-embed.js +57 -0
- package/dist/commands/help/help.js +97 -0
- package/dist/commands/language.js +52 -0
- package/dist/commands/prefix.js +42 -0
- package/dist/commands/requiredrole.js +61 -0
- package/dist/commands/slash.js +102 -0
- package/dist/enums/CommandErrors.js +12 -0
- package/dist/enums/Events.js +9 -0
- package/dist/features/message-upsert.js +15 -0
- package/dist/get-all-files.js +25 -0
- package/dist/handlers/AutoModHandler.js +316 -0
- package/dist/handlers/ComponentHandler.js +110 -0
- package/dist/handlers/ContextMenuHandler.js +113 -0
- package/dist/handlers/EntitlementHandler.js +193 -0
- package/dist/handlers/ModalHandler.js +71 -0
- package/dist/handlers/PollHandler.js +230 -0
- package/dist/index.js +339 -0
- package/dist/message-handler.js +118 -0
- package/dist/models/channel-commands.js +49 -0
- package/dist/models/cooldown.js +51 -0
- package/dist/models/disabled-commands.js +45 -0
- package/dist/models/languages.js +46 -0
- package/dist/models/prefixes.js +46 -0
- package/dist/models/required-roles.js +49 -0
- package/dist/mongo.js +25 -0
- package/dist/permissions.js +39 -0
- package/dist/utils/ComponentBuilder.js +144 -0
- package/dist/utils/InteractionCollector.js +80 -0
- package/messages.json +391 -0
- package/package.json +72 -0
- package/typings.d.ts +276 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
module.exports = (guild, command, instance, member, user, reply) => {
|
|
3
|
+
const { guildOnly } = command;
|
|
4
|
+
// If this command doesn't care if it's in a guild or not then just simply return true
|
|
5
|
+
if (!guildOnly) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
if (!guild) {
|
|
9
|
+
reply(instance.messageHandler.get(guild, 'GUILD_ONLY_COMMAND')).then((message) => {
|
|
10
|
+
if (!message) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (instance.delErrMsgCooldown === -1 || !message.deletable) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
message.delete();
|
|
18
|
+
}, 1000 * instance.delErrMsgCooldown);
|
|
19
|
+
});
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
// The guild exists
|
|
23
|
+
return true;
|
|
24
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
module.exports = async (guild, command, instance, member, user, reply) => {
|
|
3
|
+
const { requiredEntitlements, premiumOnly } = command;
|
|
4
|
+
// If no entitlements are required, allow the command
|
|
5
|
+
if (!requiredEntitlements.length && !premiumOnly) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
const entitlementHandler = instance.entitlementHandler;
|
|
9
|
+
if (!entitlementHandler) {
|
|
10
|
+
console.warn('SpaceCommands > Command requires entitlements but EntitlementHandler is not initialized.');
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
// Check if user has required entitlements
|
|
14
|
+
if (requiredEntitlements.length > 0) {
|
|
15
|
+
const { hasEntitlement } = await entitlementHandler.hasAnyEntitlement(user.id, requiredEntitlements);
|
|
16
|
+
if (!hasEntitlement) {
|
|
17
|
+
reply(instance.messageHandler.get(guild, 'MISSING_ENTITLEMENT') ||
|
|
18
|
+
'You need a premium subscription to use this command.').then((message) => {
|
|
19
|
+
if (!message) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (instance.delErrMsgCooldown === -1 || !message.deletable) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
setTimeout(() => {
|
|
26
|
+
message.delete();
|
|
27
|
+
}, 1000 * instance.delErrMsgCooldown);
|
|
28
|
+
});
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// If premiumOnly is set, check for any active entitlement
|
|
33
|
+
if (premiumOnly) {
|
|
34
|
+
const allEntitlements = await entitlementHandler.getUserEntitlements(user.id);
|
|
35
|
+
if (allEntitlements.length === 0) {
|
|
36
|
+
reply(instance.messageHandler.get(guild, 'PREMIUM_ONLY') ||
|
|
37
|
+
'This command is only available to premium subscribers.').then((message) => {
|
|
38
|
+
if (!message) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (instance.delErrMsgCooldown === -1 || !message.deletable) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
setTimeout(() => {
|
|
45
|
+
message.delete();
|
|
46
|
+
}, 1000 * instance.delErrMsgCooldown);
|
|
47
|
+
});
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const CommandErrors_1 = __importDefault(require("../enums/CommandErrors"));
|
|
6
|
+
module.exports = (guild, command, instance, member, user, reply) => {
|
|
7
|
+
if (!guild || !member) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
const { requiredPermissions, error } = command;
|
|
11
|
+
for (const perm of requiredPermissions || []) {
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
if (!member.permissions.has(perm)) {
|
|
14
|
+
if (error) {
|
|
15
|
+
error({
|
|
16
|
+
error: CommandErrors_1.default.MISSING_PERMISSIONS,
|
|
17
|
+
command,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
reply(instance.messageHandler.get(guild, 'MISSING_PERMISSION', {
|
|
22
|
+
PERM: perm,
|
|
23
|
+
})).then((message) => {
|
|
24
|
+
if (!message) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (instance.delErrMsgCooldown === -1 || !message.deletable) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
setTimeout(() => {
|
|
31
|
+
message.delete();
|
|
32
|
+
}, 1000 * instance.delErrMsgCooldown);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const CommandErrors_1 = __importDefault(require("../enums/CommandErrors"));
|
|
6
|
+
module.exports = async (guild, command, instance, member, user, reply) => {
|
|
7
|
+
if (!guild || !member) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
const { error } = command;
|
|
11
|
+
const roles = command.getRequiredRoles(guild.id);
|
|
12
|
+
if (roles && roles.length) {
|
|
13
|
+
const missingRoles = [];
|
|
14
|
+
const missingRolesNames = [];
|
|
15
|
+
for (const role of roles) {
|
|
16
|
+
const realRole = await guild.roles.fetch(role);
|
|
17
|
+
if (realRole !== null && !member.roles.cache.has(role)) {
|
|
18
|
+
missingRoles.push(role);
|
|
19
|
+
missingRolesNames.push(realRole.name);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (missingRoles.length) {
|
|
23
|
+
if (error) {
|
|
24
|
+
error({
|
|
25
|
+
error: CommandErrors_1.default.MISSING_ROLES,
|
|
26
|
+
command,
|
|
27
|
+
message: null,
|
|
28
|
+
info: {
|
|
29
|
+
missingRoles,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
reply(instance.messageHandler.get(guild, 'MISSING_ROLES', {
|
|
35
|
+
ROLES: missingRolesNames.join(', '),
|
|
36
|
+
})).then((message) => {
|
|
37
|
+
if (!message) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (instance.delErrMsgCooldown === -1 || !message.deletable) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
setTimeout(() => {
|
|
44
|
+
message.delete();
|
|
45
|
+
}, 1000 * instance.delErrMsgCooldown);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else if (command.doesRequireRoles) {
|
|
52
|
+
reply(instance.messageHandler.get(guild, 'REQUIRE_ROLES', {
|
|
53
|
+
PREFIX: instance.getPrefix(guild),
|
|
54
|
+
COMMAND: command.names[0],
|
|
55
|
+
})).then((message) => {
|
|
56
|
+
if (!message) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (instance.delErrMsgCooldown === -1 || !message.deletable) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
setTimeout(() => {
|
|
63
|
+
message.delete();
|
|
64
|
+
}, 1000 * instance.delErrMsgCooldown);
|
|
65
|
+
});
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
return true;
|
|
69
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const CommandErrors_1 = __importDefault(require("../enums/CommandErrors"));
|
|
6
|
+
module.exports = (guild, command, instance, member, user, reply, args, name) => {
|
|
7
|
+
const { minArgs, maxArgs, expectedArgs, error } = command;
|
|
8
|
+
const prefix = instance.getPrefix(guild).toLowerCase();
|
|
9
|
+
if ((minArgs !== undefined && args.length < minArgs) ||
|
|
10
|
+
(maxArgs !== undefined && maxArgs !== -1 && args.length > maxArgs)) {
|
|
11
|
+
const syntaxError = command.syntaxError || {};
|
|
12
|
+
const { messageHandler } = instance;
|
|
13
|
+
let errorMsg = syntaxError[messageHandler.getLanguage(guild)] ||
|
|
14
|
+
instance.messageHandler.get(guild, 'SYNTAX_ERROR');
|
|
15
|
+
// Replace {PREFIX} with the actual prefix
|
|
16
|
+
if (errorMsg) {
|
|
17
|
+
errorMsg = errorMsg.replace(/{PREFIX}/g, prefix);
|
|
18
|
+
// Replace {COMMAND} with the name of the command that was ran
|
|
19
|
+
errorMsg = errorMsg.replace(/{COMMAND}/g, name);
|
|
20
|
+
// Replace {ARGUMENTS} with the expectedArgs property from the command
|
|
21
|
+
// If one was not provided then replace {ARGUMENTS} with an empty string
|
|
22
|
+
errorMsg = errorMsg.replace(/ {ARGUMENTS}/g, expectedArgs ? ` ${expectedArgs}` : '');
|
|
23
|
+
}
|
|
24
|
+
if (error) {
|
|
25
|
+
error({
|
|
26
|
+
error: CommandErrors_1.default.INVALID_ARGUMENTS,
|
|
27
|
+
command,
|
|
28
|
+
message: null,
|
|
29
|
+
info: {
|
|
30
|
+
minArgs,
|
|
31
|
+
maxArgs,
|
|
32
|
+
length: args.length,
|
|
33
|
+
errorMsg,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Reply with the local or global syntax error
|
|
39
|
+
reply(errorMsg).then((message) => {
|
|
40
|
+
if (!message) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (instance.delErrMsgCooldown === -1 || !message.deletable) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
message.delete();
|
|
48
|
+
}, 1000 * instance.delErrMsgCooldown);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const CommandErrors_1 = __importDefault(require("../enums/CommandErrors"));
|
|
6
|
+
module.exports = (guild, command, instance, member, user, reply) => {
|
|
7
|
+
const { cooldown, globalCooldown, error } = command;
|
|
8
|
+
if ((cooldown || globalCooldown) && user) {
|
|
9
|
+
const guildId = guild ? guild.id : 'dm';
|
|
10
|
+
const timeLeft = command.getCooldownSeconds(guildId, user.id);
|
|
11
|
+
if (timeLeft) {
|
|
12
|
+
if (error) {
|
|
13
|
+
error({
|
|
14
|
+
error: CommandErrors_1.default.COOLDOWN,
|
|
15
|
+
command,
|
|
16
|
+
message: null,
|
|
17
|
+
info: {
|
|
18
|
+
timeLeft,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
reply(instance.messageHandler.get(guild, 'COOLDOWN', {
|
|
24
|
+
COOLDOWN: timeLeft,
|
|
25
|
+
})).then((message) => {
|
|
26
|
+
if (!message) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (instance.delErrMsgCooldown === -1 || !message.deletable) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
setTimeout(() => {
|
|
33
|
+
message.delete();
|
|
34
|
+
}, 1000 * instance.delErrMsgCooldown);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
command.setCooldown(guildId, user.id);
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const CommandErrors_1 = __importDefault(require("../enums/CommandErrors"));
|
|
6
|
+
module.exports = (guild, command, instance, member, user, reply) => {
|
|
7
|
+
if (!guild || !command.isDisabled(guild.id)) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
const { error } = command;
|
|
11
|
+
if (error) {
|
|
12
|
+
error({
|
|
13
|
+
error: CommandErrors_1.default.COMMAND_DISABLED,
|
|
14
|
+
command,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
reply(instance.messageHandler.get(guild, 'DISABLED_COMMAND')).then((message) => {
|
|
19
|
+
if (!message) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (instance.delErrMsgCooldown === -1 || !message.deletable) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
setTimeout(() => {
|
|
26
|
+
message.delete();
|
|
27
|
+
}, 1000 * instance.delErrMsgCooldown);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
module.exports = (guild, command, instance, member, user, reply) => {
|
|
3
|
+
const { ownerOnly } = command;
|
|
4
|
+
if (!ownerOnly) {
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
if (!instance.botOwner.includes(user.id)) {
|
|
8
|
+
reply(instance.messageHandler.get(guild, 'BOT_OWNERS_ONLY')).then((message) => {
|
|
9
|
+
if (!message) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (instance.delErrMsgCooldown === -1 || !message.deletable) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
setTimeout(() => {
|
|
16
|
+
message.delete();
|
|
17
|
+
}, 1000 * instance.delErrMsgCooldown);
|
|
18
|
+
});
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const channel_commands_1 = __importDefault(require("../models/channel-commands"));
|
|
6
|
+
module.exports = {
|
|
7
|
+
description: 'Makes a command only work in some channels.',
|
|
8
|
+
category: 'Configuration',
|
|
9
|
+
permissions: ['Administrator'],
|
|
10
|
+
minArgs: 1,
|
|
11
|
+
maxArgs: 2,
|
|
12
|
+
expectedArgs: '<Command name> [Channel tag]',
|
|
13
|
+
cooldown: '2s',
|
|
14
|
+
guildOnly: true,
|
|
15
|
+
slash: 'both',
|
|
16
|
+
options: [
|
|
17
|
+
{
|
|
18
|
+
name: 'command',
|
|
19
|
+
description: 'The command name',
|
|
20
|
+
type: 'STRING',
|
|
21
|
+
required: true,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'channel',
|
|
25
|
+
description: 'The tag of the channel',
|
|
26
|
+
type: 'CHANNEL',
|
|
27
|
+
required: false,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
callback: async (options) => {
|
|
31
|
+
const { message, channel, args, instance, interaction } = options;
|
|
32
|
+
const { guild } = channel;
|
|
33
|
+
const { messageHandler } = instance;
|
|
34
|
+
let commandName = (args.shift() || '').toLowerCase();
|
|
35
|
+
const command = instance.commandHandler.getCommand(commandName);
|
|
36
|
+
if (!instance.isDBConnected()) {
|
|
37
|
+
return messageHandler.get(guild, 'NO_DATABASE_FOUND');
|
|
38
|
+
}
|
|
39
|
+
if (!command || !command.names) {
|
|
40
|
+
return messageHandler.get(guild, 'UNKNOWN_COMMAND', {
|
|
41
|
+
COMMAND: commandName,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
commandName = command.names[0];
|
|
45
|
+
if (args.length === 0) {
|
|
46
|
+
const results = await channel_commands_1.default.deleteMany({
|
|
47
|
+
guildId: guild?.id,
|
|
48
|
+
command: commandName,
|
|
49
|
+
});
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
if (results.n === 0) {
|
|
52
|
+
return messageHandler.get(guild, 'NOT_CHANNEL_COMMAND');
|
|
53
|
+
}
|
|
54
|
+
command.setRequiredChannels(guild, commandName, []);
|
|
55
|
+
return messageHandler.get(guild, 'NO_LONGER_CHANNEL_COMMAND');
|
|
56
|
+
}
|
|
57
|
+
if (message?.mentions.channels.size === 0) {
|
|
58
|
+
return messageHandler.get(guild, 'NO_TAGGED_CHANNELS');
|
|
59
|
+
}
|
|
60
|
+
let channels;
|
|
61
|
+
if (message) {
|
|
62
|
+
channels = Array.from(message.mentions.channels.keys());
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
channels = [interaction.options.getChannel('channel')];
|
|
66
|
+
}
|
|
67
|
+
const results = await channel_commands_1.default.findOneAndUpdate({
|
|
68
|
+
guildId: guild?.id,
|
|
69
|
+
command: commandName,
|
|
70
|
+
}, {
|
|
71
|
+
guildId: guild?.id,
|
|
72
|
+
command: commandName,
|
|
73
|
+
$addToSet: {
|
|
74
|
+
channels,
|
|
75
|
+
},
|
|
76
|
+
}, {
|
|
77
|
+
upsert: true,
|
|
78
|
+
new: true,
|
|
79
|
+
});
|
|
80
|
+
if (results) {
|
|
81
|
+
command.setRequiredChannels(guild, commandName, results.channels);
|
|
82
|
+
}
|
|
83
|
+
return messageHandler.get(guild, 'NOW_CHANNEL_COMMAND', {
|
|
84
|
+
COMMAND: commandName,
|
|
85
|
+
CHANNELS: args.join(' '),
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
// @ts-nocheck
|
|
6
|
+
const disabled_commands_1 = __importDefault(require("../models/disabled-commands"));
|
|
7
|
+
module.exports = {
|
|
8
|
+
description: 'Enables or disables a command for this guild',
|
|
9
|
+
category: 'Configuration',
|
|
10
|
+
permissions: ['Administrator'],
|
|
11
|
+
minArgs: 2,
|
|
12
|
+
maxArgs: 2,
|
|
13
|
+
expectedArgs: '<"enable" or "disable"> <Command Name>',
|
|
14
|
+
cooldown: '2s',
|
|
15
|
+
slash: 'both',
|
|
16
|
+
options: [
|
|
17
|
+
{
|
|
18
|
+
name: 'action',
|
|
19
|
+
description: 'Either "enable" or "disable"',
|
|
20
|
+
required: true,
|
|
21
|
+
type: 'STRING',
|
|
22
|
+
choices: [
|
|
23
|
+
{
|
|
24
|
+
name: 'Enable',
|
|
25
|
+
value: 'enable',
|
|
26
|
+
},
|
|
27
|
+
{ name: 'Disable', value: 'disable' },
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'command',
|
|
32
|
+
description: 'The name of the command',
|
|
33
|
+
required: true,
|
|
34
|
+
type: 'STRING',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
callback: async (options) => {
|
|
38
|
+
const { channel, args, instance } = options;
|
|
39
|
+
const { guild } = channel;
|
|
40
|
+
const newState = args.shift()?.toLowerCase();
|
|
41
|
+
const name = (args.shift() || '').toLowerCase();
|
|
42
|
+
if (!guild) {
|
|
43
|
+
return instance.messageHandler.get(guild, 'CANNOT_ENABLE_DISABLE_IN_DMS');
|
|
44
|
+
}
|
|
45
|
+
if (!instance.isDBConnected()) {
|
|
46
|
+
return instance.messageHandler.get(guild, 'NO_DATABASE_FOUND');
|
|
47
|
+
}
|
|
48
|
+
if (newState !== 'enable' && newState !== 'disable') {
|
|
49
|
+
return instance.messageHandler.get(guild, 'ENABLE_DISABLE_STATE');
|
|
50
|
+
}
|
|
51
|
+
const command = instance.commandHandler.getCommand(name);
|
|
52
|
+
if (command) {
|
|
53
|
+
const mainCommand = command.names[0];
|
|
54
|
+
if (mainCommand === 'command') {
|
|
55
|
+
return instance.messageHandler.get(guild, 'CANNOT_DISABLE_THIS_COMMAND');
|
|
56
|
+
}
|
|
57
|
+
const isDisabled = command.isDisabled(guild.id);
|
|
58
|
+
if (newState === 'enable') {
|
|
59
|
+
if (!isDisabled) {
|
|
60
|
+
return instance.messageHandler.get(guild, 'COMMAND_ALREADY_ENABLED');
|
|
61
|
+
}
|
|
62
|
+
await disabled_commands_1.default.deleteOne({
|
|
63
|
+
guildId: guild.id,
|
|
64
|
+
command: mainCommand,
|
|
65
|
+
});
|
|
66
|
+
command.enable(guild.id);
|
|
67
|
+
return instance.messageHandler.get(guild, 'COMMAND_NOW_ENABLED', {
|
|
68
|
+
COMMAND: mainCommand,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (isDisabled) {
|
|
72
|
+
return instance.messageHandler.get(guild, 'COMMAND_ALREADY_DISABLED');
|
|
73
|
+
}
|
|
74
|
+
await new disabled_commands_1.default({
|
|
75
|
+
guildId: guild.id,
|
|
76
|
+
command: mainCommand,
|
|
77
|
+
}).save();
|
|
78
|
+
command.disable(guild.id);
|
|
79
|
+
return instance.messageHandler.get(guild, 'COMMAND_NOW_DISABLED', {
|
|
80
|
+
COMMAND: mainCommand,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return instance.messageHandler.get(guild, 'UNKNOWN_COMMAND', {
|
|
84
|
+
COMMAND: name,
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
};
|