2022-11-16 06:10:41 -05:00
/* eslint-disable require-jsdoc */
2022-08-14 05:51:45 -04:00
/* eslint-disable max-len */
2022-10-19 21:14:29 -04:00
const { MessageEmbed } = require ( 'discord.js' ) ;
2022-08-14 05:51:45 -04:00
function add ( command , interval , bot ) {
const id = setInterval ( ( ) => bot . core . run ( command ) , interval ) ;
bot . cloops . push ( { id , interval , command } ) ;
}
function remove ( item ) {
clearInterval ( bot . cloops [ item ] . id ) ;
bot . cloops . splice ( item , 1 ) ;
}
function clear ( ) {
for ( const interval of bot . cloops ) clearInterval ( interval . id ) ;
bot . cloops = [ ] ;
}
2022-10-19 21:14:29 -04:00
function list ( bot , discord , channeldc ) {
2022-08-14 05:51:45 -04:00
const message = [ ] ;
2022-10-19 21:14:29 -04:00
if ( discord ) {
for ( const [ id , cloop ] of Object . entries ( bot . cloops ) ) {
message . push ( id ) ;
message . push ( ' > ' ) ;
message . push ( ` \` ${ cloop . command } \` ` ) ;
message . push ( ' - ' ) ;
message . push ( cloop . interval ) ;
message . push ( '\n' ) ;
}
message . pop ( ) ;
const Embed = new MessageEmbed ( )
. setColor ( '#FFFF00' )
. setTitle ( 'Cloops' )
. setDescription ( message . join ( '' ) ) ;
channeldc . send ( { embeds : [ Embed ] } ) ;
return ;
}
2022-08-14 05:51:45 -04:00
message . push ( { text : 'Cloops:' , color : 'green' } ) ;
2022-08-14 07:18:52 -04:00
message . push ( '\n' ) ;
2022-08-14 05:51:45 -04:00
for ( const [ id , cloop ] of Object . entries ( bot . cloops ) ) {
message . push ( { text : id , color : 'aqua' } ) ;
message . push ( { text : ' > ' , color : 'gold' } ) ;
message . push ( { text : cloop . command , color : 'green' } ) ;
message . push ( { text : ' - ' , color : 'gold' } ) ;
message . push ( { text : cloop . interval , color : 'green' } ) ;
message . push ( '\n' ) ;
}
message . pop ( ) ;
2022-11-16 06:41:30 -05:00
bot . tellraw ( selector , message ) ;
2022-08-14 05:51:45 -04:00
}
module . exports = {
name : 'cloop' ,
alias : [ ] ,
description : 'Loop commands' ,
2022-11-13 02:41:59 -05:00
usage : [
'<hash> <add> <interval> <command>' ,
'<hash> <remove> <index>' ,
'<hash> <removeall>' ,
'<hash> <list>' ,
] ,
2022-08-14 05:51:45 -04:00
trusted : 1 ,
2022-11-16 06:41:30 -05:00
execute : function ( bot , username , usernameraw , sender , prefix , args , config , hash , ownerhash , selector ) {
2022-10-19 07:17:41 -04:00
if ( ! bot . cloops ) bot . cloops = [ ] ;
2022-11-16 06:09:37 -05:00
if ( args [ 0 ] === hash ) {
2022-11-07 08:08:29 -05:00
if ( args [ 1 ] === 'add' && args [ 3 ] ) {
if ( ! Number ( args [ 2 ] ) && Number ( args [ 2 ] ) !== 0 ) throw new SyntaxError ( 'Invalid interval' ) ;
add ( args . slice ( 3 ) . join ( ' ' ) , args [ 2 ] , bot ) ;
2022-11-16 06:41:30 -05:00
bot . tellraw ( selector , [ { text : 'Added command ' , color : 'white' } , { text : ` ${ args . slice ( 3 ) . join ( ' ' ) } ` , color : 'aqua' } , { text : ' with interval ' , color : 'white' } , { text : ` ${ args [ 2 ] } ` , color : 'green' } , { text : ' to the cloops' , color : 'white' } ] ) ;
2022-11-07 08:08:29 -05:00
} else if ( args [ 1 ] === 'list' ) {
2022-08-14 05:51:45 -04:00
list ( bot ) ;
2022-11-07 08:08:29 -05:00
} else if ( args [ 1 ] === 'remove' ) {
2022-08-14 05:51:45 -04:00
remove ( args [ 2 ] ) ;
2022-11-16 06:41:30 -05:00
bot . tellraw ( selector , [ { text : 'Removed cloop ' } , { text : args [ 2 ] , color : 'aqua' } ] ) ;
2022-11-07 08:08:29 -05:00
} else if ( args [ 1 ] === 'removeall' ) {
2022-08-14 05:51:45 -04:00
clear ( ) ;
2022-11-16 06:41:30 -05:00
bot . tellraw ( selector , [ { text : 'Removed all looped commands' , color : 'white' } ] ) ;
2022-08-14 05:51:45 -04:00
} else {
2022-11-07 08:08:29 -05:00
throw new SyntaxError ( 'Invalid argument' ) ;
2022-08-14 05:51:45 -04:00
}
2022-11-07 08:08:29 -05:00
} else {
throw new Error ( 'Invalid hash' ) ;
2022-08-14 05:51:45 -04:00
}
} ,
2022-10-19 21:14:29 -04:00
discordExecute : function ( bot , username , usernameraw , sender , prefix , args , channeldc , message ) {
if ( ! bot . cloops ) bot . cloops = [ ] ;
2022-11-07 08:08:29 -05:00
if ( message . member . roles . cache . some ( ( role ) => role . name === 'Trusted' ) ) {
if ( args [ 0 ] === 'add' && args [ 2 ] ) {
if ( ! Number ( args [ 1 ] ) && Number ( args [ 1 ] ) !== 0 ) throw new SyntaxError ( 'Invalid interval' ) ;
add ( args . slice ( 2 ) . join ( ' ' ) , args [ 1 ] , bot ) ;
const Embed = new MessageEmbed ( )
. setColor ( '#FFFF00' )
. setTitle ( 'Cloop' )
. setDescription ( ` Added cloop \` ${ args . slice ( 2 ) . join ( ' ' ) } \` with interval ${ args [ 1 ] } to the cloops ` ) ;
channeldc . send ( { embeds : [ Embed ] } ) ;
} else if ( args [ 0 ] === 'list' ) {
2022-10-19 21:14:29 -04:00
list ( bot , true , channeldc ) ;
2022-11-07 08:08:29 -05:00
} else if ( args [ 0 ] === 'remove' ) {
2022-10-19 21:14:29 -04:00
remove ( args [ 1 ] ) ;
const Embed = new MessageEmbed ( )
. setColor ( '#FFFF00' )
. setTitle ( 'Cloop' )
. setDescription ( ` Removed cloop \` ${ args [ 1 ] } \` ` ) ;
channeldc . send ( { embeds : [ Embed ] } ) ;
2022-11-07 08:08:29 -05:00
} else if ( args [ 0 ] === 'removeall' ) {
2022-10-19 21:14:29 -04:00
clear ( ) ;
const Embed = new MessageEmbed ( )
. setColor ( '#FFFF00' )
. setTitle ( 'Cloop' )
. setDescription ( 'Removed all looped commands' ) ;
channeldc . send ( { embeds : [ Embed ] } ) ;
} else {
2022-11-07 08:08:29 -05:00
throw new Error ( 'Invalid argument' ) ;
2022-10-19 21:14:29 -04:00
}
2022-11-07 08:08:29 -05:00
} else {
throw new Error ( 'You\'re not in the trusted role!' ) ;
2022-10-19 21:14:29 -04:00
}
} ,
2022-08-14 05:51:45 -04:00
} ;