2020-10-23 08:10:32 +00:00
module . exports = class {
constructor ( name , category ) {
this . name = name ,
this . category = category ,
this . enabled = true ,
this . devOnly = false ,
this . aliases = [ ] ,
this . userPerms = [ 'administrator' ] ,
this . botPerms = [ ] ,
this . cooldown = 2000 ,
this . help = {
description : 'Add, remove or list users on the blocklist for this server. User\'s on the blocklist cannot use my commands.' ,
2020-10-29 08:20:45 +00:00
arguments : '<add | remove | list> <user>' ,
details : '' ,
2020-10-23 08:10:32 +00:00
examples : 'blocklist list\nblocklist add @Veemo\nblocklist remove emily'
} ;
}
async run ( client , message , [ action , ... user ] , data ) {
if ( ! action || action . toLowerCase ( ) === 'list' ) {
2020-10-23 08:32:26 +00:00
const list = [ ] ;
2020-10-24 04:12:11 +00:00
for ( const userID of data . guild . blocklist ) {
2020-10-25 02:10:05 +00:00
const user = await client . functions . getUser ( userID ) ;
2020-10-24 04:12:11 +00:00
list . push ( ` ${ user . username } # ${ user . discriminator } ` ) ;
2020-10-23 08:32:26 +00:00
}
2020-10-24 05:40:12 +00:00
if ( list . length === 0 ) return message . channel . createMessage ( 'The server blocklist is currently empty. Use `blocklist add <user>` to add people to the blocklist!' ) ;
2020-10-24 04:12:11 +00:00
2020-11-10 03:31:49 +00:00
const embed = new client . RichEmbed ( )
2020-10-24 04:12:11 +00:00
. setTitle ( 'Users on blocklist: ' + data . guild . blocklist . length )
2020-10-24 05:40:12 +00:00
. setDescription ( '```' + list . join ( ', ' ) + '```' )
2020-10-28 04:48:21 +00:00
. setColour ( client . functions . displayHexColour ( message . channel . guild , client . user . id ) ) ;
2020-10-23 08:32:26 +00:00
message . channel . createMessage ( { embed : embed } ) ;
2020-10-23 08:10:32 +00:00
return ;
}
2021-03-03 08:20:26 +00:00
if ( action . toLowerCase ( ) !== 'add' || action . toLowerCase ( ) !== 'remove' ) {
return message . channel . createMessage ( ` ${ client . emojis . userError } You didn't specify a valid action. Usage: \` ${ this . help . usage } \` ` ) ;
}
2020-10-24 05:40:12 +00:00
if ( ! user ) return message . channel . createMessage (
2021-03-03 08:20:26 +00:00
` ${ client . emojis . userError } You didn't specify a user. Usage: \` ${ message . prefix + this . help . usage } \` `
2020-10-23 08:10:32 +00:00
) ;
let member = message . mentions [ 0 ] ;
if ( ! member ) member = await message . channel . guild . searchMembers ( user . join ( ' ' ) , 2 ) ;
if ( member . length > 1 ) return message . channel . createMessage (
2020-11-10 03:31:49 +00:00
` ${ client . emojis . userError } Found more than one user, try refining your search or pinging the user instead. `
2020-10-23 08:10:32 +00:00
) ;
action = action . toLowerCase ( ) ;
2020-10-24 05:40:12 +00:00
member = member [ 0 ] ;
2020-10-23 08:10:32 +00:00
const blocklist = data . guild . blocklist ;
if ( action === 'add' ) {
if ( member . id === message . channel . guild . ownerID ) return message . channel . createMessage (
2020-11-10 03:31:49 +00:00
` ${ client . emojis . userError } You can't block the owner, silly! `
2020-10-23 08:10:32 +00:00
) ;
2020-10-25 02:10:05 +00:00
if ( client . functions . highestRole ( member ) . position >= client . functions . highestRole ( message . member ) . position && message . member . id !== message . channel . guild . ownerID ) {
2020-11-10 03:31:49 +00:00
return message . channel . createMessage ( ` ${ client . emojis . userError } This user has a higher role than you, you can't add them to the blocklist! ` ) ;
2020-10-23 08:10:32 +00:00
}
if ( blocklist . includes ( member . id ) ) return message . channel . createMessage (
2020-11-10 03:31:49 +00:00
` ${ client . emojis . userError } This user is already on the blocklist, you can't add them twice! `
2020-10-23 08:10:32 +00:00
) ;
blocklist . push ( member . id ) ;
client . db . updateGuild ( message . channel . guild . id , 'blocklist' , blocklist ) . then ( ( ) => {
2020-11-10 03:31:49 +00:00
message . channel . createMessage ( ` ${ client . emojis . success } Added \` ${ member . username } # ${ member . discriminator } \` to the blocklist. ` ) ;
2020-10-23 08:10:32 +00:00
} ) . catch ( error => {
client . logger . error ( 'GUILD_UPDATE_ERROR' , error ) ;
2020-11-10 03:31:49 +00:00
message . channel . createMessage ( ` ${ client . emojis . botError } An error occured while adding this user to the blocklist, please try again! **Error:** ${ error } ` ) ;
2020-10-23 08:10:32 +00:00
} ) ;
return ;
}
if ( action === 'remove' ) {
2020-10-25 02:10:05 +00:00
if ( client . functions . highestRole ( member ) . position >= client . functions . highestRole ( message . member ) . position && message . member . id !== message . channel . guild . ownerID ) {
2020-11-10 03:31:49 +00:00
return message . channel . createMessage ( ` ${ client . emojis . userError } This user has a higher role than you, you can't remove them to the blocklist! ` ) ;
2020-10-23 08:10:32 +00:00
}
if ( ! blocklist . includes ( member . id ) ) return message . channel . createMessage (
2020-11-10 03:31:49 +00:00
` ${ client . emojis . userError } This user isn't on the blocklist. `
2020-10-23 08:10:32 +00:00
) ;
blocklist . remove ( member . id ) ;
client . db . updateGuild ( message . channel . guild . id , 'blocklist' , blocklist ) . then ( ( ) => {
2020-11-10 03:31:49 +00:00
message . channel . createMessage ( ` ${ client . emojis . success } Removed \` ${ member . username } # ${ member . discriminator } \` from the blocklist. ` ) ;
2020-10-23 08:10:32 +00:00
} ) . catch ( error => {
client . logger . error ( 'GUILD_UPDATE_ERROR' , error ) ;
2020-11-10 03:31:49 +00:00
message . channel . createMessage ( ` ${ client . emojis . botError } An error occured while removing this user from the blocklist, please try again! **Error:** ${ error } ` ) ;
2020-10-23 08:10:32 +00:00
} ) ;
return ;
}
}
} ;