/* eslint-disable require-jsdoc */ /* eslint-disable max-len */ const { MessageEmbed } = require('discord.js') function add (command, interval, bot) { const id = setInterval(() => bot.core.run(command), interval) bot.cloops.push({ id, interval, command }) } function remove (item, bot) { clearInterval(bot.cloops[item].id) bot.cloops.splice(item, 1) } function clear (bot) { for (const interval of bot.cloops) clearInterval(interval.id) bot.cloops = [] } function list (bot, discord, channeldc, selector, config) { const message = [] 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(config.discord.embedsColors.normal) .setTitle('Cloops') .setDescription(message.join('')) channeldc.send({ embeds: [Embed] }) return } message.push({ text: 'Cloops:', color: 'green' }) message.push('\n') 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() bot.tellraw(selector, message) } module.exports = { name: 'cloop', alias: [], description: 'Loop commands', usage: [ ' ', ' ', ' ', ' ' ], trusted: 1, execute (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { if (!bot.cloops) bot.cloops = [] 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) 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' }]) } else if (args[1] === 'list') { list(bot, false, null, selector) } else if (args[1] === 'remove') { remove(args[2], bot) bot.tellraw(selector, [{ text: 'Removed cloop ' }, { text: args[2], color: 'aqua' }]) } else if (args[1] === 'removeall') { clear(bot) bot.tellraw(selector, [{ text: 'Removed all looped commands', color: 'white' }]) } else { throw new SyntaxError('Invalid argument') } }, discordExecute (bot, username, usernameraw, sender, prefix, args, channeldc, message, config) { if (!bot.cloops) bot.cloops = [] 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(config.discord.embedsColors.normal) .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') { list(bot, true, channeldc, '@a', config) } else if (args[0] === 'remove') { remove(args[1], bot) const Embed = new MessageEmbed() .setColor(config.discord.embedsColors.normal) .setTitle('Cloop') .setDescription(`Removed cloop \`${args[1]}\``) channeldc.send({ embeds: [Embed] }) } else if (args[0] === 'removeall') { clear(bot) const Embed = new MessageEmbed() .setColor(config.discord.embedsColors.normal) .setTitle('Cloop') .setDescription('Removed all looped commands') channeldc.send({ embeds: [Embed] }) } else { throw new Error('Invalid argument') } } }