2021-08-19 14:19:14 +00:00
import db from "../../utils/database.js" ;
import Command from "../../classes/command.js" ;
import * as collections from "../../utils/collections.js" ;
2021-08-13 03:28:09 +00:00
class CommandCommand extends Command {
async run ( ) {
if ( ! this . message . channel . guild ) return "This command only works in servers!" ;
if ( ! this . message . member . permissions . has ( "administrator" ) && this . message . member . id !== process . env . OWNER ) return "You need to be an administrator to enable/disable me!" ;
if ( this . args . length === 0 ) return "You need to provide what command to enable/disable!" ;
if ( this . args [ 0 ] !== "disable" && this . args [ 0 ] !== "enable" ) return "That's not a valid option!" ;
const guildDB = await db . getGuild ( this . message . channel . guild . id ) ;
2021-08-13 19:24:26 +00:00
const disabled = guildDB . disabled _commands ? guildDB . disabled _commands : guildDB . disabledCommands ;
2021-08-13 03:28:09 +00:00
if ( this . args [ 0 ] . toLowerCase ( ) === "disable" ) {
if ( ! collections . commands . has ( this . args [ 1 ] . toLowerCase ( ) ) && ! collections . aliases . has ( this . args [ 1 ] . toLowerCase ( ) ) ) return "That isn't a command!" ;
const command = collections . aliases . has ( this . args [ 1 ] . toLowerCase ( ) ) ? collections . aliases . get ( this . args [ 1 ] . toLowerCase ( ) ) : this . args [ 1 ] . toLowerCase ( ) ;
2021-08-18 13:07:55 +00:00
if ( command === "command" ) return "You can't disable that command!" ;
2021-08-13 19:24:26 +00:00
if ( disabled && disabled . includes ( command ) ) return "That command is already disabled!" ;
2021-08-13 03:28:09 +00:00
await db . disableCommand ( this . message . channel . guild . id , command ) ;
return ` The command has been disabled. To re-enable it, just run \` ${ guildDB . prefix } command enable ${ command } \` . ` ;
} else if ( this . args [ 0 ] . toLowerCase ( ) === "enable" ) {
if ( ! collections . commands . has ( this . args [ 1 ] . toLowerCase ( ) ) && ! collections . aliases . has ( this . args [ 1 ] . toLowerCase ( ) ) ) return "That isn't a command!" ;
const command = collections . aliases . has ( this . args [ 1 ] . toLowerCase ( ) ) ? collections . aliases . get ( this . args [ 1 ] . toLowerCase ( ) ) : this . args [ 1 ] . toLowerCase ( ) ;
2021-08-13 19:24:26 +00:00
if ( disabled && ! disabled . includes ( command ) ) return "That command isn't disabled!" ;
2021-08-13 03:28:09 +00:00
await db . enableCommand ( this . message . channel . guild . id , command ) ;
return ` The command \` ${ command } \` has been re-enabled. ` ;
}
}
static description = "Enables/disables a command for a server" ;
static aliases = [ "cmd" ] ;
static arguments = [ "[enable/disable]" , "[command]" ] ;
}
2021-08-19 14:19:14 +00:00
export default CommandCommand ;