Merge pull request #50 from Vylpes/feature/3-disable-commands
Feature/3 disable commands
This commit is contained in:
commit
1b1933a9ce
4 changed files with 154 additions and 5 deletions
|
@ -10,4 +10,7 @@ BOT_TOKEN=
|
||||||
BOT_PREFIX=v!
|
BOT_PREFIX=v!
|
||||||
|
|
||||||
FOLDERS_COMMANDS=commands
|
FOLDERS_COMMANDS=commands
|
||||||
FOLDERS_EVENTS=events
|
FOLDERS_EVENTS=events
|
||||||
|
|
||||||
|
COMMANDS_DISABLED=
|
||||||
|
COMMANDS_DISABLED_MESSAGE=This command is disabled.
|
13
README.md
13
README.md
|
@ -14,12 +14,17 @@ BOT_PREFIX=v!
|
||||||
|
|
||||||
FOLDERS_COMMANDS=commands
|
FOLDERS_COMMANDS=commands
|
||||||
FOLDERS_EVENTS=events
|
FOLDERS_EVENTS=events
|
||||||
|
|
||||||
|
COMMANDS_DISABLED=
|
||||||
|
COMMANDS_DISABLED_MESSAGE=This command is disabled.
|
||||||
```
|
```
|
||||||
|
|
||||||
* **BOT_TOKEN:** Your bot's token, replace {TOKEN} with your bot token
|
* **BOT_TOKEN:** Your bot's token, replace {TOKEN} with your bot token.
|
||||||
* **BOT_PREFIX** The command prefix
|
* **BOT_PREFIX:** The command prefix.
|
||||||
* **FOLDERS_COMMANDS:** The folder which contains your commands
|
* **FOLDERS_COMMANDS:** The folder which contains your commands.
|
||||||
* **FOLDERS_EVENTS** The folder which contains your events
|
* **FOLDERS_EVENTS:** The folder which contains your events.
|
||||||
|
* **COMMANDS_DISABLED:** List of command file names that won't run, separated by commas.
|
||||||
|
* **COMMANDS_DISABLED_MESSAGE:** The message which is replied to the user who tries to run a disabled command.
|
||||||
|
|
||||||
Make sure that you **DO NOT** put your .env file into VCS!
|
Make sure that you **DO NOT** put your .env file into VCS!
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,17 @@ export class Util {
|
||||||
message: "Member is not part of message",
|
message: "Member is not part of message",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const disabledCommands = process.env.COMMANDS_DISABLED?.split(',');
|
||||||
|
|
||||||
|
if (disabledCommands?.find(x => x == name)) {
|
||||||
|
message.reply(process.env.COMMANDS_DISABLED_MESSAGE || "This command is disabled.");
|
||||||
|
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
message: "Command is disabled",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const folder = process.env.FOLDERS_COMMANDS;
|
const folder = process.env.FOLDERS_COMMANDS;
|
||||||
|
|
||||||
if (existsSync(`${process.cwd()}/${folder}/`)) {
|
if (existsSync(`${process.cwd()}/${folder}/`)) {
|
||||||
|
|
|
@ -210,6 +210,136 @@ describe('LoadCommand', () => {
|
||||||
|
|
||||||
expect(result.valid).toBeTruthy();
|
expect(result.valid).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Given command is set to disabled, Expect command to not fire', () => {
|
||||||
|
process.env = {
|
||||||
|
BOT_TOKEN: 'TOKEN',
|
||||||
|
BOT_PREFIX: '!',
|
||||||
|
FOLDERS_COMMANDS: 'commands',
|
||||||
|
FOLDERS_EVENTS: 'events',
|
||||||
|
COMMANDS_DISABLED: 'normal',
|
||||||
|
COMMANDS_DISABLED_MESSAGE: 'disabled',
|
||||||
|
}
|
||||||
|
|
||||||
|
process.cwd = jest.fn().mockReturnValue("../../tests/__mocks");
|
||||||
|
fs.existsSync = jest.fn().mockReturnValue(true);
|
||||||
|
|
||||||
|
const message = {
|
||||||
|
member: {
|
||||||
|
roles: {
|
||||||
|
cache: {
|
||||||
|
find: jest.fn().mockReturnValue(true),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
reply: jest.fn(),
|
||||||
|
} as unknown as Message;
|
||||||
|
|
||||||
|
const messageReply = jest.spyOn(message, 'reply');
|
||||||
|
|
||||||
|
const util = new Util();
|
||||||
|
|
||||||
|
const result = util.loadCommand("normal", [ "first" ], message);
|
||||||
|
|
||||||
|
expect(result.valid).toBeFalsy();
|
||||||
|
expect(result.message).toBe("Command is disabled");
|
||||||
|
expect(messageReply).toBeCalledWith("disabled");
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Given command COMMANDS_DISABLED_MESSAGE is empty, Expect default message sent', () => {
|
||||||
|
process.env = {
|
||||||
|
BOT_TOKEN: 'TOKEN',
|
||||||
|
BOT_PREFIX: '!',
|
||||||
|
FOLDERS_COMMANDS: 'commands',
|
||||||
|
FOLDERS_EVENTS: 'events',
|
||||||
|
COMMANDS_DISABLED: 'normal',
|
||||||
|
}
|
||||||
|
|
||||||
|
process.cwd = jest.fn().mockReturnValue("../../tests/__mocks");
|
||||||
|
fs.existsSync = jest.fn().mockReturnValue(true);
|
||||||
|
|
||||||
|
const message = {
|
||||||
|
member: {
|
||||||
|
roles: {
|
||||||
|
cache: {
|
||||||
|
find: jest.fn().mockReturnValue(true),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
reply: jest.fn(),
|
||||||
|
} as unknown as Message;
|
||||||
|
|
||||||
|
const messageReply = jest.spyOn(message, 'reply');
|
||||||
|
|
||||||
|
const util = new Util();
|
||||||
|
|
||||||
|
const result = util.loadCommand("normal", [ "first" ], message);
|
||||||
|
|
||||||
|
expect(result.valid).toBeFalsy();
|
||||||
|
expect(result.message).toBe("Command is disabled");
|
||||||
|
expect(messageReply).toBeCalledWith("This command is disabled.");
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Given a different command is disabled, Expect command to still fire', () => {
|
||||||
|
process.env = {
|
||||||
|
BOT_TOKEN: 'TOKEN',
|
||||||
|
BOT_PREFIX: '!',
|
||||||
|
FOLDERS_COMMANDS: 'commands',
|
||||||
|
FOLDERS_EVENTS: 'events',
|
||||||
|
COMMANDS_DISABLED: 'anything',
|
||||||
|
}
|
||||||
|
|
||||||
|
process.cwd = jest.fn().mockReturnValue("../../tests/__mocks");
|
||||||
|
fs.existsSync = jest.fn().mockReturnValue(true);
|
||||||
|
|
||||||
|
const message = {
|
||||||
|
member: {
|
||||||
|
roles: {
|
||||||
|
cache: {
|
||||||
|
find: jest.fn().mockReturnValue(true),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
reply: jest.fn(),
|
||||||
|
} as unknown as Message;
|
||||||
|
|
||||||
|
const util = new Util();
|
||||||
|
|
||||||
|
const result = util.loadCommand("normal", [ "first" ], message);
|
||||||
|
|
||||||
|
expect(result.valid).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Given a different command is disabled with this one, Expect command to not fire', () => {
|
||||||
|
process.env = {
|
||||||
|
BOT_TOKEN: 'TOKEN',
|
||||||
|
BOT_PREFIX: '!',
|
||||||
|
FOLDERS_COMMANDS: 'commands',
|
||||||
|
FOLDERS_EVENTS: 'events',
|
||||||
|
COMMANDS_DISABLED: 'normal,anything,',
|
||||||
|
}
|
||||||
|
|
||||||
|
process.cwd = jest.fn().mockReturnValue("../../tests/__mocks");
|
||||||
|
fs.existsSync = jest.fn().mockReturnValue(true);
|
||||||
|
|
||||||
|
const message = {
|
||||||
|
member: {
|
||||||
|
roles: {
|
||||||
|
cache: {
|
||||||
|
find: jest.fn().mockReturnValue(true),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
reply: jest.fn(),
|
||||||
|
} as unknown as Message;
|
||||||
|
|
||||||
|
const util = new Util();
|
||||||
|
|
||||||
|
const result = util.loadCommand("normal", [ "first" ], message);
|
||||||
|
|
||||||
|
expect(result.valid).toBeFalsy();
|
||||||
|
expect(result.message).toBe("Command is disabled");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('LoadEvents', () => {
|
describe('LoadEvents', () => {
|
||||||
|
|
Reference in a new issue