move cloop and eaglercrash to plugins + improve

This commit is contained in:
ChomeNS 2022-12-08 17:51:30 +07:00
parent b9fd9a56fc
commit d7be828fad
4 changed files with 105 additions and 54 deletions

View file

@ -1,25 +1,12 @@
const { MessageEmbed } = require('discord.js') 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) { function list (bot, discord, channeldc, selector, config) {
const message = [] const message = []
if (discord) { if (discord) {
for (const [id, cloop] of Object.entries(bot.cloops)) { for (const { id, cloop, list } of Object.entries(bot.cloop.list)) {
if (!list) continue
message.push(id) message.push(id)
message.push(' > ') message.push(' > ')
message.push(`\`${cloop.command}\``) message.push(`\`${cloop.command}\``)
@ -35,25 +22,26 @@ function list (bot, discord, channeldc, selector, config) {
.setTitle('Cloops') .setTitle('Cloops')
.setDescription(message.join('')) .setDescription(message.join(''))
channeldc.send({ embeds: [Embed] }) channeldc.send({ embeds: [Embed] })
return } else {
} message.push({ text: 'Cloops:', color: 'green' })
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.push('\n')
for (const { id, cloop, list } of Object.entries(bot.cloop.list)) {
if (!list) continue
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)
} }
message.pop()
bot.tellraw(selector, message)
} }
module.exports = { module.exports = {
name: 'cloop', name: 'cloop',
alias: [], alias: [],
@ -61,33 +49,31 @@ module.exports = {
usage: [ usage: [
'<hash> <add> <interval> <command>', '<hash> <add> <interval> <command>',
'<hash> <remove> <index>', '<hash> <remove> <index>',
'<hash> <removeall>', '<hash> <removeall|clear>',
'<hash> <list>' '<hash> <list>'
], ],
trusted: 1, trusted: 1,
execute (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { execute (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) {
if (!bot.cloops) bot.cloops = []
if (args[1] === 'add' && args[3]) { if (args[1] === 'add' && args[3]) {
if (!Number(args[2]) && Number(args[2]) !== 0) throw new SyntaxError('Invalid interval') if (!Number(args[2]) && Number(args[2]) !== 0) throw new SyntaxError('Invalid interval')
add(args.slice(3).join(' '), args[2], bot) bot.cloop.add(args.slice(3).join(' '), args[2])
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' }]) 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') { } else if (args[1] === 'list') {
list(bot, false, null, selector) list(bot, false, null, selector)
} else if (args[1] === 'remove') { } else if (args[1] === 'remove') {
remove(args[2], bot) bot.cloop.remove(args[2])
bot.tellraw(selector, [{ text: 'Removed cloop ' }, { text: args[2], color: 'aqua' }]) bot.tellraw(selector, [{ text: 'Removed cloop ' }, { text: args[2], color: 'aqua' }])
} else if (args[1] === 'removeall') { } else if (args[1] === 'removeall' || args[1] === 'clear') {
clear(bot) bot.cloop.clear()
bot.tellraw(selector, [{ text: 'Removed all looped commands', color: 'white' }]) bot.tellraw(selector, [{ text: 'Removed all looped commands', color: 'white' }])
} else { } else {
throw new SyntaxError('Invalid argument') throw new SyntaxError('Invalid argument')
} }
}, },
discordExecute (bot, username, usernameraw, sender, prefix, args, channeldc, message, config) { discordExecute (bot, username, usernameraw, sender, prefix, args, channeldc, message, config) {
if (!bot.cloops) bot.cloops = []
if (args[0] === 'add' && args[2]) { if (args[0] === 'add' && args[2]) {
if (!Number(args[1]) && Number(args[1]) !== 0) throw new SyntaxError('Invalid interval') if (!Number(args[1]) && Number(args[1]) !== 0) throw new SyntaxError('Invalid interval')
add(args.slice(2).join(' '), args[1], bot) bot.cloop.add(args.slice(2).join(' '), args[1])
const Embed = new MessageEmbed() const Embed = new MessageEmbed()
.setColor(config.discord.embedsColors.normal) .setColor(config.discord.embedsColors.normal)
.setTitle('Cloop') .setTitle('Cloop')
@ -96,14 +82,14 @@ module.exports = {
} else if (args[0] === 'list') { } else if (args[0] === 'list') {
list(bot, true, channeldc, '@a', config) list(bot, true, channeldc, '@a', config)
} else if (args[0] === 'remove') { } else if (args[0] === 'remove') {
remove(args[1], bot) bot.cloop.remove(args[1])
const Embed = new MessageEmbed() const Embed = new MessageEmbed()
.setColor(config.discord.embedsColors.normal) .setColor(config.discord.embedsColors.normal)
.setTitle('Cloop') .setTitle('Cloop')
.setDescription(`Removed cloop \`${args[1]}\``) .setDescription(`Removed cloop \`${args[1]}\``)
channeldc.send({ embeds: [Embed] }) channeldc.send({ embeds: [Embed] })
} else if (args[0] === 'removeall') { } else if (args[0] === 'removeall' || args[0] === 'clear') {
clear(bot) bot.cloop.clear()
const Embed = new MessageEmbed() const Embed = new MessageEmbed()
.setColor(config.discord.embedsColors.normal) .setColor(config.discord.embedsColors.normal)
.setTitle('Cloop') .setTitle('Cloop')

View file

@ -2,20 +2,38 @@ module.exports = {
name: 'eaglercrash', name: 'eaglercrash',
alias: [], alias: [],
description: 'Lags Eaglercraft and crashes it', description: 'Lags Eaglercraft and crashes it',
usage: '<on|off> <hash>', usage: '<hash> <on|off>',
trusted: 1, trusted: 1,
execute (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { execute (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) {
if (args[1] === 'on') { switch (args[1]) {
bot.eaglercrashstarted = true case 'on':
bot.eaglercrash = setInterval(async function () { bot.eaglercrash.on()
if (bot.eaglercrashstarted === true) return bot.core.run('minecraft:playsound block.note_block.harp record @a ~ ~ ~ 100000000000000000000000000000000000000 1 0') bot.tellraw(selector, [
}, 0) {
bot.core.run('minecraft:tellraw @a ["",{"text":"Eaglercrash started","color":"white"}]') text: 'Eaglercrash is now ',
} color: 'white'
if (args[1] === 'off') { },
clearInterval(bot.eaglercrash) {
bot.eaglercrashstarted = false text: 'on',
bot.core.run('minecraft:tellraw @a ["",{"text":"Eaglercrash stopped","color":"white"}]') color: 'green'
}
])
break
case 'off':
bot.eaglercrash.off()
bot.tellraw(selector, [
{
text: 'Eaglercrash is now ',
color: 'white'
},
{
text: 'off',
color: 'red'
}
])
break
default:
throw new Error('Invalid argument')
} }
} }
} }

25
plugins/cloop.js Normal file
View file

@ -0,0 +1,25 @@
function inject (bot) {
bot.cloop = {
list: [],
add (command, interval, list = true /* list is used in the cloop command listing and eaglercrash */) {
const id = setInterval(() => bot.core.run(command), interval)
const thingsToPush /* ig not the best variable name */ = { id, interval, command, list }
bot.cloop.list.push(thingsToPush)
return thingsToPush
},
remove (item) {
clearInterval(bot.cloop.list[item].id)
bot.cloop.list.splice(item, 1)
},
clear () {
for (const interval of bot.cloop.list) clearInterval(interval.id)
bot.cloop.list = []
}
}
}
module.exports = { inject }

22
plugins/eaglercrash.js Normal file
View file

@ -0,0 +1,22 @@
function inject (bot) {
let id = NaN
bot.eaglercrash = {
on () {
if (!isNaN(id)) throw new Error('Eaglercrash is currently enabled')
const command = 'minecraft:execute as @a[tag=!nomusic] at @s run playsound block.note_block.harp record @a ~ ~ ~ 100000000000000000000000000000000000000 1 0'
bot.cloop.add(
command,
0,
false
)
id = bot.cloop.list.findIndex((cloop) => cloop.command === command) // ig not the best way to find the eaglercrash cloop
},
off () {
if (isNaN(id) /* you can't use !id */) throw new Error('Eaglercrash is currently not enabled')
bot.cloop.remove(id)
id = NaN
}
}
}
module.exports = { inject }