2020-04-16 10:14:13 -04:00
import { Message , User } from 'eris' ;
2020-04-16 10:09:44 -04:00
import { Client , Command } from '../class' ;
export default class Unban extends Command {
constructor ( client : Client ) {
super ( client ) ;
this . name = 'unban' ;
this . description = 'Unbans a member from the guild.' ;
this . usage = 'unban <user id> [reason]' ;
this . permissions = 2 ;
this . guildOnly = true ;
this . enabled = true ;
}
public async run ( message : Message , args : string [ ] ) {
try {
// @ts-ignore
2020-04-16 10:14:13 -04:00
let user : User ;
try {
2020-04-16 17:58:10 -04:00
user = await this . client . getRESTUser ( args [ 0 ] ) ;
2020-04-16 10:14:13 -04:00
} catch {
return message . channel . createMessage ( ` *** ${ this . client . util . emojis . ERROR } Could find find user.*** ` ) ;
}
try {
if ( await this . client . getRESTGuildMember ( this . client . config . guildID , args [ 0 ] ) ) return message . channel . createMessage ( ` *** ${ this . client . util . emojis . ERROR } This member exists in the server.*** ` ) ;
} catch {
2020-04-16 17:58:10 -04:00
// eslint-disable-next-line no-unused-expressions
undefined ;
}
try {
await this . client . guilds . get ( this . client . config . guildID ) . getBan ( args [ 0 ] ) ;
} catch {
return message . channel . createMessage ( ` *** ${ this . client . util . emojis . ERROR } This user is not banned.*** ` ) ;
2020-04-16 10:14:13 -04:00
}
2020-04-16 10:09:44 -04:00
if ( ! user ) return message . channel . createMessage ( ` *** ${ this . client . util . emojis . ERROR } Unable to locate user.*** ` ) ;
message . delete ( ) ;
await this . client . util . moderation . unban ( user . id , message . member , args . slice ( 1 ) . join ( ' ' ) ) ;
return message . channel . createMessage ( ` *** ${ this . client . util . emojis . SUCCESS } ${ user . username } # ${ user . discriminator } has been unbanned.*** ` ) ;
} catch ( err ) {
return this . client . util . handleError ( err , message , this , false ) ;
}
}
}