2019-10-21 20:21:25 -04:00
import { Message } from 'eris' ;
import axios from 'axios' ;
import { Client } from '..' ;
import { Command } from '../class' ;
export default class Exec extends Command {
constructor ( client : Client ) {
super ( client ) ;
this . name = 'exec' ;
this . description = 'Executes command' ;
this . aliases = [ 'ex' ] ;
this . enabled = true ;
2019-12-30 18:14:09 -05:00
this . permissions = { users : [ '253600545972027394' , '278620217221971968' , '155698776512790528' ] } ;
2019-11-16 14:42:34 -05:00
this . guildOnly = false ;
2019-10-21 20:21:25 -04:00
}
public async run ( message : Message , args : string [ ] ) {
try {
if ( ! args . length ) return this . client . commands . get ( 'help' ) . run ( message , [ this . name ] ) ;
const response = await message . channel . createMessage ( ` ${ this . client . stores . emojis . loading } ***Executing \` ${ args . join ( ' ' ) } \` *** ` ) ;
2019-10-29 16:16:08 -04:00
let result : string ;
try {
result = await this . client . util . exec ( args . join ( ' ' ) ) ;
} catch ( error ) {
result = error . message ;
}
2019-10-21 20:21:25 -04:00
if ( result . length <= 1975 ) return response . edit ( ` \` \` \` bash \ n ${ result } \ n \` \` \` ` ) ;
const splitResult = this . client . util . splitString ( result , 1975 ) ;
if ( splitResult [ 5 ] ) {
try {
const { data } = await axios . post ( 'https://snippets.cloud.libraryofcode.org/documents' , splitResult . join ( '' ) ) ;
return response . edit ( ` ${ this . client . stores . emojis . success } Your command execution output can be found on https://snippets.cloud.libraryofcode.org/ ${ data . key } ` ) ;
} catch ( error ) {
return response . edit ( ` ${ this . client . stores . emojis . error } ${ error } ` ) ;
}
}
await response . delete ( ) ;
return splitResult . forEach ( ( m ) = > message . channel . createMessage ( ` \` \` \` bash \ n ${ m } \ n \` \` \` ` ) ) ;
} catch ( error ) {
return this . client . util . handleError ( error , message , this ) ;
}
}
}