diff --git a/.eslintrc.json b/.eslintrc.json index 57bded6..d5d21d6 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,7 +4,7 @@ "es2021": true }, "extends": [ - "google" + "standard" ], "parserOptions": { "ecmaVersion": "latest", diff --git a/bot.js b/bot.js index 3d248a6..18a32a5 100644 --- a/bot.js +++ b/bot.js @@ -1,20 +1,20 @@ /* eslint-disable max-len */ -const mc = require('minecraft-protocol'); -const crypto = require('crypto'); -const colorConvert = require('color-convert'); -const sleep = require('sleep-promise'); -const generateEaglerUsername = require('./util/generateEaglerUsername'); -const {EventEmitter} = require('events'); -const {loadPlugins} = require('./util/loadPlugins'); -const uuid = require('uuid-by-string'); -const moment = require('moment-timezone'); -const cowsay = require('cowsay2'); -const cows = require('cowsay2/cows'); -const util = require('node:util'); -const {VM} = require('vm2'); -const randomstring = require('randomstring'); -const mineflayer = require('mineflayer'); +const mc = require('minecraft-protocol') +const crypto = require('crypto') +const colorConvert = require('color-convert') +const sleep = require('sleep-promise') +const generateEaglerUsername = require('./util/generateEaglerUsername') +const { EventEmitter } = require('events') +const { loadPlugins } = require('./util/loadPlugins') +const uuid = require('uuid-by-string') +const moment = require('moment-timezone') +const cowsay = require('cowsay2') +const cows = require('cowsay2/cows') +const util = require('node:util') +const { VM } = require('vm2') +const randomstring = require('randomstring') +const mineflayer = require('mineflayer') /** * makes the bot @@ -26,63 +26,63 @@ const mineflayer = require('mineflayer'); * @param {object} rl readline. * @return {object} the bot object */ -async function createBot(server, config, getBots, setNewBot, dcclient, rl) { - const bot = new EventEmitter(); +async function createBot (server, config, getBots, setNewBot, dcclient, rl) { + const bot = new EventEmitter() bot.options = { - username: !server.kaboom ? - 'ChomeNS_Bot' : - randomstring.generate(8), + username: !server.kaboom + ? 'ChomeNS_Bot' + : randomstring.generate(8), host: server.host, port: server.port, version: config.version, kaboom: server.kaboom, checkTimeoutInterval: '30000', keepAlive: false, - hideErrors: true, - }; - bot._client = mc.createClient(bot.options); - bot.version = bot._client.version; - bot.write = (name, data) => bot._client.write(name, data); + hideErrors: true + } + bot._client = mc.createClient(bot.options) + bot.version = bot._client.version + bot.write = (name, data) => bot._client.write(name, data) bot.end = (reason = 'end', event) => { - bot.emit('end', reason, event); - bot.removeAllListeners(); - bot._client.end(); - bot._client.removeAllListeners(); - }; - bot.visibility = false; - bot.getBots = getBots; - bot.getplayerusername = {}; + bot.emit('end', reason, event) + bot.removeAllListeners() + bot._client.end() + bot._client.removeAllListeners() + } + bot.visibility = false + bot.getBots = getBots + bot.getplayerusername = {} - await sleep(200); + await sleep(200) - setNewBot(bot.options.host, bot); + setNewBot(bot.options.host, bot) - await loadPlugins(bot, dcclient, config, rl); + await loadPlugins(bot, dcclient, config, rl) - const channel = dcclient.channels.cache.get(config.discord.servers[bot.options.host]); + const channel = dcclient.channels.cache.get(config.discord.servers[bot.options.host]) - bot.playersAddedPlayers = {}; - bot.getplayerusername = {}; + bot.playersAddedPlayers = {} + bot.getplayerusername = {} - bot._client.on('login', async function(data) { - bot.entityId = data.entityId; - bot.uuid = bot._client.uuid; - bot.username = bot._client.username; - chatMessage = require('prismarine-chat')(bot.version); - const mcData = require('minecraft-data')(bot.version); + bot._client.on('login', async function (data) { + bot.entityId = data.entityId + bot.uuid = bot._client.uuid + bot.username = bot._client.username + const chatMessage = require('prismarine-chat')(bot.version) + const mcData = require('minecraft-data')(bot.version) bot.console.info( - `Successfully logged in to: ${bot.options.host}:${bot.options.port}`, - ); + `Successfully logged in to: ${bot.options.host}:${bot.options.port}` + ) channel.send( - `Successfully logged in to: \`${bot.options.host}:${bot.options.port}\``, - ); - bot.eaglercrashstarted = false; + `Successfully logged in to: \`${bot.options.host}:${bot.options.port}\`` + ) + bot.eaglercrashstarted = false bot.vmoptions = { timeout: 2000, sandbox: { - run(cmd) { - bot.core.run(cmd); + run (cmd) { + bot.core.run(cmd) }, mc, mineflayer, @@ -93,19 +93,19 @@ async function createBot(server, config, getBots, setNewBot, dcclient, rl) { chatMessage, crypto, colorConvert, - bruhifyText(message) { + bruhifyText (message) { if ( typeof message !== 'string' - ) throw new SyntaxError('message must be a string'); - bot.bruhifyText = message.substring(0, 1000); + ) throw new SyntaxError('message must be a string') + bot.bruhifyText = message.substring(0, 1000) }, generateEaglerUsername, cowsay, cows, - mcData, - }, - }; - bot.vm = new VM(bot.vmoptions); + mcData + } + } + bot.vm = new VM(bot.vmoptions) // await sleep(1400); // bot.tellraw('@a', [ @@ -126,24 +126,24 @@ async function createBot(server, config, getBots, setNewBot, dcclient, rl) { // color: 'gold', // }, // ]); - }); + }) bot.on('player_added', (player) => { - bot.playersAddedPlayers[player.name] = player.UUID; - bot.getplayerusername[player.UUID] = player.name; - }); + bot.playersAddedPlayers[player.name] = player.UUID + bot.getplayerusername[player.UUID] = player.name + }) - bot._client.on('end', function(reason) { - bot.end(reason, 'end'); - }); + bot._client.on('end', function (reason) { + bot.end(reason, 'end') + }) bot.once('end', (reason, event) => { bot.console.info( - `Disconnected from ${bot.options.host} (${event} event): ${util.inspect(reason)}`, - ); - channel.send(`Disconnected: \`${util.inspect(reason)}\``); + `Disconnected from ${bot.options.host} (${event} event): ${util.inspect(reason)}` + ) + channel.send(`Disconnected: \`${util.inspect(reason)}\``) - let timeout = config.reconnectTimeout; + let timeout = config.reconnectTimeout try { if (reason.text) { @@ -151,35 +151,35 @@ async function createBot(server, config, getBots, setNewBot, dcclient, rl) { 'Wait 5 seconds before connecting, thanks! :)' || reason.text === 'You are logging in too fast, try again later.' - ) timeout = 1000 * 7; + ) timeout = 1000 * 7 } } catch (e) { - bot.console.error(e); + bot.console.error(e) } setTimeout(() => { - bot.end(); - createBot(server, config, getBots, setNewBot, dcclient, rl); - }, timeout); - }); + bot.end() + createBot(server, config, getBots, setNewBot, dcclient, rl) + }, timeout) + }) bot._client.on('keep_alive', (packet) => { - bot.write('keep_alive', {keepAliveId: packet.keepAliveId}); - }); + bot.write('keep_alive', { keepAliveId: packet.keepAliveId }) + }) - bot._client.on('kick_disconnect', function(data) { - const parsed = JSON.parse(data.reason); - bot.end(parsed, 'kick_disconnect'); - }); + bot._client.on('kick_disconnect', function (data) { + const parsed = JSON.parse(data.reason) + bot.end(parsed, 'kick_disconnect') + }) - bot._client.on('disconnect', function(data) { - const parsed = JSON.parse(data.reason); - bot.end(parsed, 'disconnect'); - }); + bot._client.on('disconnect', function (data) { + const parsed = JSON.parse(data.reason) + bot.end(parsed, 'disconnect') + }) - bot._client.on('error', function() {}); + bot._client.on('error', function () {}) - return bot; + return bot }; -module.exports = {createBot}; +module.exports = { createBot } diff --git a/commands/ayunsudo.js b/commands/ayunsudo.js index 044affb..b90cfdd 100644 --- a/commands/ayunsudo.js +++ b/commands/ayunsudo.js @@ -5,10 +5,10 @@ module.exports = { description: 'Sudos everyone on Ayunboom!', trusted: 1, usage: ' ', - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.core.run(`essentials:sudo * ${args.slice(1).join(' ')}`); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.core.run(`essentials:sudo * ${args.slice(1).join(' ')}`) }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { - bot.core.run(`essentials:sudo * ${args.join(' ')}`); - }, -}; + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { + bot.core.run(`essentials:sudo * ${args.join(' ')}`) + } +} diff --git a/commands/botuser.js b/commands/botuser.js index 4ad681a..4b53d24 100644 --- a/commands/botuser.js +++ b/commands/botuser.js @@ -1,19 +1,19 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); +const { MessageEmbed } = require('discord.js') module.exports = { name: 'botuser', alias: [], description: 'Shows the bot\'s username and UUID', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.tellraw(selector, [{text: 'The bot\'s username is: ', color: 'white'}, {text: `${bot.username}`, color: 'gold', clickEvent: {action: 'copy_to_clipboard', value: `${bot.username}`}, hoverEvent: {action: 'show_text', contents: [{text: 'Click here to copy the username to your clipboard', color: 'green'}]}}, {text: ' and the UUID is: '}, {text: `${bot.uuid}`, color: 'aqua', clickEvent: {action: 'copy_to_clipboard', value: `${bot.uuid}`}, hoverEvent: {action: 'show_text', contents: [{text: 'Click here to copy the UUID to your clipboard', color: 'green'}]}}]); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.tellraw(selector, [{ text: 'The bot\'s username is: ', color: 'white' }, { text: `${bot.username}`, color: 'gold', clickEvent: { action: 'copy_to_clipboard', value: `${bot.username}` }, hoverEvent: { action: 'show_text', contents: [{ text: 'Click here to copy the username to your clipboard', color: 'green' }] } }, { text: ' and the UUID is: ' }, { text: `${bot.uuid}`, color: 'aqua', clickEvent: { action: 'copy_to_clipboard', value: `${bot.uuid}` }, hoverEvent: { action: 'show_text', contents: [{ text: 'Click here to copy the UUID to your clipboard', color: 'green' }] } }]) }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Bot\'s User') - .setDescription(`The bot's username is: \`${bot.username}\` and the UUID is: \`${bot.uuid}\``); - channeldc.send({embeds: [Embed]}); - }, -}; + .setColor('#FFFF00') + .setTitle('Bot\'s User') + .setDescription(`The bot's username is: \`${bot.username}\` and the UUID is: \`${bot.uuid}\``) + channeldc.send({ embeds: [Embed] }) + } +} diff --git a/commands/botvisibility.js b/commands/botvisibility.js index 990ac1f..cfab1cc 100644 --- a/commands/botvisibility.js +++ b/commands/botvisibility.js @@ -1,5 +1,5 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); +const { MessageEmbed } = require('discord.js') module.exports = { name: 'botvisibility', alias: ['botvis', 'togglevis', 'togglevisibility'], @@ -7,58 +7,58 @@ module.exports = { usage: [ ' ', ' ', - '', + '' ], trusted: 1, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { if (args[1] === 'true' || args[1] === 'on') { - bot.visibility = true; - bot.chat('/essentials:vanish disable'); - bot.tellraw(selector, [{text: 'The bot\'s visibility is now ', color: 'white'}, {text: 'visible', color: 'green'}]); + bot.visibility = true + bot.chat('/essentials:vanish disable') + bot.tellraw(selector, [{ text: 'The bot\'s visibility is now ', color: 'white' }, { text: 'visible', color: 'green' }]) } else if (args[1] === 'false' || args[1] === 'off') { - bot.visibility = false; - bot.chat('/essentials:vanish enable'); - bot.tellraw(selector, [{text: 'The bot\'s visibility is now ', color: 'white'}, {text: 'invisible', color: 'gold'}]); + bot.visibility = false + bot.chat('/essentials:vanish enable') + bot.tellraw(selector, [{ text: 'The bot\'s visibility is now ', color: 'white' }, { text: 'invisible', color: 'gold' }]) } else if (!args[1]) { - bot.visibility = !bot.visibility; - const greenOrGold = bot.visibility ? 'green' : 'gold'; - const visibleOrInvisible = bot.visibility ? 'visible' : 'invisible'; - const enableOrDisable = bot.visibility ? 'disable' : 'enable'; - bot.chat(`/essentials:vanish ${enableOrDisable}`); - bot.tellraw(selector, [{text: 'The bot\'s visibility is now ', color: 'white'}, {text: visibleOrInvisible, color: greenOrGold}]); + bot.visibility = !bot.visibility + const greenOrGold = bot.visibility ? 'green' : 'gold' + const visibleOrInvisible = bot.visibility ? 'visible' : 'invisible' + const enableOrDisable = bot.visibility ? 'disable' : 'enable' + bot.chat(`/essentials:vanish ${enableOrDisable}`) + bot.tellraw(selector, [{ text: 'The bot\'s visibility is now ', color: 'white' }, { text: visibleOrInvisible, color: greenOrGold }]) } else { - throw new SyntaxError('Invalid argument'); + throw new SyntaxError('Invalid argument') } }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { if (args[0] === 'true' || args[0] === 'on') { - bot.visibility = true; - bot.chat('/essentials:vanish disable'); + bot.visibility = true + bot.chat('/essentials:vanish disable') const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Bot\'s Visibility') - .setDescription('The bot\'s visibility is now visible'); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Bot\'s Visibility') + .setDescription('The bot\'s visibility is now visible') + channeldc.send({ embeds: [Embed] }) } else if (args[0] === 'false' || args[0] === 'off') { - bot.visibility = false; - bot.chat('/essentials:vanish enable'); + bot.visibility = false + bot.chat('/essentials:vanish enable') const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Bot\'s Visibility') - .setDescription('The bot\'s visibility is now invisible'); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Bot\'s Visibility') + .setDescription('The bot\'s visibility is now invisible') + channeldc.send({ embeds: [Embed] }) } else if (!args[0]) { - bot.visibility = !bot.visibility; - const visibleOrInvisible = bot.visibility ? 'visible' : 'invisible'; - const enableOrDisable = bot.visibility ? 'disable' : 'enable'; - bot.chat(`/essentials:vanish ${enableOrDisable}`); + bot.visibility = !bot.visibility + const visibleOrInvisible = bot.visibility ? 'visible' : 'invisible' + const enableOrDisable = bot.visibility ? 'disable' : 'enable' + bot.chat(`/essentials:vanish ${enableOrDisable}`) const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Bot\'s Visibility') - .setDescription(`The bot\'s visibility is now ${visibleOrInvisible}`); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Bot\'s Visibility') + .setDescription(`The bot's visibility is now ${visibleOrInvisible}`) + channeldc.send({ embeds: [Embed] }) } else { - throw new SyntaxError('Invalid argument'); + throw new SyntaxError('Invalid argument') } - }, -}; + } +} diff --git a/commands/bruhify.js b/commands/bruhify.js index cda9d5e..23a408c 100644 --- a/commands/bruhify.js +++ b/commands/bruhify.js @@ -1,20 +1,20 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); +const { MessageEmbed } = require('discord.js') module.exports = { name: 'bruhify', alias: [], description: 'RecycleBot bruhify but actionbar', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.bruhifyText = args.join(' '); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.bruhifyText = args.join(' ') }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc) { - bot.bruhifyText = args.join(' '); + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc) { + bot.bruhifyText = args.join(' ') const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Bruhify') - .setDescription(`Bruhify set to: ${bot.bruhifyText}`); - channeldc.send({embeds: [Embed]}); - }, -}; + .setColor('#FFFF00') + .setTitle('Bruhify') + .setDescription(`Bruhify set to: ${bot.bruhifyText}`) + channeldc.send({ embeds: [Embed] }) + } +} diff --git a/commands/cb.js b/commands/cb.js index cbeeddd..88b0c1c 100644 --- a/commands/cb.js +++ b/commands/cb.js @@ -5,10 +5,10 @@ module.exports = { description: 'Executes a command in the command core', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.core.run(args.join(' ')); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.core.run(args.join(' ')) }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc) { - bot.core.run(args.join(' ')); - }, -}; + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc) { + bot.core.run(args.join(' ')) + } +} diff --git a/commands/changelog.js b/commands/changelog.js index 1b17662..62c6c6f 100644 --- a/commands/changelog.js +++ b/commands/changelog.js @@ -1,42 +1,42 @@ /* eslint-disable max-len */ -const changelog = require('../changelog.json'); -const {MessageEmbed} = require('discord.js'); +const changelog = require('../changelog.json') +const { MessageEmbed } = require('discord.js') module.exports = { name: 'changelog', alias: ['changelogs'], description: 'Shows the bot\'s changelog', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - const component = []; + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + const component = [] - component.push({text: 'Changelogs ', color: 'green'}); - component.push({text: '(', color: 'dark_gray'}); - component.push({text: changelog.length, color: 'gray'}); - component.push({text: ')', color: 'dark_gray'}); - component.push({text: ':', color: 'gray'}); - component.push('\n'); + component.push({ text: 'Changelogs ', color: 'green' }) + component.push({ text: '(', color: 'dark_gray' }) + component.push({ text: changelog.length, color: 'gray' }) + component.push({ text: ')', color: 'dark_gray' }) + component.push({ text: ':', color: 'gray' }) + component.push('\n') changelog.forEach((message, number) => { - number += 1; - component.push({text: number, color: 'gray'}); - component.push({text: ' - ', color: 'dark_gray'}); - component.push({text: message, color: 'gray'}); - component.push('\n'); - }); - component.pop(); + number += 1 + component.push({ text: number, color: 'gray' }) + component.push({ text: ' - ', color: 'dark_gray' }) + component.push({ text: message, color: 'gray' }) + component.push('\n') + }) + component.pop() - bot.tellraw(selector, component); + bot.tellraw(selector, component) }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc) { - let changelogs = ''; + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc) { + let changelogs = '' changelog.forEach((message, number) => { - number += 1; - changelogs += `\`${number}\` - \`${message}\`` + '\n'; - }); + number += 1 + changelogs += `\`${number}\` - \`${message}\`` + '\n' + }) const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle(`Changelogs (${changelog.length})`) - .setDescription(changelogs); - channeldc.send({embeds: [Embed]}); - }, -}; + .setColor('#FFFF00') + .setTitle(`Changelogs (${changelog.length})`) + .setDescription(changelogs) + channeldc.send({ embeds: [Embed] }) + } +} diff --git a/commands/clearchat.js b/commands/clearchat.js index 177f4b7..8c15680 100644 --- a/commands/clearchat.js +++ b/commands/clearchat.js @@ -6,20 +6,18 @@ module.exports = { description: 'Clears the chat', usage: '[specific] ', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { if (args[0] === 'specific') { - bot.tellraw(args[1], [{text: `${'\n'.repeat(100)}`, color: 'white'}, {text: `Your chat has been cleared by ${username}.`, color: 'dark_green'}]); - return; + bot.tellraw(args[1], [{ text: `${'\n'.repeat(100)}`, color: 'white' }, { text: `Your chat has been cleared by ${username}.`, color: 'dark_green' }]) } else { - bot.tellraw(selector, [{text: `${'\n'.repeat(100)}`, color: 'white'}, {text: 'The chat has been cleared.', color: 'dark_green'}]); + bot.tellraw('@a', [{ text: `${'\n'.repeat(100)}`, color: 'white' }, { text: 'The chat has been cleared.', color: 'dark_green' }]) } }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { if (args[0] === 'specific') { - bot.tellraw(args[1], [{text: `${'\n'.repeat(100)}`, color: 'white'}, {text: `Your chat has been cleared by ${username} (on Discord).`, color: 'dark_green'}]); - return; + bot.tellraw(args[1], [{ text: `${'\n'.repeat(100)}`, color: 'white' }, { text: `Your chat has been cleared by ${username} (on Discord).`, color: 'dark_green' }]) } else { - bot.tellraw(selector, [{text: `${'\n'.repeat(100)}`, color: 'white'}, {text: 'The chat has been cleared.', color: 'dark_green'}]); + bot.tellraw('@a', [{ text: `${'\n'.repeat(100)}`, color: 'white' }, { text: 'The chat has been cleared.', color: 'dark_green' }]) } - }, -}; + } +} diff --git a/commands/clearchatqueue.js b/commands/clearchatqueue.js index 725355e..58000fe 100644 --- a/commands/clearchatqueue.js +++ b/commands/clearchatqueue.js @@ -5,14 +5,14 @@ module.exports = { alias: ['ccq'], usage: '', trusted: 0, - execute: function(bot) { + execute: function (bot) { if (bot.queue[0]) { - bot.chatQueue = []; + bot.chatQueue = [] } }, - discordExecute: function(bot) { + discordExecute: function (bot) { if (bot.queue[0]) { - bot.chatQueue = []; + bot.chatQueue = [] } - }, -}; + } +} diff --git a/commands/cloop.js b/commands/cloop.js index 56d5689..36e1120 100644 --- a/commands/cloop.js +++ b/commands/cloop.js @@ -1,59 +1,59 @@ /* 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); +const { MessageEmbed } = require('discord.js') +function add (command, interval, bot) { + const id = setInterval(() => bot.core.run(command), interval) - bot.cloops.push({id, interval, command}); + bot.cloops.push({ id, interval, command }) } -function remove(item, bot) { - clearInterval(bot.cloops[item].id); +function remove (item, bot) { + clearInterval(bot.cloops[item].id) - bot.cloops.splice(item, 1); + bot.cloops.splice(item, 1) } -function clear(bot) { - for (const interval of bot.cloops) clearInterval(interval.id); +function clear (bot) { + for (const interval of bot.cloops) clearInterval(interval.id) - bot.cloops = []; + bot.cloops = [] } -function list(bot, discord, channeldc, selector) { - const message = []; +function list (bot, discord, channeldc, selector) { + 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.push(id) + message.push(' > ') + message.push(`\`${cloop.command}\``) + message.push(' - ') + message.push(cloop.interval) + message.push('\n') } - message.pop(); + message.pop() const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Cloops') - .setDescription(message.join('')); - channeldc.send({embeds: [Embed]}); - return; + .setColor('#FFFF00') + .setTitle('Cloops') + .setDescription(message.join('')) + channeldc.send({ embeds: [Embed] }) + return } - message.push({text: 'Cloops:', color: 'green'}); - message.push('\n'); + 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({ 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(); + message.pop() - bot.tellraw(selector, message); + bot.tellraw(selector, message) } module.exports = { name: 'cloop', @@ -63,55 +63,55 @@ module.exports = { ' ', ' ', ' ', - ' ', + ' ' ], trusted: 1, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - if (!bot.cloops) bot.cloops = []; + execute: function (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'}]); + 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); + 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'}]); + 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'}]); + clear(bot) + bot.tellraw(selector, [{ text: 'Removed all looped commands', color: 'white' }]) } else { - throw new SyntaxError('Invalid argument'); + throw new SyntaxError('Invalid argument') } }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { - if (!bot.cloops) bot.cloops = []; + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { + 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); + 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]}); + .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') { - list(bot, true, channeldc); + list(bot, true, channeldc) } else if (args[0] === 'remove') { - remove(args[1], bot); + remove(args[1], bot) const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Cloop') - .setDescription(`Removed cloop \`${args[1]}\``); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Cloop') + .setDescription(`Removed cloop \`${args[1]}\``) + channeldc.send({ embeds: [Embed] }) } else if (args[0] === 'removeall') { - clear(bot); + clear(bot) const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Cloop') - .setDescription('Removed all looped commands'); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Cloop') + .setDescription('Removed all looped commands') + channeldc.send({ embeds: [Embed] }) } else { - throw new Error('Invalid argument'); + throw new Error('Invalid argument') } - }, -}; + } +} diff --git a/commands/cowsay.js b/commands/cowsay.js index 22d0f6c..312efb0 100644 --- a/commands/cowsay.js +++ b/commands/cowsay.js @@ -1,22 +1,22 @@ /* eslint-disable max-len */ -const cowsay = require('cowsay2'); -const cows = require('cowsay2/cows'); -const {MessageEmbed} = require('discord.js'); +const cowsay = require('cowsay2') +const cows = require('cowsay2/cows') +const { MessageEmbed } = require('discord.js') module.exports = { name: 'cowsay', alias: [], description: 'Moo', usage: [ ' ', - '', + '' ], trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - if (args[0]==='list') { - const listed = Object.keys(cows); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + if (args[0] === 'list') { + const listed = Object.keys(cows) - let primary = true; - const message = []; + let primary = true + const message = [] listed.forEach((value) => { message.push({ @@ -24,21 +24,21 @@ module.exports = { color: (!((primary = !primary)) ? 'gold' : 'yellow'), clickEvent: { action: 'suggest_command', - value: `${prefix}cowsay ${value} `, - }, - }); - }); + value: `${prefix}cowsay ${value} ` + } + }) + }) - bot.tellraw(selector, message); + bot.tellraw(selector, message) } else { - bot.tellraw(selector, {text: cowsay.say(args.slice(1).join(' '), {cow: cows[args[0]]})}); + bot.tellraw(selector, { text: cowsay.say(args.slice(1).join(' '), { cow: cows[args[0]] }) }) } }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message, config) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message, config) { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Cowsay') - .setDescription(cowsay.say(args.slice(1).join(' '), {cow: cows[args[0]]})); - channeldc.send({embeds: [Embed]}); - }, -}; + .setColor('#FFFF00') + .setTitle('Cowsay') + .setDescription(cowsay.say(args.slice(1).join(' '), { cow: cows[args[0]] })) + channeldc.send({ embeds: [Embed] }) + } +} diff --git a/commands/crashserver.js b/commands/crashserver.js index e6e08fb..0541781 100644 --- a/commands/crashserver.js +++ b/commands/crashserver.js @@ -1,16 +1,16 @@ /* eslint-disable max-len */ -const sleep = require('sleep-promise'); +const sleep = require('sleep-promise') /** * crash server * @param {object} bot bot object */ -async function crash(bot) { - bot.core.run('data merge storage crash {data:[0]}'); +async function crash (bot) { + bot.core.run('data merge storage crash {data:[0]}') - await sleep(1000); + await sleep(1000) - for (let i = 0; i < 256; i++) bot.core.run('data modify storage crash data append from storage crash data[]'); + for (let i = 0; i < 256; i++) bot.core.run('data modify storage crash data append from storage crash data[]') } module.exports = { @@ -19,10 +19,10 @@ module.exports = { description: 'Crashes the server', usage: '', trusted: 1, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - crash(bot); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + crash(bot) }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { - crash(bot); - }, -}; + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { + crash(bot) + } +} diff --git a/commands/creator.js b/commands/creator.js index 2bc444c..16e2ade 100644 --- a/commands/creator.js +++ b/commands/creator.js @@ -1,19 +1,19 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); +const { MessageEmbed } = require('discord.js') module.exports = { name: 'creator', alias: [], description: 'Shows the bot\'s creator', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.tellraw(selector, [{text: 'ChomeNS Bot ', color: 'yellow'}, {text: 'was created by ', color: 'white'}, {text: 'chayapak', color: 'gold'}]); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.tellraw(selector, [{ text: 'ChomeNS Bot ', color: 'yellow' }, { text: 'was created by ', color: 'white' }, { text: 'chayapak', color: 'gold' }]) }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Creator') - .setDescription('ChomeNS Bot was created by chayapak'); - channeldc.send({embeds: [Embed]}); - }, -}; + .setColor('#FFFF00') + .setTitle('Creator') + .setDescription('ChomeNS Bot was created by chayapak') + channeldc.send({ embeds: [Embed] }) + } +} diff --git a/commands/discord.js b/commands/discord.js index 40abdab..8f3a909 100644 --- a/commands/discord.js +++ b/commands/discord.js @@ -5,20 +5,20 @@ module.exports = { description: 'Shows the discord invite', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { bot.tellraw(selector, [ { text: 'The Discord invite is ', - color: 'white', + color: 'white' }, { text: 'https://discord.gg/xdgCkUyaA4', color: 'blue', clickEvent: { action: 'open_url', - value: 'https://discord.gg/xdgCkUyaA4', - }, - }, - ]); - }, -}; + value: 'https://discord.gg/xdgCkUyaA4' + } + } + ]) + } +} diff --git a/commands/draw.js b/commands/draw.js index 36ef563..3502153 100644 --- a/commands/draw.js +++ b/commands/draw.js @@ -1,7 +1,7 @@ /* eslint-disable max-len */ -const {resize} = require('../util/image'); -const axios = require('axios'); -const sharp = require('sharp'); +const { resize } = require('../util/image') +const axios = require('axios') +const sharp = require('sharp') module.exports = { name: 'draw', @@ -9,32 +9,32 @@ module.exports = { alias: [], trusted: 0, usage: '', - execute: async function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: async function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { try { - const url = args.join(' '); + const url = args.join(' ') const image = await axios.get('https://http-proxy.nongsonchome.repl.co', { params: { - uri: url, + uri: url }, - responseType: 'arraybuffer', - }); + responseType: 'arraybuffer' + }) - const loaded = sharp(image.data); + const loaded = sharp(image.data) const metadata = await loaded - .metadata(); + .metadata() - const {width, height} = resize(metadata.width, metadata.height); + const { width, height } = resize(metadata.width, metadata.height) - const {data, info} = await loaded - .resize({fit: 'fill', kernel: 'nearest', width, height}) - .raw() - .toBuffer({resolveWithObject: true}); + const { data, info } = await loaded + .resize({ fit: 'fill', kernel: 'nearest', width, height }) + .raw() + .toBuffer({ resolveWithObject: true }) - bot.draw(data, info); + bot.draw(data, info) } catch (e) { - bot.tellraw(selector, {text: 'SyntaxError: Invalid URL', color: 'red'}); + bot.tellraw(selector, { text: 'SyntaxError: Invalid URL', color: 'red' }) } - }, -}; + } +} diff --git a/commands/eaglercrash.js b/commands/eaglercrash.js index 076206d..892857a 100644 --- a/commands/eaglercrash.js +++ b/commands/eaglercrash.js @@ -5,18 +5,18 @@ module.exports = { description: 'Lags Eaglercraft and crashes it', usage: ' ', trusted: 1, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { if (args[1] === 'on') { - bot.eaglercrashstarted = true; - bot.eaglercrash = setInterval(async function() { - if (bot.eaglercrashstarted === true) return bot.core.run('minecraft:playsound block.note_block.harp record @a ~ ~ ~ 100000000000000000000000000000000000000 1 0'); - }, 0); - bot.core.run('minecraft:tellraw @a ["",{"text":"Eaglercrash started","color":"white"}]'); + bot.eaglercrashstarted = true + bot.eaglercrash = setInterval(async function () { + if (bot.eaglercrashstarted === true) return bot.core.run('minecraft:playsound block.note_block.harp record @a ~ ~ ~ 100000000000000000000000000000000000000 1 0') + }, 0) + bot.core.run('minecraft:tellraw @a ["",{"text":"Eaglercrash started","color":"white"}]') } if (args[1] === 'off') { - clearInterval(bot.eaglercrash); - bot.eaglercrashstarted = false; - bot.core.run('minecraft:tellraw @a ["",{"text":"Eaglercrash stopped","color":"white"}]'); + clearInterval(bot.eaglercrash) + bot.eaglercrashstarted = false + bot.core.run('minecraft:tellraw @a ["",{"text":"Eaglercrash stopped","color":"white"}]') } - }, -}; + } +} diff --git a/commands/echo.js b/commands/echo.js index abee131..6d92a90 100644 --- a/commands/echo.js +++ b/commands/echo.js @@ -5,10 +5,10 @@ module.exports = { description: 'Says a message', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.chat(args.join(' ')); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.chat(args.join(' ')) }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc) { - bot.chat(args.join(' ')); - }, -}; + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc) { + bot.chat(args.join(' ')) + } +} diff --git a/commands/end.js b/commands/end.js index a38eab2..2898ec4 100644 --- a/commands/end.js +++ b/commands/end.js @@ -5,10 +5,10 @@ module.exports = { description: 'Ends the bot\'s client', usage: '', trusted: 1, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.end('end command'); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.end('end command') }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { - bot.end('end command'); - }, -}; + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { + bot.end('end command') + } +} diff --git a/commands/entity.js b/commands/entity.js index a79d39e..c37186d 100644 --- a/commands/entity.js +++ b/commands/entity.js @@ -5,11 +5,11 @@ module.exports = { description: 'Summon any entity!', usage: '[specific] ', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { // eslint-disable-next-line no-unused-vars - const mcData = require('minecraft-data')(bot.version); + const mcData = require('minecraft-data')(bot.version) - throw new Error('Execute Bypass is patched so this command will be broken for now!'); + throw new Error('Execute Bypass is patched so this command will be broken for now!') // if (!args[0]) return; // const entity = mcData.entitiesByName[args[0]]; // if (!entity) throw new SyntaxError('Invalid entity'); @@ -20,5 +20,5 @@ module.exports = { // bot.core.run('minecraft:execute unless entity @s[name= run ] run execute as @a at ' + args[2] + ' run summon minecraft:' + entity.name); // bot.tellraw(selector, [{text: `Entity `, color: 'white'}, {text: entity.displayName, color: 'green'}, {text: ' spawning at ', color: 'white'}, {text: `${args[2]}`, color: 'aqua'}]); // } - }, -}; + } +} diff --git a/commands/eval.js b/commands/eval.js index 609ac69..a157f37 100644 --- a/commands/eval.js +++ b/commands/eval.js @@ -1,10 +1,10 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); -const {VM} = require('vm2'); -const axios = require('axios'); -const util = require('util'); -const querystring = require('querystring'); -const {stylize} = require('../util/colors/minecraft'); +const { MessageEmbed } = require('discord.js') +const { VM } = require('vm2') +const axios = require('axios') +const util = require('util') +const querystring = require('querystring') +const { stylize } = require('../util/colors/minecraft') module.exports = { name: 'eval', alias: [], @@ -13,63 +13,59 @@ module.exports = { usage: [ ' ', '', - ' ', + ' ' ], - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { if (args[0] === 'run') { try { - bot.tellraw(selector, {text: `${util.inspect(bot.vm.run(args.slice(1).join(' ')), {stylize: stylize})}`.substring(0, 32000)}); + bot.tellraw(selector, { text: `${util.inspect(bot.vm.run(args.slice(1).join(' ')), { stylize })}`.substring(0, 32000) }) } catch (err) { - bot.tellraw(selector, {text: `${util.inspect(err).replaceAll('runner', 'chayapak1')}`, color: 'red'}); + bot.tellraw(selector, { text: `${util.inspect(err).replaceAll('runner', 'chayapak1')}`, color: 'red' }) } } if (args[0] === 'reset') { - bot.vm = new VM(bot.vmoptions); + bot.vm = new VM(bot.vmoptions) } if (args[0] === 'server') { axios - .post(config.eval.serverUrl, querystring.stringify({ - html: false, - showErrorMsg: false, - colors: 'minecraft', - code: args[1], - })).then((res) => { - bot.tellraw(selector, {text: `${res.data}`}); - }).catch((err) => { - bot.tellraw(selector, {text: `${err}`, color: 'red'}); - }); + .post(config.eval.serverUrl, querystring.stringify({ + html: false, + showErrorMsg: false, + colors: 'minecraft', + code: args[1] + })).then((res) => { + bot.tellraw(selector, { text: `${res.data}` }) + }).catch((err) => { + bot.tellraw(selector, { text: `${err}`, color: 'red' }) + }) } }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message, config) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message, config) { if (args[0] === 'run') { - try { - const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Output') - .setDescription(`\`\`\`${util.inspect(bot.vm.run(args.slice(1).join(' '))).substring(0, 1950)}\`\`\``); - channeldc.send({embeds: [Embed]}); - } catch (err) { - throw err; - } + const Embed = new MessageEmbed() + .setColor('#FFFF00') + .setTitle('Output') + .setDescription(`\`\`\`${util.inspect(bot.vm.run(args.slice(1).join(' '))).substring(0, 1950)}\`\`\``) + channeldc.send({ embeds: [Embed] }) } else if (args[0] === 'reset') { - bot.vm = new VM(bot.vmoptions); + bot.vm = new VM(bot.vmoptions) } else if (args[0] === 'server') { axios - .post(config.eval.serverUrl, querystring.stringify({ - html: false, - showErrorMsg: false, - code: args[1], - })).then((res) => { - const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Output') - .setDescription(`\`\`\`${res.data}\`\`\``); - channeldc.send({embeds: [Embed]}); - }).catch((err) => { - throw err; - }); + .post(config.eval.serverUrl, querystring.stringify({ + html: false, + showErrorMsg: false, + code: args[1] + })).then((res) => { + const Embed = new MessageEmbed() + .setColor('#FFFF00') + .setTitle('Output') + .setDescription(`\`\`\`${res.data}\`\`\``) + channeldc.send({ embeds: [Embed] }) + }).catch((err) => { + throw err + }) } else { - throw new SyntaxError('Invalid argument'); + throw new SyntaxError('Invalid argument') } - }, -}; + } +} diff --git a/commands/executebypass.js b/commands/executebypass.js index 79cdc5c..c460d63 100644 --- a/commands/executebypass.js +++ b/commands/executebypass.js @@ -5,7 +5,7 @@ module.exports = { description: 'Execute command bypassed', usage: ' ', trusted: 1, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.core.run('minecraft:execute unless entity @s[name= run ] run ' + args.slice(1).join(' ')); - }, -}; + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.core.run('minecraft:execute unless entity @s[name= run ] run ' + args.slice(1).join(' ')) + } +} diff --git a/commands/gamemodeall.js b/commands/gamemodeall.js index 2683d0e..ab42b42 100644 --- a/commands/gamemodeall.js +++ b/commands/gamemodeall.js @@ -5,7 +5,7 @@ module.exports = { description: 'Gamemode everyone', usage: ' ', trusted: 1, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.core.run(`minecraft:execute unless entity @s[name= run ] run gamemode ${args[1]} @a[name=!${bot.username}]`); - }, -}; + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.core.run(`minecraft:execute unless entity @s[name= run ] run gamemode ${args[1]} @a[name=!${bot.username}]`) + } +} diff --git a/commands/help.js b/commands/help.js index 6ba5b45..a026a35 100644 --- a/commands/help.js +++ b/commands/help.js @@ -1,69 +1,69 @@ /* eslint-disable require-jsdoc */ /* eslint-disable no-var */ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); +const { MessageEmbed } = require('discord.js') module.exports = { name: 'help', alias: ['heko', 'cmds', 'commands'], description: 'Shows the help', usage: '[command]', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { if (args[0]) { for (const command of bot.command_handler.commands) { - function run() { - let alias = command.name; + function run () { + let alias = command.name if (command.alias.toString() !== '') { - alias = command.alias.join(', '); + alias = command.alias.join(', ') } - const usage = []; + const usage = [] if (typeof command.usage === 'string') { - usage.push({text: `${prefix}${command.name} `, color: 'gold'}); - usage.push({text: command.usage, color: 'aqua'}); + usage.push({ text: `${prefix}${command.name} `, color: 'gold' }) + usage.push({ text: command.usage, color: 'aqua' }) } else { command.usage.forEach((value) => { - usage.push({text: `${prefix}${command.name} `, color: 'gold'}); - usage.push({text: value, color: 'aqua'}); - usage.push('\n'); - }); - usage.pop(); + usage.push({ text: `${prefix}${command.name} `, color: 'gold' }) + usage.push({ text: value, color: 'aqua' }) + usage.push('\n') + }) + usage.pop() } - const component = []; - component.push({text: prefix + command.name, color: 'gold'}); - component.push({text: ` (${alias})`, color: 'white'}); - component.push({text: ' - ', color: 'gray'}); - component.push({text: command.description, color: 'gray'}); + const component = [] + component.push({ text: prefix + command.name, color: 'gold' }) + component.push({ text: ` (${alias})`, color: 'white' }) + component.push({ text: ' - ', color: 'gray' }) + component.push({ text: command.description, color: 'gray' }) - component.push('\n'); + component.push('\n') - component.push({text: 'Trust level: ', color: 'green'}); - component.push({text: command.trusted, color: 'yellow'}); + component.push({ text: 'Trust level: ', color: 'green' }) + component.push({ text: command.trusted, color: 'yellow' }) - component.push('\n'); + component.push('\n') - component.push({text: 'Supported on Discord: ', color: 'green'}); - component.push({text: command.discordExecute ? 'true' : 'false', color: 'gold'}); + component.push({ text: 'Supported on Discord: ', color: 'green' }) + component.push({ text: command.discordExecute ? 'true' : 'false', color: 'gold' }) - component.push('\n'); + component.push('\n') - component.push(usage); + component.push(usage) - bot.tellraw(selector, component); + bot.tellraw(selector, component) } - if (command.name === args[0]) run(); + if (command.name === args[0]) run() for (const alias of command.alias) { - if (alias === args[0]) run(); + if (alias === args[0]) run() } }; } else { - const generalCommands = []; - const trustedCommands = []; - const ownerCommands = []; - function component(command, color) { + const generalCommands = [] + const trustedCommands = [] + const ownerCommands = [] + function component (command, color) { return { text: command.name + ' ', color, @@ -71,72 +71,72 @@ module.exports = { action: 'show_text', contents: [{ text: 'Click here to see the information for this command', - color: 'green', - }], + color: 'green' + }] }, clickEvent: { action: 'run_command', - value: `${prefix}help ${command.name}`, - }, - }; + value: `${prefix}help ${command.name}` + } + } }; for (const command of bot.command_handler.commands) { - if (command.trusted !== 0) continue; - generalCommands.push(component(command, 'green')); + if (command.trusted !== 0) continue + generalCommands.push(component(command, 'green')) } for (const command of bot.command_handler.commands) { - if (command.trusted !== 1) continue; - trustedCommands.push(component(command, 'red')); + if (command.trusted !== 1) continue + trustedCommands.push(component(command, 'red')) } for (const command of bot.command_handler.commands) { - if (command.trusted !== 2) continue; - ownerCommands.push(component(command, 'dark_red')); + if (command.trusted !== 2) continue + ownerCommands.push(component(command, 'dark_red')) } - const pre = [{text: 'Commands ', color: 'gray'}, {text: '(', color: 'dark_gray'}, {text: 'Length: ', color: 'gray'}, {text: bot.command_handler.commands.length, color: 'green'}, {text: ') ', color: 'dark_gray'}, {text: '(', color: 'dark_gray'}, {text: '⬤ Public', color: 'green'}, {text: ' ⬤ Trusted', color: 'red'}, {text: ' ⬤ Owner', color: 'dark_red'}, {text: ') - ', color: 'dark_gray'}]; - bot.tellraw(selector, [pre, generalCommands, trustedCommands, ownerCommands]); + const pre = [{ text: 'Commands ', color: 'gray' }, { text: '(', color: 'dark_gray' }, { text: 'Length: ', color: 'gray' }, { text: bot.command_handler.commands.length, color: 'green' }, { text: ') ', color: 'dark_gray' }, { text: '(', color: 'dark_gray' }, { text: '⬤ Public', color: 'green' }, { text: ' ⬤ Trusted', color: 'red' }, { text: ' ⬤ Owner', color: 'dark_red' }, { text: ') - ', color: 'dark_gray' }] + bot.tellraw(selector, [pre, generalCommands, trustedCommands, ownerCommands]) } }, - discordExecute: async function(bot, username, usernameraw, sender, prefix, args, channeldc) { + discordExecute: async function (bot, username, usernameraw, sender, prefix, args, channeldc) { if (args[0]) { for (const command of bot.command_handler.commands) { - function run() { - let alias = command.name; + function run () { + let alias = command.name if (command.alias.toString() !== '') { - alias = command.alias.join(', '); + alias = command.alias.join(', ') } const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle(`${prefix + command.name} (${alias}) - ${command.description}`) - .setDescription(`Trust level: ${command.trusted} + .setColor('#FFFF00') + .setTitle(`${prefix + command.name} (${alias}) - ${command.description}`) + .setDescription(`Trust level: ${command.trusted} Supported: ${command.discordExecute ? 'true' : 'false'} - ${prefix + command.name} ${command.usage}`, - ); - channeldc.send({embeds: [Embed]}); + ${prefix + command.name} ${command.usage}` + ) + channeldc.send({ embeds: [Embed] }) } - if (command.name === args[0]) run(); + if (command.name === args[0]) run() for (const alias of command.alias) { - if (alias === args[0]) run(); + if (alias === args[0]) run() } }; } else { - let supportedCommands = ''; - let unsupportedCommands = ''; + let supportedCommands = '' + let unsupportedCommands = '' for (const command of bot.command_handler.commands) { - if (!command.discordExecute) continue; - supportedCommands += command.name + ' '; + if (!command.discordExecute) continue + supportedCommands += command.name + ' ' } for (const command of bot.command_handler.commands) { - if (command.discordExecute) continue; - unsupportedCommands += command.name + ' '; + if (command.discordExecute) continue + unsupportedCommands += command.name + ' ' } const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle(`Commands (Length: ${bot.command_handler.commands.length})`) - .setDescription('**Supported Commands**\n' + supportedCommands + '\n**Unsupported Commands**\n' + unsupportedCommands); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle(`Commands (Length: ${bot.command_handler.commands.length})`) + .setDescription('**Supported Commands**\n' + supportedCommands + '\n**Unsupported Commands**\n' + unsupportedCommands) + channeldc.send({ embeds: [Embed] }) } - }, -}; + } +} diff --git a/commands/list.js b/commands/list.js index 39b183d..41b1dc1 100644 --- a/commands/list.js +++ b/commands/list.js @@ -1,19 +1,19 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); +const { MessageEmbed } = require('discord.js') module.exports = { name: 'list', alias: [], description: 'List players', usage: '', trusted: 0, - execute: async function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: async function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { try { - const component = []; - component.push({text: 'Players ', color: 'green'}); - component.push({text: '(', color: 'dark_gray'}); - component.push({text: bot.players.list.length, color: 'gray'}); - component.push({text: ')', color: 'dark_gray'}); - component.push('\n'); + const component = [] + component.push({ text: 'Players ', color: 'green' }) + component.push({ text: '(', color: 'dark_gray' }) + component.push({ text: bot.players.list.length, color: 'gray' }) + component.push({ text: ')', color: 'dark_gray' }) + component.push('\n') for (const property of bot.players.list) { // if (property.match.startsWith('@')) continue; component.push({ @@ -21,57 +21,57 @@ module.exports = { color: 'yellow', clickEvent: { action: 'copy_to_clipboard', - value: property.name, + value: property.name }, hoverEvent: { action: 'show_text', contents: [{ text: 'Click here to copy the username to your clipboard', - color: 'green', - }], - }, - }); + color: 'green' + }] + } + }) component.push({ text: ' › ', - color: 'dark_gray', - }); + color: 'dark_gray' + }) component.push({ text: property.UUID, color: 'aqua', clickEvent: { action: 'copy_to_clipboard', - value: property.UUID, + value: property.UUID }, hoverEvent: { action: 'show_text', contents: [{ text: 'Click here to copy the UUID to your clipboard', - color: 'green', - }], - }, - }); - component.push('\n'); + color: 'green' + }] + } + }) + component.push('\n') } - component.pop(); - bot.tellraw(selector, component); + component.pop() + bot.tellraw(selector, component) } catch (e) { - return; + } }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc) { try { - let players = ''; + let players = '' for (const property of bot.players.list) { // if (property.match.startsWith('@')) continue; - players += `\`${property.name}\` › \`${property.UUID}\`` + '\n'; + players += `\`${property.name}\` › \`${property.UUID}\`` + '\n' } const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle(`Players (${bot.players.list.length})`) - .setDescription(players.substring(0, 4096)); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle(`Players (${bot.players.list.length})`) + .setDescription(players.substring(0, 4096)) + channeldc.send({ embeds: [Embed] }) } catch (e) { - return; + } - }, -}; + } +} diff --git a/commands/music.js b/commands/music.js index 63614d0..5c470c2 100644 --- a/commands/music.js +++ b/commands/music.js @@ -1,144 +1,147 @@ +/* eslint-disable no-case-declarations */ /* eslint-disable require-jsdoc */ /* eslint-disable max-len */ -const fs = require('fs/promises'); -const {MessageEmbed} = require('discord.js'); -const path = require('path'); -const fileExists = require('../util/file-exists'); -const fileList = require('../util/file-list'); -const axios = require('axios'); -const os = require('os'); +const fs = require('fs/promises') +const { MessageEmbed } = require('discord.js') +const path = require('path') +const fileExists = require('../util/file-exists') +const fileList = require('../util/file-list') +const axios = require('axios') +const os = require('os') -let SONGS_PATH; +let SONGS_PATH if (os.hostname() === 'chomens-kubuntu') { - SONGS_PATH = path.join(__dirname, '..', '..', 'nginx-html', 'midis'); + SONGS_PATH = path.join(__dirname, '..', '..', 'nginx-html', 'midis') } else { - SONGS_PATH = path.join(__dirname, '..', 'midis'); + SONGS_PATH = path.join(__dirname, '..', 'midis') } -async function play(bot, values, discord, channeldc, selector) { +let song + +async function play (bot, values, discord, channeldc, selector) { try { - const filepath = values.join(' '); - const absolutePath = await resolve(filepath); - song = bot.music.load(await fs.readFile(absolutePath), path.basename(absolutePath)); - bot.music.queue.push(song); - bot.music.play(song); + const filepath = values.join(' ') + const absolutePath = await resolve(filepath) + song = bot.music.load(await fs.readFile(absolutePath), path.basename(absolutePath)) + bot.music.queue.push(song) + bot.music.play(song) if (discord) { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Music') - .setDescription(`Added ${song.name} to the song queue`); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Music') + .setDescription(`Added ${song.name} to the song queue`) + channeldc.send({ embeds: [Embed] }) } else { - bot.tellraw(selector, [{text: 'Added ', color: 'white'}, {text: song.name, color: 'gold'}, {text: ' to the song queue', color: 'white'}]); + bot.tellraw(selector, [{ text: 'Added ', color: 'white' }, { text: song.name, color: 'gold' }, { text: ' to the song queue', color: 'white' }]) } } catch (e) { if (discord) { const Embed = new MessageEmbed() - .setColor('#FF0000') - .setTitle('Error') - .setDescription(`\`\`\`SyntaxError: Invalid file\`\`\``); - channeldc.send({embeds: [Embed]}); + .setColor('#FF0000') + .setTitle('Error') + .setDescription('```SyntaxError: Invalid file```') + channeldc.send({ embeds: [Embed] }) } else { - bot.tellraw(selector, {text: 'SyntaxError: Invalid file', color: 'red'}); + bot.tellraw(selector, { text: 'SyntaxError: Invalid file', color: 'red' }) } } } -async function playUrl(bot, values, discord, channeldc, selector) { +async function playUrl (bot, values, discord, channeldc, selector) { try { - const url = values.join(' '); + const url = values.join(' ') const response = await axios.get('https://http-proxy.nongsonchome.repl.co', { params: { - uri: url, + uri: url }, - responseType: 'arraybuffer', - }); - song = bot.music.load(response.data, url); - bot.music.queue.push(song); - bot.music.play(song); + responseType: 'arraybuffer' + }) + song = bot.music.load(response.data, url) + bot.music.queue.push(song) + bot.music.play(song) if (discord) { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Music') - .setDescription(`Added ${song.name} to the song queue`); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Music') + .setDescription(`Added ${song.name} to the song queue`) + channeldc.send({ embeds: [Embed] }) } else { - bot.tellraw(selector, [{text: 'Added ', color: 'white'}, {text: song.name, color: 'gold'}, {text: ' to the song queue', color: 'white'}]); + bot.tellraw(selector, [{ text: 'Added ', color: 'white' }, { text: song.name, color: 'gold' }, { text: ' to the song queue', color: 'white' }]) } } catch (e) { if (discord) { const Embed = new MessageEmbed() - .setColor('#FF0000') - .setTitle('Error') - .setDescription(`\`\`\`SyntaxError: Invalid URL\`\`\``); - channeldc.send({embeds: [Embed]}); + .setColor('#FF0000') + .setTitle('Error') + .setDescription('```SyntaxError: Invalid URL```') + channeldc.send({ embeds: [Embed] }) } else { - bot.tellraw(selector, {text: 'SyntaxError: Invalid URL', color: 'red'}); + bot.tellraw(selector, { text: 'SyntaxError: Invalid URL', color: 'red' }) } } } -async function resolve(filepath) { +async function resolve (filepath) { if (!path.isAbsolute(filepath) && await fileExists(SONGS_PATH)) { - return path.join(SONGS_PATH, filepath); + return path.join(SONGS_PATH, filepath) } - return filepath; + return filepath } -async function list(bot, discord, channeldc, prefix, selector, args) { +async function list (bot, discord, channeldc, prefix, selector, args) { try { - let absolutePath; - if (args[1]) absolutePath = await resolve(path.join(SONGS_PATH, args.slice(1).join(' '))); - else absolutePath = await resolve(SONGS_PATH); + let absolutePath + if (args[1]) absolutePath = await resolve(path.join(SONGS_PATH, args.slice(1).join(' '))) + else absolutePath = await resolve(SONGS_PATH) - if (!absolutePath.includes('midis')) throw new Error('bro trying to hack my server?!/1?!'); + if (!absolutePath.includes('midis')) throw new Error('bro trying to hack my server?!/1?!') - const listed = await fileList(absolutePath); + const listed = await fileList(absolutePath) if (discord) { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Songs') - .setDescription(listed.join(', ')); - channeldc.send({embeds: [Embed]}); - return; + .setColor('#FFFF00') + .setTitle('Songs') + .setDescription(listed.join(', ')) + channeldc.send({ embeds: [Embed] }) + return } - let primary = true; - const message = []; + let primary = true + const message = [] for (const value of listed) { - const isFile = (await fs.lstat(path.join(absolutePath, value))).isFile(); + const isFile = (await fs.lstat(path.join(absolutePath, value))).isFile() message.push({ text: value + ' ', color: (!((primary = !primary)) ? 'gold' : 'yellow'), clickEvent: { action: 'suggest_command', - value: `${prefix}music ${isFile ? 'play' : 'list'} ${path.join(args.slice(1).join(' '), value)}`, + value: `${prefix}music ${isFile ? 'play' : 'list'} ${path.join(args.slice(1).join(' '), value)}` }, hoverEvent: { action: 'show_text', contents: [ - {text: 'Name: ', color: 'white'}, - {text: value, color: 'gold'}, + { text: 'Name: ', color: 'white' }, + { text: value, color: 'gold' }, '\n', - {text: 'Click here to suggest the command!', color: 'green'}, - ], - }, - }); + { text: 'Click here to suggest the command!', color: 'green' } + ] + } + }) }; - bot.tellraw(selector, message); + bot.tellraw(selector, message) } catch (e) { if (discord) { const Embed = new MessageEmbed() - .setColor('#FF0000') - .setTitle('Error') - .setDescription(`\`\`\`${e.toString()}\`\`\``); - channeldc.send({embeds: [Embed]}); + .setColor('#FF0000') + .setTitle('Error') + .setDescription(`\`\`\`${e.toString()}\`\`\``) + channeldc.send({ embeds: [Embed] }) } else { - bot.tellraw(selector, {text: e.toString(), color: 'red'}); + bot.tellraw(selector, { text: e.toString(), color: 'red' }) } } }; @@ -156,182 +159,182 @@ module.exports = { ' [directory]', '', '', - '', + '' ], - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { switch (args[0]) { case 'play': - play(bot, args.slice(1), false, null, selector); - break; + play(bot, args.slice(1), false, null, selector) + break case 'playurl': - playUrl(bot, args.slice(1), false, null, selector); - break; + playUrl(bot, args.slice(1), false, null, selector) + break case 'stop': try { - bot.tellraw(selector, {text: 'Cleared the song queue'}); + bot.tellraw(selector, { text: 'Cleared the song queue' }) } catch (e) { - return; + return } - bot.music.stop(); - break; + bot.music.stop() + break case 'skip': try { - bot.tellraw(selector, [{text: 'Skipping '}, {text: bot.music.song.name, color: 'gold'}]); - bot.music.skip(); + bot.tellraw(selector, [{ text: 'Skipping ' }, { text: bot.music.song.name, color: 'gold' }]) + bot.music.skip() } catch (e) { - throw new Error('No music is currently playing!'); + throw new Error('No music is currently playing!') } - break; + break case 'loop': switch (args[1]) { case 'off': - bot.music.loop = 0; + bot.music.loop = 0 bot.tellraw(selector, [ { - text: 'Looping is now ', + text: 'Looping is now ' }, { text: 'disabled', - color: 'red', - }, - ]); - break; + color: 'red' + } + ]) + break case 'current': - bot.music.loop = 1; + bot.music.loop = 1 bot.tellraw(selector, [ { - text: 'Now Looping ', + text: 'Now Looping ' }, { text: song.name, - color: 'gold', - }, - ]); - break; + color: 'gold' + } + ]) + break case 'all': - bot.music.loop = 2; + bot.music.loop = 2 bot.tellraw(selector, { - text: 'Now looping every song in the queue', - }); - break; + text: 'Now looping every song in the queue' + }) + break default: - throw new SyntaxError('Invalid argument'); + throw new SyntaxError('Invalid argument') } - break; + break case 'list': - list(bot, false, null, prefix, selector, args); - break; + list(bot, false, null, prefix, selector, args) + break case 'nowplaying': bot.tellraw(selector, [ { - text: 'Now playing ', + text: 'Now playing ' }, { text: bot.music.song.name, - color: 'gold', - }, - ]); - break; + color: 'gold' + } + ]) + break case 'queue': - const queueWithName = []; - bot.music.queue.forEach((song) => queueWithName.push(song.name)); + const queueWithName = [] + bot.music.queue.forEach((song) => queueWithName.push(song.name)) bot.tellraw(selector, [ { text: 'Queue: ', - color: 'green', + color: 'green' }, { text: queueWithName.join(', '), - color: 'aqua', - }, - ]); - break; + color: 'aqua' + } + ]) + break default: - throw new SyntaxError('Invalid argument'); + throw new SyntaxError('Invalid argument') } }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { - let Embed; + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { + let Embed switch (args[0]) { case 'play': - play(bot, args.slice(1), true, channeldc); - break; + play(bot, args.slice(1), true, channeldc) + break case 'playurl': - playUrl(bot, args.slice(1), true, channeldc); - break; + playUrl(bot, args.slice(1), true, channeldc) + break case 'stop': try { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Stop') - .setDescription('Cleared the song queue'); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Stop') + .setDescription('Cleared the song queue') + channeldc.send({ embeds: [Embed] }) } catch (e) { - return; + return } - bot.music.stop(); - break; + bot.music.stop() + break case 'skip': try { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Skip') - .setDescription(`Skipping ${bot.music.song.name}`); - channeldc.send({embeds: [Embed]}); - bot.music.skip(); + .setColor('#FFFF00') + .setTitle('Skip') + .setDescription(`Skipping ${bot.music.song.name}`) + channeldc.send({ embeds: [Embed] }) + bot.music.skip() } catch (e) { - throw new Error('No music is currently playing!'); + throw new Error('No music is currently playing!') } - break; + break case 'loop': switch (args[1]) { case 'off': - bot.music.loop = 0; + bot.music.loop = 0 Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Loop') - .setDescription('Looping is now disabled'); - channeldc.send({embeds: [Embed]}); - break; + .setColor('#FFFF00') + .setTitle('Loop') + .setDescription('Looping is now disabled') + channeldc.send({ embeds: [Embed] }) + break case 'current': - bot.music.loop = 1; + bot.music.loop = 1 Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Loop') - .setDescription(`Now looping ${song.name}`); - channeldc.send({embeds: [Embed]}); - break; + .setColor('#FFFF00') + .setTitle('Loop') + .setDescription(`Now looping ${song.name}`) + channeldc.send({ embeds: [Embed] }) + break case 'all': - bot.music.loop = 2; + bot.music.loop = 2 Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Loop') - .setDescription('Now looping every song in the queue'); - channeldc.send({embeds: [Embed]}); - break; + .setColor('#FFFF00') + .setTitle('Loop') + .setDescription('Now looping every song in the queue') + channeldc.send({ embeds: [Embed] }) + break } - break; + break case 'list': - list(bot, true, channeldc, prefix, '@a', args); - break; + list(bot, true, channeldc, prefix, '@a', args) + break case 'nowplaying': Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Now playing') - .setDescription(`Now playing ${bot.music.song.name}`); - channeldc.send({embeds: [Embed]}); - break; + .setColor('#FFFF00') + .setTitle('Now playing') + .setDescription(`Now playing ${bot.music.song.name}`) + channeldc.send({ embeds: [Embed] }) + break case 'queue': - const queueWithName = []; - bot.music.queue.forEach((song) => queueWithName.push(song.name)); + const queueWithName = [] + bot.music.queue.forEach((song) => queueWithName.push(song.name)) Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Queue') - .setDescription(queueWithName.join(', ')); - channeldc.send({embeds: [Embed]}); - break; + .setColor('#FFFF00') + .setTitle('Queue') + .setDescription(queueWithName.join(', ')) + channeldc.send({ embeds: [Embed] }) + break default: - throw new SyntaxError('Invalid argument'); + throw new SyntaxError('Invalid argument') } - }, -}; + } +} diff --git a/commands/netmsg.js b/commands/netmsg.js index 611f4aa..584854b 100644 --- a/commands/netmsg.js +++ b/commands/netmsg.js @@ -5,41 +5,43 @@ module.exports = { description: 'Broadcasts a message to all of the servers that the bot is connected', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { const component = [ { text: '[', - color: 'dark_gray', + color: 'dark_gray' }, { text: bot.options.host === 'kitsune.icu' ? 'kit' : bot.options.host, - color: 'gray', + color: 'gray' }, - bot.options.host === 'kitsune.icu' ? { - text: 'sune.icu', - color: 'gray', - } : '', + bot.options.host === 'kitsune.icu' + ? { + text: 'sune.icu', + color: 'gray' + } + : '', { text: '] ', - color: 'dark_gray', + color: 'dark_gray' }, { text: username, - color: 'gray', + color: 'gray' }, { text: ' \u203a ', - color: 'dark_gray', + color: 'dark_gray' }, { text: args.join(' '), - color: 'gray', - }, - ]; + color: 'gray' + } + ] - const bots = bot.getBots(); + const bots = bot.getBots() bots.forEach((bot) => { - bot.tellraw(selector, component); - }); - }, -}; + bot.tellraw(selector, component) + }) + } +} diff --git a/commands/refillcore.js b/commands/refillcore.js index 600af51..b953ce7 100644 --- a/commands/refillcore.js +++ b/commands/refillcore.js @@ -4,10 +4,10 @@ module.exports = { description: 'Resets the bot\'s command core', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.core.loopPlace(); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.core.loopPlace() }, - discordExecute: function(bot) { - bot.core.loopPlace(); - }, -}; + discordExecute: function (bot) { + bot.core.loopPlace() + } +} diff --git a/commands/rtp.js b/commands/rtp.js index 84ec84c..ead5f0b 100644 --- a/commands/rtp.js +++ b/commands/rtp.js @@ -1,14 +1,14 @@ /* eslint-disable max-len */ -const {between} = require('../util/between'); +const { between } = require('../util/between') module.exports = { name: 'rtp', alias: [], description: 'Randomly teleports the player', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - const rtppos = `${between(20000000, 500000)} 100 ${between(20000000, 500000)}`; - bot.tellraw(selector, [{text: 'Teleporting ', color: 'white'}, {text: username, color: 'aqua'}, {text: ' to ', color: 'white'}, {text: rtppos, color: 'green'}, {text: '...', color: 'white'}]); - bot.core.run(`essentials:teleport ${sender} ${rtppos}`); - }, -}; + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + const rtppos = `${between(20000000, 500000)} 100 ${between(20000000, 500000)}` + bot.tellraw(selector, [{ text: 'Teleporting ', color: 'white' }, { text: username, color: 'aqua' }, { text: ' to ', color: 'white' }, { text: rtppos, color: 'green' }, { text: '...', color: 'white' }]) + bot.core.run(`essentials:teleport ${sender} ${rtppos}`) + } +} diff --git a/commands/servereval.js b/commands/servereval.js index fd7f01d..aa8868f 100644 --- a/commands/servereval.js +++ b/commands/servereval.js @@ -1,33 +1,34 @@ +/* eslint-disable no-eval */ /* eslint-disable max-len */ -const util = require('util'); -const {stylize} = require('../util/colors/minecraft'); -const {MessageEmbed} = require('discord.js'); +const util = require('util') +const { stylize } = require('../util/colors/minecraft') +const { MessageEmbed } = require('discord.js') module.exports = { name: 'servereval', alias: [], description: 'Basically eval command but without vm2', trusted: 2, usage: ' ', - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { try { - bot.tellraw(selector, {text: util.inspect(eval(args.slice(1).join(' ')), {stylize}).substring(0, 32766)}); + bot.tellraw(selector, { text: util.inspect(eval(args.slice(1).join(' ')), { stylize }).substring(0, 32766) }) } catch (err) { - bot.tellraw(selector, {text: util.inspect(err).replaceAll('runner', 'chayapak1'), color: 'red'}); + bot.tellraw(selector, { text: util.inspect(err).replaceAll('runner', 'chayapak1'), color: 'red' }) } }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message, config) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message, config) { try { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Output') - .setDescription(util.inspect(eval(args.join(' ')), {stylize})); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Output') + .setDescription(util.inspect(eval(args.join(' ')), { stylize })) + channeldc.send({ embeds: [Embed] }) } catch (err) { const Embed = new MessageEmbed() - .setColor('#FF0000') - .setTitle('Error') - .setDescription(`\`\`\`${util.inspect(err).replaceAll('runner', 'chayapak1')}\`\`\``); - channeldc.send({embeds: [Embed]}); + .setColor('#FF0000') + .setTitle('Error') + .setDescription(`\`\`\`${util.inspect(err).replaceAll('runner', 'chayapak1')}\`\`\``) + channeldc.send({ embeds: [Embed] }) } - }, -}; + } +} diff --git a/commands/test.js b/commands/test.js index 6817834..c2dce21 100644 --- a/commands/test.js +++ b/commands/test.js @@ -1,40 +1,40 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); +const { MessageEmbed } = require('discord.js') module.exports = { name: 'test', alias: [], description: 'Tests if the bot is working', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { bot.tellraw(selector, [ { text: `Username: ${username},`, - color: 'green', + color: 'green' }, { text: ` Raw username: ${usernameraw},`, - color: 'green', + color: 'green' }, { text: ` Sender UUID: ${sender},`, - color: 'green', + color: 'green' }, { text: ` Prefix: ${prefix},`, - color: 'green', + color: 'green' }, { text: ` Args: ${args.join(', ').toString()}`, - color: 'green', - }, - ]); + color: 'green' + } + ]) }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc) { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Hello!') - .setDescription('This is the first ever command to be discordified!' + '\n' + `More info: Username: ${username}, Prefix: ${prefix}, Args: ${args.join(' ')}`); - channeldc.send({embeds: [Embed]}); - }, -}; + .setColor('#FFFF00') + .setTitle('Hello!') + .setDescription('This is the first ever command to be discordified!' + '\n' + `More info: Username: ${username}, Prefix: ${prefix}, Args: ${args.join(' ')}`) + channeldc.send({ embeds: [Embed] }) + } +} diff --git a/commands/time.js b/commands/time.js index c30a10c..eaf1ca1 100644 --- a/commands/time.js +++ b/commands/time.js @@ -1,44 +1,42 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); -const moment = require('moment-timezone'); +const { MessageEmbed } = require('discord.js') +const moment = require('moment-timezone') module.exports = { name: 'time', alias: [], description: 'Shows the time', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - const timezone = args.join(' '); - const momented = moment().tz(timezone).format('dddd, MMMM Do, YYYY, hh:mm:ss A'); - const component = [{text: 'The current date and time for the timezone ', color: 'white'}, {text: timezone, color: 'aqua'}, {text: ' is: ', color: 'white'}, {text: `${momented}`, color: 'green'}]; + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + const timezone = args.join(' ') + const momented = moment().tz(timezone).format('dddd, MMMM Do, YYYY, hh:mm:ss A') + const component = [{ text: 'The current date and time for the timezone ', color: 'white' }, { text: timezone, color: 'aqua' }, { text: ' is: ', color: 'white' }, { text: `${momented}`, color: 'green' }] if (timezone.toLowerCase() === 'asia/bangkok' || timezone.toLowerCase() === 'utc') { - bot.tellraw(selector, component); - return; + bot.tellraw(selector, component) } else if (momented === moment().format('dddd, MMMM Do, YYYY, hh:mm:ss A')) { - throw new SyntaxError('Invalid timezone'); + throw new SyntaxError('Invalid timezone') } else { - bot.tellraw(selector, component); + bot.tellraw(selector, component) } }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc) { - const timezone = args.join(' '); - const momented = moment().tz(timezone).format('dddd, MMMM Do, YYYY, hh:mm:ss A'); - const description = `The current date and time for the timezone ${timezone} is: ${momented}`; + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc) { + const timezone = args.join(' ') + const momented = moment().tz(timezone).format('dddd, MMMM Do, YYYY, hh:mm:ss A') + const description = `The current date and time for the timezone ${timezone} is: ${momented}` if (timezone.toLowerCase() === 'asia/bangkok' || timezone.toLowerCase() === 'utc') { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Time') - .setDescription(description); - channeldc.send({embeds: [Embed]}); - return; + .setColor('#FFFF00') + .setTitle('Time') + .setDescription(description) + channeldc.send({ embeds: [Embed] }) } else if (momented === moment().format('dddd, MMMM Do, YYYY, hh:mm:ss A')) { - throw new SyntaxError('Invalid timezone'); + throw new SyntaxError('Invalid timezone') } else { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Time') - .setDescription(description); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Time') + .setDescription(description) + channeldc.send({ embeds: [Embed] }) } - }, -}; + } +} diff --git a/commands/tpall.js b/commands/tpall.js index c091a48..3c81fc9 100644 --- a/commands/tpall.js +++ b/commands/tpall.js @@ -5,7 +5,7 @@ module.exports = { description: 'Teleport everyone', usage: ' ', trusted: 1, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.core.run(`minecraft:execute unless entity @s[name= run ] run tp @a ${args.slice(1).join(' ')}`); - }, -}; + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.core.run(`minecraft:execute unless entity @s[name= run ] run tp @a ${args.slice(1).join(' ')}`) + } +} diff --git a/commands/translate.js b/commands/translate.js index efbfa07..72e7a41 100644 --- a/commands/translate.js +++ b/commands/translate.js @@ -1,34 +1,34 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); -const translate = require('@vitalets/google-translate-api'); +const { MessageEmbed } = require('discord.js') +const translate = require('@vitalets/google-translate-api') module.exports = { name: 'translate', alias: [], description: 'Translate a message from any language to any language using Google Translate', usage: ' ', trusted: 0, - execute: async function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: async function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { try { - const res = await translate(args.slice(2).join(' '), {from: args[0], to: args[1]}); - bot.tellraw(selector, [{text: 'Result: ', color: 'gold'}, {text: res.text, color: 'green'}]); + const res = await translate(args.slice(2).join(' '), { from: args[0], to: args[1] }) + bot.tellraw(selector, [{ text: 'Result: ', color: 'gold' }, { text: res.text, color: 'green' }]) } catch (e) { - bot.tellraw(selector, {text: String(e), color: 'red'}); + bot.tellraw(selector, { text: String(e), color: 'red' }) } }, - discordExecute: async function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { + discordExecute: async function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { try { - const res = await translate(args.slice(2).join(' '), {from: args[0], to: args[1]}); + const res = await translate(args.slice(2).join(' '), { from: args[0], to: args[1] }) const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Result') - .setDescription(res.text); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Result') + .setDescription(res.text) + channeldc.send({ embeds: [Embed] }) } catch (e) { const Embed = new MessageEmbed() - .setColor('#FF0000') - .setTitle('Error') - .setDescription(`\`\`\`${e}\`\`\``); - channeldc.send({embeds: [Embed]}); + .setColor('#FF0000') + .setTitle('Error') + .setDescription(`\`\`\`${e}\`\`\``) + channeldc.send({ embeds: [Embed] }) } - }, -}; + } +} diff --git a/commands/uptime.js b/commands/uptime.js index 64cced4..35de09c 100644 --- a/commands/uptime.js +++ b/commands/uptime.js @@ -1,20 +1,20 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); -const {secondsToHms} = require('../util/secondToHms'); +const { MessageEmbed } = require('discord.js') +const { secondsToHms } = require('../util/secondToHms') module.exports = { name: 'uptime', alias: [], description: 'Shows the bot\'s uptime', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { - bot.tellraw(selector, [{text: 'The bot\'s uptime is ', color: 'white'}, {text: `${secondsToHms(Math.floor(performance.now() / 1000))}`, color: 'green'}]); + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + bot.tellraw(selector, [{ text: 'The bot\'s uptime is ', color: 'white' }, { text: `${secondsToHms(Math.floor(performance.now() / 1000))}`, color: 'green' }]) }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Bot\'s Uptime') - .setDescription(`The bot\'s uptime is ${secondsToHms(Math.floor(performance.now() / 1000))}`); - channeldc.send({embeds: [Embed]}); - }, -}; + .setColor('#FFFF00') + .setTitle('Bot\'s Uptime') + .setDescription(`The bot's uptime is ${secondsToHms(Math.floor(performance.now() / 1000))}`) + channeldc.send({ embeds: [Embed] }) + } +} diff --git a/commands/urban.js b/commands/urban.js index a1c468d..1449389 100644 --- a/commands/urban.js +++ b/commands/urban.js @@ -1,20 +1,20 @@ /* eslint-disable max-len */ -const urban = require('urban-dictionary'); +const urban = require('urban-dictionary') module.exports = { name: 'urban', alias: [], description: 'Working Urban Dictionary', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { urban.autocompleteExtra(args[0], (error, results) => { if (error) { - bot.tellraw(selector, [{text: '[', color: 'dark_red'}, {text: 'Urban', color: 'red'}, {text: '] ', color: 'dark_red'}, {text: error.message, color: 'red'}]); - return; + bot.tellraw(selector, [{ text: '[', color: 'dark_red' }, { text: 'Urban', color: 'red' }, { text: '] ', color: 'dark_red' }, { text: error.message, color: 'red' }]) + return } - results.forEach(({preview, term}) => { - bot.tellraw(selector, [{text: '[', color: 'dark_red'}, {text: 'Urban', color: 'red'}, {text: '] ', color: 'dark_red'}, {text: term, color: 'white'}, {text: ' - ', color: 'white'}, {text: preview, color: 'white'}]); - }); - }); - }, -}; + results.forEach(({ preview, term }) => { + bot.tellraw(selector, [{ text: '[', color: 'dark_red' }, { text: 'Urban', color: 'red' }, { text: '] ', color: 'dark_red' }, { text: term, color: 'white' }, { text: ' - ', color: 'white' }, { text: preview, color: 'white' }]) + }) + }) + } +} diff --git a/commands/uuid.js b/commands/uuid.js index 60e4e29..30d5bc9 100644 --- a/commands/uuid.js +++ b/commands/uuid.js @@ -1,83 +1,83 @@ /* eslint-disable max-len */ -const {MessageEmbed} = require('discord.js'); +const { MessageEmbed } = require('discord.js') module.exports = { name: 'uuid', alias: [], description: 'Gets the UUID of a player. If no player specified it will show your UUID instead', usage: '', trusted: 0, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { if (args[0]) { - const playername = args.join(' '); - const player = bot.playersAddedPlayers[playername]; - if (player === undefined) throw new SyntaxError('Invalid Username'); + const playername = args.join(' ') + const player = bot.playersAddedPlayers[playername] + if (player === undefined) throw new SyntaxError('Invalid Username') bot.tellraw(selector, - [ - { - text: `${playername}'s UUID: `, - color: 'green', + [ + { + text: `${playername}'s UUID: `, + color: 'green' + }, + { + text: player, + color: 'aqua', + clickEvent: { + action: 'copy_to_clipboard', + value: player }, - { - text: player, - color: 'aqua', - clickEvent: { - action: 'copy_to_clipboard', - value: player, - }, - hoverEvent: { - action: 'show_text', - contents: [ - { - text: 'Click here to copy the UUID to your clipboard', - color: 'green', - }, - ], - }, - }, - ]); + hoverEvent: { + action: 'show_text', + contents: [ + { + text: 'Click here to copy the UUID to your clipboard', + color: 'green' + } + ] + } + } + ]) } else { bot.tellraw(selector, - [ - { - text: `Your UUID: `, - color: 'green', + [ + { + text: 'Your UUID: ', + color: 'green' + }, + { + text: sender, + color: 'aqua', + clickEvent: { + action: 'copy_to_clipboard', + value: sender }, - { - text: sender, - color: 'aqua', - clickEvent: { - action: 'copy_to_clipboard', - value: sender, - }, - hoverEvent: { - action: 'show_text', - contents: [ - { - text: 'Click here to copy the uuid to your clipboard', - color: 'green', - }, - ], - }, - }, - ]); + hoverEvent: { + action: 'show_text', + contents: [ + { + text: 'Click here to copy the uuid to your clipboard', + color: 'green' + } + ] + } + } + ]) } }, - discordExecute: function(bot, username, usernameraw, sender, prefix, args, channeldc, message) { + discordExecute: function (bot, username, usernameraw, sender, prefix, args, channeldc, message) { if (args[0]) { - const playername = args.join(' '); - const player = bot.playersAddedPlayers[playername]; - if (player === undefined) throw new SyntaxError('Invalid UUID'); + const playername = args.join(' ') + const player = bot.playersAddedPlayers[playername] + if (player === undefined) throw new SyntaxError('Invalid UUID') const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('UUID') - .setDescription(`${playername}'s UUID: ${player}`); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('UUID') + .setDescription(`${playername}'s UUID: ${player}`) + channeldc.send({ embeds: [Embed] }) } else { const Embed = new MessageEmbed() - .setColor('#FF0000') - .setTitle('Error') - .setDescription('Invalid player name'); - channeldc.send({embeds: [Embed]}); + .setColor('#FF0000') + .setTitle('Error') + .setDescription('Invalid player name') + channeldc.send({ embeds: [Embed] }) } - }, -}; + } +} diff --git a/commands/validate.js b/commands/validate.js index 247ae54..18a1c63 100644 --- a/commands/validate.js +++ b/commands/validate.js @@ -5,13 +5,13 @@ module.exports = { alias: [], usage: '', trusted: 1, - execute: function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { if (args[0] === hash) { - bot.tellraw(selector, {text: 'Valid hash', color: 'green'}); + bot.tellraw(selector, { text: 'Valid hash', color: 'green' }) } else if (args[0] === ownerhash) { - bot.tellraw(selector, {text: 'Valid OwnerHash', color: 'green'}); + bot.tellraw(selector, { text: 'Valid OwnerHash', color: 'green' }) } else { - bot.tellraw(selector, {text: 'Invalid hash', color: 'red'}); + bot.tellraw(selector, { text: 'Invalid hash', color: 'red' }) } - }, -}; + } +} diff --git a/commands/wikipedia.js b/commands/wikipedia.js index c91bd4f..f3ea2e0 100644 --- a/commands/wikipedia.js +++ b/commands/wikipedia.js @@ -1,37 +1,37 @@ /* eslint-disable max-len */ -const wiki = require('wikipedia'); -const util = require('util'); -const {MessageEmbed} = require('discord.js'); +const wiki = require('wikipedia') +const util = require('util') +const { MessageEmbed } = require('discord.js') module.exports = { name: 'wikipedia', alias: ['wiki'], description: 'Working Wikipedia!', usage: '', trusted: 0, - execute: async function(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { + execute: async function (bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) { try { - const page = await wiki.page(args.join(' ')); - const summary = await page.summary(); - bot.tellraw(selector, {text: summary.extract, color: 'green'}); + const page = await wiki.page(args.join(' ')) + const summary = await page.summary() + bot.tellraw(selector, { text: summary.extract, color: 'green' }) } catch (e) { - bot.tellraw(selector, {text: e.toString(), color: 'red'}); + bot.tellraw(selector, { text: e.toString(), color: 'red' }) } }, - discordExecute: async function(bot, username, usernameraw, sender, prefix, args, channeldc) { + discordExecute: async function (bot, username, usernameraw, sender, prefix, args, channeldc) { try { - const page = await wiki.page(args.join(' ')); - const summary = await page.summary(); + const page = await wiki.page(args.join(' ')) + const summary = await page.summary() const Embed = new MessageEmbed() - .setColor('#FFFF00') - .setTitle('Output') - .setDescription(summary.extract); - channeldc.send({embeds: [Embed]}); + .setColor('#FFFF00') + .setTitle('Output') + .setDescription(summary.extract) + channeldc.send({ embeds: [Embed] }) } catch (e) { const Embed = new MessageEmbed() - .setColor('#FF0000') - .setTitle('Error') - .setDescription(`\`\`\`${util.inspect(e)}\`\`\``); - channeldc.send({embeds: [Embed]}); + .setColor('#FF0000') + .setTitle('Error') + .setDescription(`\`\`\`${util.inspect(e)}\`\`\``) + channeldc.send({ embeds: [Embed] }) } - }, -}; + } +} diff --git a/config.js b/config.js index 2cc3321..1ca3990 100644 --- a/config.js +++ b/config.js @@ -4,12 +4,12 @@ module.exports = { prefixes: [ '*', 'cbot ', - '/cbot ', + '/cbot ' ], commandsDir: '../commands', // this will be used by the commands.js in the plugins folder so it needs ../ keys: { normalKey: '�iB_D���k��j8H�{?[/ڭ�f�}Ѣ�^-=�Ț��v]��g>��=c', - ownerHashKey: 'b)R��nF�CW���#�\\[�S*8"t^eia�Z��k����K1�8zȢ�', + ownerHashKey: 'b)R��nF�CW���#�\\[�S*8"t^eia�Z��k����K1�8zȢ�' }, console: true, useChat: false, @@ -19,13 +19,13 @@ module.exports = { customName: [ { text: 'ChomeNS Bot ', - color: 'yellow', + color: 'yellow' }, { text: 'Core', - color: 'green', - }, - ], + color: 'green' + } + ] }, self_care: { prefix: true, @@ -34,10 +34,10 @@ module.exports = { vanish: true, gamemode: true, mute: true, - endCredits: true, + endCredits: true }, eval: { - serverUrl: 'http://192.168.1.105:4445/', + serverUrl: 'http://192.168.1.105:4445/' }, reconnectTimeout: 1000 * 2, self_care_check_interval: 2000, @@ -50,35 +50,35 @@ module.exports = { '192.168.1.103': '1002806756885413978', 'kitsune.icu': '1004006678460637315', 'mc.chomens41793.ga': '1010734897796763758', - 'real.chipmunk.land': '1042590315464364032', + 'real.chipmunk.land': '1042590315464364032' }, - prefix: '!', + prefix: '!' }, servers: [ { host: 'play.kaboom.pw', port: 25565, - kaboom: true, + kaboom: true }, { host: 'sus.shhnowisnottheti.me', port: 25565, - kaboom: true, + kaboom: true }, { host: 'kitsune.icu', port: 25565, - kaboom: true, + kaboom: true }, { host: 'real.chipmunk.land', port: 25565, - kaboom: true, + kaboom: true }, { host: 'mc.chomens41793.ga', port: 25565, - kaboom: true, - }, - ], -}; + kaboom: true + } + ] +} diff --git a/index.js b/index.js index 22246bd..194edf3 100644 --- a/index.js +++ b/index.js @@ -1,36 +1,36 @@ /* eslint-disable max-len */ -const readline = require('node:readline'); -const {stdin: input, stdout: output} = require('node:process'); -const rl = readline.createInterface({input, output}); -const config = require('./config'); -const {createBot} = require('./bot'); +const readline = require('node:readline') +const { stdin: input, stdout: output } = require('node:process') +const rl = readline.createInterface({ input, output }) +const config = require('./config') +const { createBot } = require('./bot') const { Client, - Intents, -} = require('discord.js'); -const intents = new Intents(['GUILDS', 'GUILD_MESSAGES']); + Intents +} = require('discord.js') +const intents = new Intents(['GUILDS', 'GUILD_MESSAGES']) const dcclient = new Client({ - intents, -}); + intents +}) -let bots = []; +let bots = [] dcclient.on('ready', () => { config.servers.forEach(async (server) => { - const getBots = () => bots; + const getBots = () => bots const setNewBot = (server, bot) => { - bots = bots.filter((eachBot) => eachBot !== server); - bots.push(bot); - }; + bots = bots.filter((eachBot) => eachBot !== server) + bots.push(bot) + } // await is important cuz the function is async // VVVVV - const bot = await createBot(server, config, getBots, setNewBot, dcclient, rl); - bots.push(bot); - }); -}); + const bot = await createBot(server, config, getBots, setNewBot, dcclient, rl) + bots.push(bot) + }) +}) -dcclient.login(config.discord.token); +dcclient.login(config.discord.token) process.on('uncaughtException', (e) => { - console.log('uncaught ' + e); -}); + console.log('uncaught ' + e) +}) diff --git a/package.json b/package.json index 8e5d118..cf1d477 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "moment": "^2.29.3", "moment-timezone": "^0.5.34", "prismarine-block": "^1.16.3", + "prismarine-chat": "^1.7.2", "prismarine-chunk": "^1.32.0", "prismarine-item": "^1.11.5", "prismarine-registry": "^1.3.0", @@ -39,6 +40,6 @@ }, "devDependencies": { "eslint": "^8.20.0", - "eslint-config-google": "^0.14.0" + "eslint-config-standard": "^17.0.0" } } diff --git a/plugins/chat.js b/plugins/chat.js index 7acb2aa..98074e1 100644 --- a/plugins/chat.js +++ b/plugins/chat.js @@ -2,40 +2,40 @@ /* eslint-disable require-jsdoc */ // eslint-disable-next-line no-undef // const parse = require('../util/text_parser'); -const {containsIllegalCharacters} = require('../util/containsIllegalCharacters'); -const {chatPacketListener, parsePlayerMessages} = require('../util/chat'); +const { containsIllegalCharacters } = require('../util/containsIllegalCharacters') +const { chatPacketListener, parsePlayerMessages } = require('../util/chat') -function inject(bot) { - bot.chatQueue = []; +function inject (bot) { + bot.chatQueue = [] - const chatQueue = setInterval(function() { + const chatQueue = setInterval(function () { if (bot.chatQueue[0] || bot.chatQueue[0] === '') { try { if (containsIllegalCharacters(bot.chatQueue[0])) { - bot.chatQueue.shift(); - return; + bot.chatQueue.shift() + return }; - bot.write('chat', {message: bot.chatQueue[0]}); - bot.chatQueue.shift(); + bot.write('chat', { message: bot.chatQueue[0] }) + bot.chatQueue.shift() } catch (e) { - bot.console.error(e); + bot.console.error(e) } } - }, 450); + }, 450) bot.chat = (message) => { - bot.chatQueue.push(String(message)); - }; + bot.chatQueue.push(String(message)) + } bot.once('end', () => { - clearInterval(chatQueue); - }); + clearInterval(chatQueue) + }) - const ChatMessage = require('prismarine-chat')(bot.version); + const ChatMessage = require('prismarine-chat')(bot.version) - bot._client.on('chat', (packet) => chatPacketListener(packet, ChatMessage, bot)); + bot._client.on('chat', (packet) => chatPacketListener(packet, ChatMessage, bot)) - bot.on('parsed_chat', (message, packet) => parsePlayerMessages(message, packet, bot)); + bot.on('parsed_chat', (message, packet) => parsePlayerMessages(message, packet, bot)) } -module.exports = {inject}; +module.exports = { inject } diff --git a/plugins/commands.js b/plugins/commands.js index 6c28dbe..1beea2c 100644 --- a/plugins/commands.js +++ b/plugins/commands.js @@ -1,101 +1,102 @@ /* eslint-disable require-jsdoc */ /* eslint-disable max-len */ -const path = require('path'); -const {MessageEmbed} = require('discord.js'); -function inject(bot, dcclient, config) { - const loadFiles = require('../util/load_files'); - const channeldc = dcclient.channels.cache.get(config.discord.servers[bot.options.host]); - bot.command_handler = {}; - bot.command_handler.commands = {}; - bot.command_handler.reload = async function() { - bot.command_handler.commands = await loadFiles(path.join(__dirname, config.commandsDir)); - }; - bot.command_handler.reload(); - bot.command_handler.main = function(prefix, username, usernameraw, message, sender, channeldc, hash, ownerhash, selector) { - bot.command_handler.reload(); - let raw; - let command; - const discord = message.content ? true : false; +const path = require('path') +const { MessageEmbed } = require('discord.js') +function inject (bot, dcclient, config) { + const loadFiles = require('../util/load_files') + const channeldc = dcclient.channels.cache.get(config.discord.servers[bot.options.host]) + bot.command_handler = {} + bot.command_handler.commands = {} + bot.command_handler.reload = async function () { + bot.command_handler.commands = await loadFiles(path.join(__dirname, config.commandsDir)) + } + bot.command_handler.reload() + bot.command_handler.main = function (prefix, username, usernameraw, message, sender, channeldc, hash, ownerhash, selector) { + bot.command_handler.reload() + let raw + let command + const discord = !!message.content - discord ? raw = message.content.substring(prefix.length) : - raw = message.substring(prefix.length); + discord + ? raw = message.content.substring(prefix.length) + : raw = message.substring(prefix.length) - const [commandName, ...args] = raw.split(' '); - command = bot.command_handler.commands.find((command) => command.name === commandName.toLowerCase()); + const [commandName, ...args] = raw.split(' ') + command = bot.command_handler.commands.find((command) => command.name === commandName.toLowerCase()) try { - const alias = bot.command_handler.commands.find((command) => command.alias.includes(commandName.toLowerCase())); - if (alias) command = bot.command_handler.commands.find((command) => command.alias.includes(commandName.toLowerCase())); - if (prefix === '*' && message.endsWith('*') && message !== '*') return; - if (!command) throw new Error(`Unknown command: "${commandName}"`); + const alias = bot.command_handler.commands.find((command) => command.alias.includes(commandName.toLowerCase())) + if (alias) command = bot.command_handler.commands.find((command) => command.alias.includes(commandName.toLowerCase())) + if (prefix === '*' && message.endsWith('*') && message !== '*') return + if (!command) throw new Error(`Unknown command: "${commandName}"`) if (command.name !== 'validate' && command.trusted === 1) { - if (discord && !message.member?.roles?.cache?.some((role) => role.name === 'Trusted')) throw new Error('You\'re not in the trusted role!'); - else if (!discord && args[0] !== hash) throw new Error(`Invalid hash`); + if (discord && !message.member?.roles?.cache?.some((role) => role.name === 'Trusted')) throw new Error('You\'re not in the trusted role!') + else if (!discord && args[0] !== hash) throw new Error('Invalid hash') } else if (command.name !== 'validate' && command.trusted === 2) { - if (discord && !message.member?.roles?.cache?.some((role) => role.name === 'Trusted')) throw new Error('You\'re not in the trusted role!'); - else if (!discord && args[0] !== ownerhash) throw new Error(`Invalid OwnerHash`); + if (discord && !message.member?.roles?.cache?.some((role) => role.name === 'Trusted')) throw new Error('You\'re not in the trusted role!') + else if (!discord && args[0] !== ownerhash) throw new Error('Invalid OwnerHash') } if (prefix === config.discord.prefix) { - if (!command.discordExecute) throw new Error('This command is not yet supported on discord!'); - command.discordExecute(bot, username, usernameraw, sender, prefix, args, channeldc, message, config); + if (!command.discordExecute) throw new Error('This command is not yet supported on discord!') + command.discordExecute(bot, username, usernameraw, sender, prefix, args, channeldc, message, config) } else { - command.execute(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector); + command.execute(bot, username, usernameraw, sender, prefix, args, config, hash, ownerhash, selector) } } catch (e) { if (prefix === config.discord.prefix) { const Embed = new MessageEmbed() - .setColor('#FF0000') - .setTitle('Error') - .setDescription(`\`\`\`${e}\`\`\``); - channeldc.send({embeds: [Embed]}); + .setColor('#FF0000') + .setTitle('Error') + .setDescription(`\`\`\`${e}\`\`\``) + channeldc.send({ embeds: [Embed] }) } else { - bot.tellraw(selector, {text: String(e), color: 'red'}); + bot.tellraw(selector, { text: String(e), color: 'red' }) } } - }; - bot.command_handler.run = function(username, usernameraw, message, sender, channeldc, hash, ownerhash, selector = '@a') { + } + bot.command_handler.run = function (username, usernameraw, message, sender, channeldc, hash, ownerhash, selector = '@a') { for (const prefix of config.prefixes) { - if (!message.startsWith(prefix)) continue; - bot.command_handler.main(prefix, username, usernameraw, message, sender, channeldc, hash, ownerhash, selector); + if (!message.startsWith(prefix)) continue + bot.command_handler.main(prefix, username, usernameraw, message, sender, channeldc, hash, ownerhash, selector) } - }; + } bot.on('message', async (_username, _message, _sender) => { // try catch cuz TypeError: Cannot read properties of undefined (reading 'replace') try { - const usernameraw = _username.replace(/§.?/g, ''); - const sender = _sender !== '00000000-0000-0000-0000-000000000000' ? _sender : bot.playersAddedPlayers[usernameraw]; - let username; - if (!bot.getplayerusername[sender]) username = usernameraw; - else username = bot.getplayerusername[sender]; - const message = _message.replace(/* /§r/g */ /§.?/g, '')/* .replace(/§/g, '')*/; - bot.command_handler.run(username, usernameraw, message, sender, channeldc, bot.hash, bot.ownerHash); + const usernameraw = _username.replace(/§.?/g, '') + const sender = _sender !== '00000000-0000-0000-0000-000000000000' ? _sender : bot.playersAddedPlayers[usernameraw] + let username + if (!bot.getplayerusername[sender]) username = usernameraw + else username = bot.getplayerusername[sender] + const message = _message.replace(/* /§r/g */ /§.?/g, '')/* .replace(/§/g, '') */ + bot.command_handler.run(username, usernameraw, message, sender, channeldc, bot.hash, bot.ownerHash) } catch (e) { - bot.console.error(e); + bot.console.error(e) } - }); - bot.on('cspy', async function(_username, _message) { - const username = _username.replace(/§.?/g, ''); - const message = _message.replace(/§.?/g, ''); - const sender = bot.playersAddedPlayers[username]; - bot.command_handler.run(username, username, message, sender, channeldc, bot.hash, bot.ownerHash, username); - }); - function handleDiscordMessages(message) { + }) + bot.on('cspy', async function (_username, _message) { + const username = _username.replace(/§.?/g, '') + const message = _message.replace(/§.?/g, '') + const sender = bot.playersAddedPlayers[username] + bot.command_handler.run(username, username, message, sender, channeldc, bot.hash, bot.ownerHash, username) + }) + function handleDiscordMessages (message) { try { // ignores the message that comes from the bot itself - if (message.author.id === dcclient.user.id) return; + if (message.author.id === dcclient.user.id) return // only receive messages in SPECIFIC channel - if (message.channel.id !== channeldc.id) return; - if (!message.content.startsWith(config.discord.prefix)) return; - bot.command_handler.main(config.discord.prefix, message.member.displayName, message.member.displayName, message, 'no sender for discord', channeldc); + if (message.channel.id !== channeldc.id) return + if (!message.content.startsWith(config.discord.prefix)) return + bot.command_handler.main(config.discord.prefix, message.member.displayName, message.member.displayName, message, 'no sender for discord', channeldc) } catch (e) { - return; + return }; } bot.once('end', () => { - dcclient.off('messageCreate', handleDiscordMessages); - }); - dcclient.on('messageCreate', handleDiscordMessages); + dcclient.off('messageCreate', handleDiscordMessages) + }) + dcclient.on('messageCreate', handleDiscordMessages) }; -module.exports = {inject}; +module.exports = { inject } diff --git a/plugins/console.js b/plugins/console.js index 57a2197..4c0061a 100644 --- a/plugins/console.js +++ b/plugins/console.js @@ -1,117 +1,118 @@ +/* eslint-disable no-eval */ /* eslint-disable require-jsdoc */ /* eslint-disable max-len */ -const moment = require('moment-timezone'); -const util = require('util'); +const moment = require('moment-timezone') +const util = require('util') -function inject(bot, _dcclient, config, rl) { - if (!config.console) return; +function inject (bot, _dcclient, config, rl) { + if (!config.console) return // readline > fix on log - function log(...args) { - rl.output.write('\x1b[2K\r'); - console.log(args.toString()); - rl._refreshLine(); + function log (...args) { + rl.output.write('\x1b[2K\r') + console.log(args.toString()) + rl._refreshLine() }; - const chatMessage = require('prismarine-chat')(bot.version); + const chatMessage = require('prismarine-chat')(bot.version) - function prefix(prefix, _message) { - const message = `[${moment().format('HH:mm:ss')} ${prefix}§r] [${bot.options.host}] `; - const component = chatMessage.MessageBuilder.fromString(message).toJSON(); - return chatMessage.fromNotch(component).toAnsi() + _message; + function prefix (prefix, _message) { + const message = `[${moment().format('HH:mm:ss')} ${prefix}§r] [${bot.options.host}] ` + const component = chatMessage.MessageBuilder.fromString(message).toJSON() + return chatMessage.fromNotch(component).toAnsi() + _message } - bot.console = {}; - bot.console.host = 'all'; - bot.console.log = function(message) { - log(prefix('&6LOG', message)); - }; - bot.console.info = function(message) { - log(prefix('&aINFO', message)); - }; - bot.console.error = function(error) { - log(prefix('&cERROR', typeof error === 'string' ? error : error.stack)); - }; + bot.console = {} + bot.console.host = 'all' + bot.console.log = function (message) { + log(prefix('&6LOG', message)) + } + bot.console.info = function (message) { + log(prefix('&aINFO', message)) + } + bot.console.error = function (error) { + log(prefix('&cERROR', typeof error === 'string' ? error : error.stack)) + } bot.on('parsed_chat', (message) => { - bot.console.log(message.toAnsi()); - }); + bot.console.log(message.toAnsi()) + }) - function handleLine(line) { + function handleLine (line) { try { if (line.toLowerCase() === '' || - line.toLowerCase().startsWith(' ')) return; + line.toLowerCase().startsWith(' ')) return if (line.startsWith('.csvr ')) { - const host = line.substring(6); - bot.getBots().forEach((eachBot) => eachBot.console.host = host); - bot.console.info(`Host set to: ${host}`); - return; + const host = line.substring(6) + bot.getBots().forEach((eachBot) => { eachBot.console.host = host }) + bot.console.info(`Host set to: ${host}`) + return } - if (bot.options.host !== bot.console.host && bot.console.host !== 'all') return; + if (bot.options.host !== bot.console.host && bot.console.host !== 'all') return if (line.toLowerCase() === '.exit' || line.toLowerCase() === '.end') { - bot.end('end command'); - return; + bot.end('end command') + return } if (line.toLowerCase().startsWith('.servereval ')) { try { bot.tellraw('@a', { text: `${util.inspect(eval(`${line.substring(12)}`))}`, - color: 'green', - }); - return; + color: 'green' + }) + return } catch (err) { - bot.tellraw('@a', {text: `${util.inspect(err)}`, color: 'red'}); - return; + bot.tellraw('@a', { text: `${util.inspect(err)}`, color: 'red' }) + return } } - if (line === '.kill') process.exit(); + if (line === '.kill') process.exit() if (line.startsWith('.')) { return bot.command_handler.run( - bot.username, - bot.username, - '*' + line.substring(1), - bot.uuid, - null, - 'h', - 'o', - ); + bot.username, + bot.username, + '*' + line.substring(1), + bot.uuid, + null, + 'h', + 'o' + ) } bot.tellraw('@a', [ { text: '[', - color: 'dark_gray', + color: 'dark_gray' }, { text: `${bot.username} Console`, - color: 'gray', + color: 'gray' }, { text: '] ', - color: 'dark_gray', + color: 'dark_gray' }, { text: 'chayapak ', - color: 'green', + color: 'green' }, { text: '\u203a ', - color: 'dark_gray', + color: 'dark_gray' }, - chatMessage.MessageBuilder.fromString('&7' + line), - ]); + chatMessage.MessageBuilder.fromString('&7' + line) + ]) } catch (e) { - bot.console.error(e); + bot.console.error(e) } } - rl.on('line', handleLine); + rl.on('line', handleLine) bot.once('end', () => { - rl.off('line', handleLine); - }); + rl.off('line', handleLine) + }) } -module.exports = {inject}; +module.exports = { inject } diff --git a/plugins/core.js b/plugins/core.js index d5b32e9..40bc145 100644 --- a/plugins/core.js +++ b/plugins/core.js @@ -1,84 +1,84 @@ /* eslint-disable max-len */ /* eslint-disable require-jsdoc */ -const nbt = require('prismarine-nbt'); -const Vec3 = require('vec3'); +const nbt = require('prismarine-nbt') +const Vec3 = require('vec3') -const relativePosition = new Vec3(0, 0, 0); +const relativePosition = new Vec3(0, 0, 0) -function inject(bot, dcclient, config) { - const mcData = require('minecraft-data')(bot.version); - const chatMessage = require('prismarine-chat')(bot.version); +function inject (bot, dcclient, config) { + const mcData = require('minecraft-data')(bot.version) + const chatMessage = require('prismarine-chat')(bot.version) const core = { - isCore(position) { - return position.x >= core.start.x && position.x <= core.end.x && position.y >= core.start.y && position.y <= core.end.y && position.z >= core.start.z && position.z <= core.end.z; + isCore (position) { + return position.x >= core.start.x && position.x <= core.end.x && position.y >= core.start.y && position.y <= core.end.y && position.z >= core.start.z && position.z <= core.end.z }, - run(command) { + run (command) { try { if (config.useChat && command.startsWith('minecraft:tellraw @a ') && !command.includes('Console') && !command.includes('Discord') ) { - bot.chat(chatMessage.fromNotch(command.replace('minecraft:tellraw @a ', '')).toMotd().replaceAll('\xa7', '&')); - return; + bot.chat(chatMessage.fromNotch(command.replace('minecraft:tellraw @a ', '')).toMotd().replaceAll('\xa7', '&')) + return } - relativePosition.x++; + relativePosition.x++ if (relativePosition.x >= 16) { - relativePosition.x = 0; - relativePosition.y++; + relativePosition.x = 0 + relativePosition.y++ } if (relativePosition.y >= config.core.layers) { - relativePosition.y = 0; - relativePosition.z++; + relativePosition.y = 0 + relativePosition.z++ } if (relativePosition.z >= 16) { - relativePosition.z = 0; + relativePosition.z = 0 } - const impulseMode = !bot.options.kaboom; + const impulseMode = !bot.options.kaboom const location = { x: core.start.x + relativePosition.x, y: core.start.y + relativePosition.y, - z: core.start.z + relativePosition.z, - }; + z: core.start.z + relativePosition.z + } - if (impulseMode) bot.write('update_command_block', {location, command: '', mode: 0, flags: 0}); - bot.write('update_command_block', {location, command: String(command).substring(0, 32767), mode: impulseMode ? 2 : 1, flags: 0b100}); + if (impulseMode) bot.write('update_command_block', { location, command: '', mode: 0, flags: 0 }) + bot.write('update_command_block', { location, command: String(command).substring(0, 32767), mode: impulseMode ? 2 : 1, flags: 0b100 }) } catch (e) { - bot.console.error(e); + bot.console.error(e) } }, - async loopPlace() { + async loopPlace () { try { - const fillCommand = `/minecraft:fill ${core.start.x} ${core.start.y} ${core.start.z} ${core.end.x} ${core.end.y} ${core.end.z} command_block{CustomName:'${JSON.stringify(config.core.customName)}'}`; - const location = {x: Math.floor(bot.position.x), y: Math.floor(bot.position.y) - 1, z: Math.floor(bot.position.z)}; + const fillCommand = `/minecraft:fill ${core.start.x} ${core.start.y} ${core.start.z} ${core.end.x} ${core.end.y} ${core.end.z} command_block{CustomName:'${JSON.stringify(config.core.customName)}'}` + const location = { x: Math.floor(bot.position.x), y: Math.floor(bot.position.y) - 1, z: Math.floor(bot.position.z) } bot.write('set_creative_slot', { slot: 36, item: { present: true, - itemId: mcData.itemsByName['repeating_command_block'].id, + itemId: mcData.itemsByName.repeating_command_block.id, itemCount: 64, nbtData: nbt.comp({ BlockEntityTag: nbt.comp({ Command: nbt.string(fillCommand), auto: nbt.byte(1), - TrackOutput: nbt.byte(0), - }), - }), - }, - }); + TrackOutput: nbt.byte(0) + }) + }) + } + }) bot.write('block_dig', { status: 0, location, - face: 1, - }); + face: 1 + }) bot.write('block_place', { location, @@ -87,34 +87,34 @@ function inject(bot, dcclient, config) { cursorX: 0.5, cursorY: 0.5, cursorZ: 0.5, - insideBlock: false, - }); + insideBlock: false + }) } catch (e) { - bot.console.error(e); + bot.console.error(e) } - }, - }; - - function fillCore() { - core.start = new Vec3( - Math.floor(bot.position.x / 16) * 16, - 0 /* bot.position.y */, - Math.floor(bot.position.z / 16) * 16, - ).floor(); - core.end = core.start.clone().translate(16, config.core.layers, 16).subtract(new Vec3(1, 1, 1)); - - bot.core.loopPlace(); + } } - bot.on('position', fillCore); + function fillCore () { + core.start = new Vec3( + Math.floor(bot.position.x / 16) * 16, + 0 /* bot.position.y */, + Math.floor(bot.position.z / 16) * 16 + ).floor() + core.end = core.start.clone().translate(16, config.core.layers, 16).subtract(new Vec3(1, 1, 1)) - const interval = setInterval(() => fillCore(), config.core.refillInterval); + bot.core.loopPlace() + } + + bot.on('position', fillCore) + + const interval = setInterval(() => fillCore(), config.core.refillInterval) bot.once('end', () => { - clearInterval(interval); - }); + clearInterval(interval) + }) - bot.core = core; + bot.core = core } -module.exports = {inject}; +module.exports = { inject } diff --git a/plugins/discord.js b/plugins/discord.js index 2de2590..d8db8a8 100644 --- a/plugins/discord.js +++ b/plugins/discord.js @@ -1,43 +1,44 @@ /* eslint-disable require-jsdoc */ /* eslint-disable max-len */ -const {escapeMarkdown} = require('../util/escapeMarkdown'); -async function inject(bot, dcclient, config) { - const channel = dcclient.channels.cache.get(config.discord.servers[bot.options.host]); +const { escapeMarkdown } = require('../util/escapeMarkdown') +async function inject (bot, dcclient, config) { + const chatMessage = require('prismarine-chat')(bot.version) + const channel = dcclient.channels.cache.get(config.discord.servers[bot.options.host]) - let queue = ''; + let queue = '' const queueInterval = setInterval(() => { - if (queue === '') return; + if (queue === '') return channel.send({ content: '```ansi\n' + queue.substring(0, 1986) + '\n```', allowedMentions: { - parse: [], - }, - }); - queue = ''; - }, 1000); + parse: [] + } + }) + queue = '' + }, 1000) bot.on('parsed_chat', (message) => { - const cleanMessage = escapeMarkdown(message.toAnsi(), true); + const cleanMessage = escapeMarkdown(message.toAnsi(), true) const discordMsg = cleanMessage - .replaceAll('@', '@\u200b') - .replaceAll('http', 'http\u200b') - .replaceAll('\u001b[9', '\u001b[3'); - if (message.toMotd().startsWith('§8[§eChomeNS §9Discord§8] §c')) return; - queue += '\n' + discordMsg; - }); + .replaceAll('@', '@\u200b') + .replaceAll('http', 'http\u200b') + .replaceAll('\u001b[9', '\u001b[3') + if (message.toMotd().startsWith('§8[§eChomeNS §9Discord§8] §c')) return + queue += '\n' + discordMsg + }) // handle discord messages!!! - async function handleDiscordMessages(message) { + async function handleDiscordMessages (message) { // Ignore messages from the bot itself - if (message.author.id === dcclient.user.id) return; + if (message.author.id === dcclient.user.id) return // Only handle messages in specified channel - if (message.channel.id !== channel.id) return; - if (message.content.startsWith(config.discord.prefix)) return; + if (message.channel.id !== channel.id) return + if (message.content.startsWith(config.discord.prefix)) return try { - const attachmentsComponent = []; + const attachmentsComponent = [] if (message.attachments) { message.attachments.forEach((value) => { attachmentsComponent.push({ @@ -45,70 +46,76 @@ async function inject(bot, dcclient, config) { color: 'green', clickEvent: { action: 'open_url', - value: value.proxyURL, - }, - }); - }); + value: value.proxyURL + } + }) + }) } const component = [ - {text: '[', color: 'dark_gray'}, - {text: 'ChomeNS ', color: 'yellow', + { text: '[', color: 'dark_gray' }, + { + text: 'ChomeNS ', + color: 'yellow', clickEvent: { action: 'open_url', - value: 'https://discord.gg/xdgCkUyaA4', - }, + value: 'https://discord.gg/xdgCkUyaA4' + } }, - {text: 'Discord', color: 'blue', + { + text: 'Discord', + color: 'blue', clickEvent: { action: 'open_url', - value: 'https://discord.gg/xdgCkUyaA4', - }, + value: 'https://discord.gg/xdgCkUyaA4' + } }, - {text: '] ', color: 'dark_gray'}, - {text: `${message.member.displayName}`, color: 'red', + { text: '] ', color: 'dark_gray' }, + { + text: `${message.member.displayName}`, + color: 'red', clickEvent: { action: 'copy_to_clipboard', - value: `${message.author.username}#${message.author.discriminator}`, + value: `${message.author.username}#${message.author.discriminator}` }, hoverEvent: { action: 'show_text', value: [ { text: message.author.username, - color: 'white', + color: 'white' }, { text: '#', - color: 'dark_gray', + color: 'dark_gray' }, { text: message.author.discriminator, - color: 'gray', + color: 'gray' }, '\n', { text: 'Click here to copy the tag to your clipboard', - color: 'green', - }, - ], - }, + color: 'green' + } + ] + } }, - {text: ' › ', color: 'dark_gray'}, + { text: ' › ', color: 'dark_gray' }, chatMessage.MessageBuilder.fromString('&7' + message.content), - attachmentsComponent.length === 0 ? '' : attachmentsComponent, - ]; - bot.tellraw('@a', component); + attachmentsComponent.length === 0 ? '' : attachmentsComponent + ] + bot.tellraw('@a', component) } catch (e) { - return; + } } bot.once('end', () => { - clearInterval(queueInterval); - dcclient.off('messageCreate', handleDiscordMessages); - }); + clearInterval(queueInterval) + dcclient.off('messageCreate', handleDiscordMessages) + }) - dcclient.on('messageCreate', handleDiscordMessages); + dcclient.on('messageCreate', handleDiscordMessages) }; -module.exports = {inject}; +module.exports = { inject } diff --git a/plugins/draw.js b/plugins/draw.js index 3f1b404..9747d4c 100644 --- a/plugins/draw.js +++ b/plugins/draw.js @@ -1,54 +1,54 @@ /* eslint-disable max-len */ -const convert = require('color-convert'); +const convert = require('color-convert') // eslint-disable-next-line require-jsdoc -function inject(bot) { +function inject (bot) { /** * draw which is totallynotskidded from ybot * @param {buffer} data data buffer * @param {*} info idk bout this * @param {object} prefix prefix in the output compoenent */ - function draw(data, info, prefix = {}) { - const pixels = []; + function draw (data, info, prefix = {}) { + const pixels = [] // Data Buffer -> RGB Array for (let i = 0; i < data.length; i += info.channels) { pixels.push([ data[i + 0], data[i + 1], - data[i + 2], - ]); + data[i + 2] + ]) } - const rows = []; + const rows = [] // RGB Array -> Rows Array for (let i = 0; i < pixels.length; i += info.width) { - const row = pixels.slice(i, i + info.width); + const row = pixels.slice(i, i + info.width) - rows.push(row); + rows.push(row) } - const messages = []; + const messages = [] for (const row of rows) { - const message = [{...prefix, text: ''}]; + const message = [{ ...prefix, text: '' }] for (const rgb of row) { message.push({ text: '⎮', - color: `#${convert.rgb.hex(rgb)}`, - }); + color: `#${convert.rgb.hex(rgb)}` + }) } - messages.push(message); + messages.push(message) } - for (const message of messages) bot.tellraw('@a', message); + for (const message of messages) bot.tellraw('@a', message) } - bot.draw = draw; + bot.draw = draw } -module.exports = {inject}; +module.exports = { inject } diff --git a/plugins/hash.js b/plugins/hash.js index 5cdee65..18808a1 100644 --- a/plugins/hash.js +++ b/plugins/hash.js @@ -1,15 +1,15 @@ /* eslint-disable max-len */ -const crypto = require('crypto'); +const crypto = require('crypto') module.exports = { - inject: function(bot, dcclient, config) { - bot.hash = ''; + inject: function (bot, dcclient, config) { + bot.hash = '' const interval = setInterval(() => { - bot.hash = crypto.createHash('sha256').update(Math.floor(Date.now() / 10000) + config.keys.normalKey).digest('hex').substring(0, 16); - bot.ownerHash = crypto.createHash('sha256').update(Math.floor(Date.now() / 10000) + config.keys.ownerHashKey).digest('hex').substring(0, 16); - }, 2000); + bot.hash = crypto.createHash('sha256').update(Math.floor(Date.now() / 10000) + config.keys.normalKey).digest('hex').substring(0, 16) + bot.ownerHash = crypto.createHash('sha256').update(Math.floor(Date.now() / 10000) + config.keys.ownerHashKey).digest('hex').substring(0, 16) + }, 2000) bot.once('end', () => { - clearInterval(interval); - }); - }, -}; + clearInterval(interval) + }) + } +} diff --git a/plugins/music.js b/plugins/music.js index b0974da..a5a75b6 100644 --- a/plugins/music.js +++ b/plugins/music.js @@ -1,7 +1,7 @@ /* eslint-disable require-jsdoc */ /* eslint-disable max-len */ -const {Midi} = require('@tonejs/midi'); -const {convertMidi} = require('../util/midi_converter'); +const { Midi } = require('@tonejs/midi') +const { convertMidi } = require('../util/midi_converter') const soundNames = { harp: 'minecraft:block.note_block.harp', @@ -19,130 +19,129 @@ const soundNames = { didgeridoo: 'minecraft:block.note_block.didgeridoo', bit: 'minecraft:block.note_block.bit', banjo: 'minecraft:block.note_block.banjo', - pling: 'minecraft:block.note_block.pling', -}; + pling: 'minecraft:block.note_block.pling' +} -function inject(bot) { - bot.music = function() {}; - bot.music.song = null; - bot.music.loop = 0; - bot.music.queue = []; - let time = 0; - let startTime = 0; - let noteIndex = 0; - bot.music.skip = function() { +function inject (bot) { + bot.music = function () {} + bot.music.song = null + bot.music.loop = 0 + bot.music.queue = [] + let time = 0 + let startTime = 0 + let noteIndex = 0 + bot.music.skip = function () { if (bot.music.loop === 2) { - bot.music.queue.push(bot.music.queue.shift()); - bot.music.play(bot.music.queue[0]); + bot.music.queue.push(bot.music.queue.shift()) + bot.music.play(bot.music.queue[0]) } else { - bot.music.queue.shift(); + bot.music.queue.shift() } - resetTime(); - }; + resetTime() + } const interval = setInterval(async () => { try { - if (!bot.music.queue.length) return; - bot.music.song = bot.music.queue[0]; - time = Date.now() - startTime; + if (!bot.music.queue.length) return + bot.music.song = bot.music.queue[0] + time = Date.now() - startTime while (bot.music.song.notes[noteIndex]?.time <= time) { - const note = bot.music.song.notes[noteIndex]; - const floatingPitch = 2 ** ((note.pitch - 12) / 12.0); - bot.core.run(`minecraft:execute as @a[tag=!nomusic] at @s run playsound ${soundNames[note.instrument]} record @s ~ ~ ~ ${note.volume} ${floatingPitch}`); - noteIndex++; - bot.core.run('minecraft:title @a[tag=!nomusic] actionbar ' + JSON.stringify(toComponent())); + const note = bot.music.song.notes[noteIndex] + const floatingPitch = 2 ** ((note.pitch - 12) / 12.0) + bot.core.run(`minecraft:execute as @a[tag=!nomusic] at @s run playsound ${soundNames[note.instrument]} record @s ~ ~ ~ ${note.volume} ${floatingPitch}`) + noteIndex++ + bot.core.run('minecraft:title @a[tag=!nomusic] actionbar ' + JSON.stringify(toComponent())) if (noteIndex >= bot.music.song.notes.length) { if (bot.music.loop === 1) { - resetTime(); - return; + resetTime() + return } if (bot.music.loop === 2) { - resetTime(); - bot.music.queue.push(bot.music.queue.shift()); - bot.music.play(bot.music.queue[0]); - return; + resetTime() + bot.music.queue.push(bot.music.queue.shift()) + bot.music.play(bot.music.queue[0]) + return } - bot.music.queue.shift(); + bot.music.queue.shift() if (!bot.music.queue[0]) { - bot.tellraw('@a', {text: 'Finished playing every song in the queue'}); - bot.music.stop(); - return; + bot.tellraw('@a', { text: 'Finished playing every song in the queue' }) + bot.music.stop() + return } if (bot.music.queue[0].notes.length > 0) { - if (bot.music.queue.length !== 1) resetTime(); - bot.music.play(bot.music.queue[0]); - return; + if (bot.music.queue.length !== 1) resetTime() + bot.music.play(bot.music.queue[0]) + return } } } } catch (e) {} - }, 50); + }, 50) bot.once('end', () => { - clearInterval(interval); - }); + clearInterval(interval) + }) - bot.music.load = function(buffer, fallbackName = '[unknown]') { + bot.music.load = function (buffer, fallbackName = '[unknown]') { // TODO: NBS Support - const midi = new Midi(buffer); - const song = convertMidi(midi); - if (song.name === '') song.name = fallbackName; - return song; - }; - - bot.music.play = function(song) { - loop = song.loop; - if (bot.music.queue.length === 1) resetTime(); - }; - - bot.music.stop = function() { - bot.music.song = null; - bot.music.loop = 0; - bot.music.queue = []; - resetTime(); - }; - - function resetTime() { - time = 0; - startTime = Date.now(); - noteIndex = 0; + const midi = new Midi(buffer) + const song = convertMidi(midi) + if (song.name === '') song.name = fallbackName + return song } - function formatTime(time) { - const seconds = Math.floor(time / 1000); - - return `${Math.floor(seconds / 60)}:${(seconds % 60).toString().padStart(2, '0')}`; + bot.music.play = function () { + if (bot.music.queue.length === 1) resetTime() } - function toComponent() { + bot.music.stop = function () { + bot.music.song = null + bot.music.loop = 0 + bot.music.queue = [] + resetTime() + } + + function resetTime () { + time = 0 + startTime = Date.now() + noteIndex = 0 + } + + function formatTime (time) { + const seconds = Math.floor(time / 1000) + + return `${Math.floor(seconds / 60)}:${(seconds % 60).toString().padStart(2, '0')}` + } + + function toComponent () { const component = [ - {text: '[', color: 'dark_gray'}, - {text: 'ChomeNS Bot', color: 'yellow'}, - {text: '] ', color: 'dark_gray'}, - {text: 'Now Playing', color: 'gold'}, - {text: ' | ', color: 'dark_gray'}, - {text: bot.music.song.name, color: 'green'}, - {text: ' | ', color: 'dark_gray'}, - {text: formatTime(time), color: 'gray'}, - {text: ' / ', color: 'dark_gray'}, - {text: formatTime(bot.music.song.length), color: 'gray'}, - {text: ' | ', color: 'dark_gray'}, - {text: noteIndex, color: 'gray'}, - {text: ' / ', color: 'dark_gray'}, - {text: bot.music.song.notes.length, color: 'gray'}, - ]; + { text: '[', color: 'dark_gray' }, + { text: 'ChomeNS Bot', color: 'yellow' }, + { text: '] ', color: 'dark_gray' }, + { text: 'Now Playing', color: 'gold' }, + { text: ' | ', color: 'dark_gray' }, + { text: bot.music.song.name, color: 'green' }, + { text: ' | ', color: 'dark_gray' }, + { text: formatTime(time), color: 'gray' }, + { text: ' / ', color: 'dark_gray' }, + { text: formatTime(bot.music.song.length), color: 'gray' }, + { text: ' | ', color: 'dark_gray' }, + { text: noteIndex, color: 'gray' }, + { text: ' / ', color: 'dark_gray' }, + { text: bot.music.song.notes.length, color: 'gray' } + ] if (bot.music.loop === 1) { - component.push({text: ' | ', color: 'dark_gray'}); - component.push({text: 'Looping Current', color: 'green'}); + component.push({ text: ' | ', color: 'dark_gray' }) + component.push({ text: 'Looping Current', color: 'green' }) } if (bot.music.loop === 2) { - component.push({text: ' | ', color: 'dark_gray'}); - component.push({text: 'Looping All', color: 'green'}); + component.push({ text: ' | ', color: 'dark_gray' }) + component.push({ text: 'Looping All', color: 'green' }) } - return component; + return component } } -module.exports = {inject}; +module.exports = { inject } diff --git a/plugins/players.js b/plugins/players.js index afe8a4f..8092578 100644 --- a/plugins/players.js +++ b/plugins/players.js @@ -1,157 +1,157 @@ /* eslint-disable max-len */ /* eslint-disable require-jsdoc */ class PlayerList { - list = []; + list = [] - addPlayer(player) { - this.removePlayer(player); + addPlayer (player) { + this.removePlayer(player) - this.list.push(player); + this.list.push(player) } - hasPlayer(player) { - return this.getPlayer(player) !== undefined; + hasPlayer (player) { + return this.getPlayer(player) !== undefined } - getPlayer(player) { - let identifier; + getPlayer (player) { + let identifier switch (typeof player) { case 'object': - identifier = player.UUID; - break; + identifier = player.UUID + break case 'string': - identifier = player; - break; + identifier = player + break default: - throw new Error(`Get player called with ${player}`); + throw new Error(`Get player called with ${player}`) } - return this.list.find((player) => [player.UUID, player.name].some((item) => item === identifier)); + return this.list.find((player) => [player.UUID, player.name].some((item) => item === identifier)) } - getPlayers() { - return Array.from(this.list); + getPlayers () { + return Array.from(this.list) } - removePlayer(player) { - this.list = this.list.filter(({UUID}) => UUID !== player.UUID); + removePlayer (player) { + this.list = this.list.filter(({ UUID }) => UUID !== player.UUID) } } class TabCompletePlayerRequester { - id = 0; - queue = {}; - bot; + id = 0 + queue = {} + bot - constructor(bot) { - this.bot = bot; + constructor (bot) { + this.bot = bot bot._client.on('target_packet', (name, data) => { - if (name !== 'tab_complete') return; + if (name !== 'tab_complete') return const players = data.matches - .filter((match) => !match.tooltip) - .map((match) => match.match); + .filter((match) => !match.tooltip) + .map((match) => match.match) - this.returnPlayerList(data.transactionId, players); - }); + this.returnPlayerList(data.transactionId, players) + }) } - getPlayerList() { + getPlayerList () { return new Promise((resolve) => { - this.id++; - this.id %= 256; + this.id++ + this.id %= 256 - this.queue[this.id] = resolve; + this.queue[this.id] = resolve - setTimeout(() => this.returnPlayerList(this.id, this.getPlayerList()), 1000 * 5); + setTimeout(() => this.returnPlayerList(this.id, this.getPlayerList()), 1000 * 5) - this.bot.write('tab_complete', {transactionId: this.id, text: '/scoreboard players add '}); - }); + this.bot.write('tab_complete', { transactionId: this.id, text: '/scoreboard players add ' }) + }) } - returnPlayerList(id, players) { - if (!this.queue[id]) return; + returnPlayerList (id, players) { + if (!this.queue[id]) return - this.queue[id](players); + this.queue[id](players) - delete this.queue[id]; + delete this.queue[id] } } -function inject(bot, dcclient, config) { - bot.players = new PlayerList(); - bot.requester = new TabCompletePlayerRequester(bot); +function inject (bot, dcclient, config) { + bot.players = new PlayerList() + bot.requester = new TabCompletePlayerRequester(bot) bot._client.on('player_info', (packet) => { for (const player of packet.data) { switch (packet.action) { case 0: - addPlayer(player, packet); - break; + addPlayer(player, packet) + break case 1: - updateGamemode(player, packet); - break; + updateGamemode(player, packet) + break case 2: - updatePing(player, packet); - break; + updatePing(player, packet) + break case 3: - updateDisplayName(player, packet); - break; + updateDisplayName(player, packet) + break case 4: - removePlayer(player, packet); - break; + removePlayer(player, packet) + break } } - }); + }) - function addPlayer(player, packet) { + function addPlayer (player, packet) { // if (bot.players.getPlayer(player)) bot.emit('player_unvanished', player, packet); - /* else */bot.emit('player_added', player, packet); + /* else */bot.emit('player_added', player, packet) - bot.players.addPlayer(player); + bot.players.addPlayer(player) } - function updateGamemode(player, packet) { - const fullPlayer = bot.players.getPlayer(player); + function updateGamemode (player, packet) { + const fullPlayer = bot.players.getPlayer(player) - bot.emit('onPlayerGamemodeUpdate', player, packet); + bot.emit('onPlayerGamemodeUpdate', player, packet) - if (fullPlayer === undefined) return; + if (fullPlayer === undefined) return - fullPlayer.gamemode = player.gamemode; + fullPlayer.gamemode = player.gamemode } - function updatePing(player, packet) { - const fullPlayer = bot.players.getPlayer(player); + function updatePing (player, packet) { + const fullPlayer = bot.players.getPlayer(player) - bot.emit('player_ping_updated', player, packet); + bot.emit('player_ping_updated', player, packet) - if (fullPlayer === undefined) return; + if (fullPlayer === undefined) return - fullPlayer.ping = player.ping; + fullPlayer.ping = player.ping } - function updateDisplayName(player, packet) { - const fullPlayer = bot.players.getPlayer(player); + function updateDisplayName (player, packet) { + const fullPlayer = bot.players.getPlayer(player) - bot.emit('player_display_name_updated', player, packet); + bot.emit('player_display_name_updated', player, packet) - if (fullPlayer === undefined) return; + if (fullPlayer === undefined) return - fullPlayer.displayName = player.displayName; + fullPlayer.displayName = player.displayName } - async function removePlayer(player, packet) { + async function removePlayer (player, packet) { // const fullPlayer = bot.players.getPlayer(player); // const players = await bot.requester.getPlayerList(); // // if (fullPlayer && players.some((name) => name === fullPlayer.name)) bot.emit('player_vanished', player); - /* else */bot.emit('player_removed', player, packet); + /* else */bot.emit('player_removed', player, packet) - bot.players.removePlayer(player); + bot.players.removePlayer(player) } } -module.exports = {inject}; +module.exports = { inject } diff --git a/plugins/position.js b/plugins/position.js index 498e367..488f628 100644 --- a/plugins/position.js +++ b/plugins/position.js @@ -1,10 +1,10 @@ /* eslint-disable require-jsdoc */ -function inject(bot) { +function inject (bot) { bot._client.on('position', (position) => { - bot.position = position; - bot.write('teleport_confirm', {teleportId: position.teleportId}); - bot.emit('position', position); - }); + bot.position = position + bot.write('teleport_confirm', { teleportId: position.teleportId }) + bot.emit('position', position) + }) } -module.exports = {inject}; +module.exports = { inject } diff --git a/plugins/self_care.js b/plugins/self_care.js index 9046c50..7f7e13c 100644 --- a/plugins/self_care.js +++ b/plugins/self_care.js @@ -1,78 +1,78 @@ /* eslint-disable require-jsdoc */ /* eslint-disable max-len */ -function inject(bot, dcclient, config) { - let vanish = false; - let cspy = false; - let op = true; - let gameMode = 1; - let prefix = false; - let muted = false; - let endCredits = false; +function inject (bot, dcclient, config) { + let vanish = false + let cspy = false + let op = true + let gameMode = 1 + let prefix = false + let muted = false + let endCredits = false bot.on('parsed_chat', (data) => { - if (data.toString() === 'You are now completely invisible to normal users, and hidden from in-game commands.') vanish = true; + if (data.toString() === 'You are now completely invisible to normal users, and hidden from in-game commands.') vanish = true if (!bot.visibility && data.toString().startsWith('Vanish for ') && data.toString().endsWith('disabled') - ) vanish = false; - if (data.toString() === 'Successfully enabled CommandSpy' || data.toString() === ' Enabled your command spy.' || data.toString() === ' Your command spy is already enabled.') cspy = true; - if (data.toString() === 'Successfully disabled CommandSpy' || data.toString() === ' Disabled your command spy.') cspy = false; + ) vanish = false + if (data.toString() === 'Successfully enabled CommandSpy' || data.toString() === ' Enabled your command spy.' || data.toString() === ' Your command spy is already enabled.') cspy = true + if (data.toString() === 'Successfully disabled CommandSpy' || data.toString() === ' Disabled your command spy.') cspy = false if (data.toString() === 'You now have the tag: [ChomeNS Bot]') { - prefix = true; - return; + prefix = true + return } - if (data.toString().startsWith('You no longer have a tag')) prefix = false; - if (data.toString().startsWith('You now have the tag: ')) prefix = false; - if (data.toString().startsWith('You have been muted')) muted = true; - if (data.toString() === 'You have been unmuted.') muted = false; - }); + if (data.toString().startsWith('You no longer have a tag')) prefix = false + if (data.toString().startsWith('You now have the tag: ')) prefix = false + if (data.toString().startsWith('You have been muted')) muted = true + if (data.toString() === 'You have been unmuted.') muted = false + }) bot._client.on('entity_status', (data) => { - if (data.entityId !== bot.entityId) return; + if (data.entityId !== bot.entityId) return switch (data.entityStatus) { case 24: - op = false; + op = false - bot.emit('deop'); - break; + bot.emit('deop') + break case 28: - op = true; + op = true - bot.emit('op'); - break; + bot.emit('op') + break } - bot.emit('entity_status', data); - }); + bot.emit('entity_status', data) + }) bot._client.on('game_state_change', (data) => { - if (data.reason === 4) endCredits = true; + if (data.reason === 4) endCredits = true - if (data.reason !== 3) return; + if (data.reason !== 3) return - gameMode = data.gameMode; - }); + gameMode = data.gameMode + }) bot._client.once('login', (data) => { - gameMode = data.gameMode; - }); + gameMode = data.gameMode + }) const interval = setInterval(() => { if (bot.options.kaboom) { - if (!prefix && config.self_care.prefix) bot.chat('/extras:prefix &8[&eChomeNS Bot&8]'); - if (!op && config.self_care.op) bot.chat('/minecraft:op @s[type=player]'); - if (!cspy && config.self_care.cspy) bot.chat('/commandspy:commandspy on'); + if (!prefix && config.self_care.prefix) bot.chat('/extras:prefix &8[&eChomeNS Bot&8]') + if (!op && config.self_care.op) bot.chat('/minecraft:op @s[type=player]') + if (!cspy && config.self_care.cspy) bot.chat('/commandspy:commandspy on') } - if (!vanish && config.self_care.vanish) bot.chat('/essentials:vanish enable'); - if (gameMode !== 1 && config.self_care.gamemode) bot.chat('/minecraft:gamemode creative @s[type=player]'); - if (muted && config.self_care.mute) bot.chat('/essentials:mute ' + bot.uuid); - if (endCredits && config.self_care.endCredits) bot.write('client_command', {payload: 0}); - }, config.self_care_check_interval); + if (!vanish && config.self_care.vanish) bot.chat('/essentials:vanish enable') + if (gameMode !== 1 && config.self_care.gamemode) bot.chat('/minecraft:gamemode creative @s[type=player]') + if (muted && config.self_care.mute) bot.chat('/essentials:mute ' + bot.uuid) + if (endCredits && config.self_care.endCredits) bot.write('client_command', { payload: 0 }) + }, config.self_care_check_interval) bot.once('end', () => { - clearInterval(interval); - }); + clearInterval(interval) + }) }; -module.exports = {inject}; +module.exports = { inject } diff --git a/plugins/tellraw.js b/plugins/tellraw.js index d14ebab..b3b4d42 100644 --- a/plugins/tellraw.js +++ b/plugins/tellraw.js @@ -1,9 +1,9 @@ /* eslint-disable require-jsdoc */ /* eslint-disable max-len */ -function inject(bot) { - bot.tellraw = function(selector, message) { - bot.core.run(`minecraft:tellraw ${selector} ${typeof message === 'string' ? message : JSON.stringify(message)}`); - }; +function inject (bot) { + bot.tellraw = function (selector, message) { + bot.core.run(`minecraft:tellraw ${selector} ${typeof message === 'string' ? message : JSON.stringify(message)}`) + } }; -module.exports = {inject}; +module.exports = { inject } diff --git a/util/between.js b/util/between.js index 5d4466f..2d7c3ba 100644 --- a/util/between.js +++ b/util/between.js @@ -5,9 +5,9 @@ module.exports = { * @param {Number} max * @return {Number} */ - between: function(min, max) { + between: function (min, max) { return Math.floor( - Math.random() * (max - min) + min, - ); - }, -}; + Math.random() * (max - min) + min + ) + } +} diff --git a/util/chat.js b/util/chat.js index 0ee0f0d..775e0e8 100644 --- a/util/chat.js +++ b/util/chat.js @@ -5,30 +5,30 @@ * @param {object} ChatMessage basically just require prismarine-chat * @param {object} bot bot */ -function chatPacketListener(packet, ChatMessage, bot) { +function chatPacketListener (packet, ChatMessage, bot) { // try catch prevents hi % exploit (it uses prismarine-chat) // and try catch also prevents json parse error try { - const parsedMessage = JSON.parse(packet.message); + const parsedMessage = JSON.parse(packet.message) if (parsedMessage.translate === 'translation.test.invalid' || - parsedMessage.translate === 'translation.test.invalid2') return; + parsedMessage.translate === 'translation.test.invalid2') return // down here it prevents command set message // for ayunboom cuz its 1.17.1 // VVVVVVVVVVVVVVVVVVVVVVVVVVVV if (parsedMessage.extra) { - if (parsedMessage.extra[0].text === 'Command set: ') return; + if (parsedMessage.extra[0].text === 'Command set: ') return } // for 1.18 or newer(?) // VVVVVVVVVVVVVVVVVVVVV - if (parsedMessage.translate === 'advMode.setCommand.success') return; + if (parsedMessage.translate === 'advMode.setCommand.success') return - const message = ChatMessage.fromNotch(packet.message); + const message = ChatMessage.fromNotch(packet.message) - bot.emit('parsed_chat', message, packet); + bot.emit('parsed_chat', message, packet) } catch (e) { - return; + } }; @@ -38,53 +38,53 @@ function chatPacketListener(packet, ChatMessage, bot) { * @param {object} packet chat packet * @param {object} bot bot */ -function parsePlayerMessages(message, packet, bot) { +function parsePlayerMessages (message, packet, bot) { try { // prevent braille cuz it CRASHES THE ENTIRE LAPTOP // but sometimes this may not work - if (message.toString().includes('⣿')) return; + if (message.toString().includes('⣿')) return // then here is all the player message parsing thing - const raw = message.toMotd().substring(0, 32767); + const raw = message.toMotd().substring(0, 32767) if (raw.match(/.* .*: .*/g)) { - const username = raw.replace(/.*?\[.*?\] /g, '').replace(/:.*/g, '').replace(/§#....../gm, ''); - const message = raw.split(': ')[1]; - bot.emit('message', username, message, packet.sender); + const username = raw.replace(/.*?\[.*?\] /g, '').replace(/:.*/g, '').replace(/§#....../gm, '') + const message = raw.split(': ')[1] + bot.emit('message', username, message, packet.sender) } else if (raw.match(/.* .*\u203a .*/g)) { - const username = raw.replace(/.*?\[.*?\] /g, '').replace(/\u203a.*/g, '').replace(/§#....../gm, '').split(' ')[0]; - const message = raw.split('\u203a ')[1].substring(2); - bot.emit('message', username, message, packet.sender); + const username = raw.replace(/.*?\[.*?\] /g, '').replace(/\u203a.*/g, '').replace(/§#....../gm, '').split(' ')[0] + const message = raw.split('\u203a ')[1].substring(2) + bot.emit('message', username, message, packet.sender) } else if (raw.match(/.* .*\u00BB .*/g)) { - const username = raw.replace(/.*?\[.*?\] /g, '').replace(/\u00BB.*/g, '').replace(/§#....../gm, '').split(' ')[0]; - const message = raw.split('\u00BB ')[1].substring(2); - bot.emit('message', username, message, packet.sender); + const username = raw.replace(/.*?\[.*?\] /g, '').replace(/\u00BB.*/g, '').replace(/§#....../gm, '').split(' ')[0] + const message = raw.split('\u00BB ')[1].substring(2) + bot.emit('message', username, message, packet.sender) } else if (raw.match(/<.*> .*/g)) { - const username = raw.substring(1).split('>')[0]; - const message = raw.split('> ')[1]; + const username = raw.substring(1).split('>')[0] + const message = raw.split('> ')[1] - bot.emit('message', username, message, packet.sender); + bot.emit('message', username, message, packet.sender) } else if (raw.match(/§.*§b: §b\/.*/g)) { - const username = raw.split('§b: §b')[0]; - const command = raw.split('§b: §b')[1]; + const username = raw.split('§b: §b')[0] + const command = raw.split('§b: §b')[1] - bot.emit('cspy', username, command); + bot.emit('cspy', username, command) } else if (raw.match(/§.*§e: §e\/.*/g)) { - const username = raw.split('§e: §e')[0]; - const command = raw.split('§e: §e')[1]; - bot.emit('cspy', username, command); + const username = raw.split('§e: §e')[0] + const command = raw.split('§e: §e')[1] + bot.emit('cspy', username, command) } else if (raw.match(/§.*§b: \/.*/g)) { - const username = raw.split('§b: ')[0]; - const command = raw.split('§b: ')[1]; + const username = raw.split('§b: ')[0] + const command = raw.split('§b: ')[1] - bot.emit('cspy', username, command); + bot.emit('cspy', username, command) } else if (raw.match(/§.*§e: \/.*/g)) { - const username = raw.split('§e: ')[0]; - const command = raw.split('§e: ')[1]; - bot.emit('cspy', username, command); + const username = raw.split('§e: ')[0] + const command = raw.split('§e: ')[1] + bot.emit('cspy', username, command) } } catch (e) { - return; + } }; -module.exports = {chatPacketListener, parsePlayerMessages}; +module.exports = { chatPacketListener, parsePlayerMessages } diff --git a/util/colors/minecraft.js b/util/colors/minecraft.js index 4811a2d..54f6180 100644 --- a/util/colors/minecraft.js +++ b/util/colors/minecraft.js @@ -11,13 +11,13 @@ const styles = { special: '\xa73', string: '\xa72', symbol: '\xa72', - undefined: '\xa78', -}; - -function stylize(str, styleType) { - const style = styles[styleType]; - if (style !== undefined) return `${style}${str}\xa7r`; - return str; + undefined: '\xa78' } -module.exports = {stylize, styles}; +function stylize (str, styleType) { + const style = styles[styleType] + if (style !== undefined) return `${style}${str}\xa7r` + return str +} + +module.exports = { stylize, styles } diff --git a/util/containsIllegalCharacters.js b/util/containsIllegalCharacters.js index 0d3e51d..77c2ddc 100644 --- a/util/containsIllegalCharacters.js +++ b/util/containsIllegalCharacters.js @@ -4,16 +4,16 @@ * @param {String} character the character * @return {boolean} allowed */ -function isAllowedCharacter(character) { - return character !== '\xa7' && character >= ' ' && character !== '\x7f'; +function isAllowedCharacter (character) { + return character !== '\xa7' && character >= ' ' && character !== '\x7f' } /** * mc chat check if contains illegal chars. * @param {String} string the string * @return {boolean} if contains then true else false */ -function containsIllegalCharacters(string) { - for (let i = 0; i < string.length; i++) if (!isAllowedCharacter(string[i])) return true; +function containsIllegalCharacters (string) { + for (let i = 0; i < string.length; i++) if (!isAllowedCharacter(string[i])) return true } -module.exports = {containsIllegalCharacters}; +module.exports = { containsIllegalCharacters } diff --git a/util/escapeMarkdown.js b/util/escapeMarkdown.js index a4442aa..5bdc88f 100644 --- a/util/escapeMarkdown.js +++ b/util/escapeMarkdown.js @@ -4,19 +4,19 @@ * @param {Boolean} zwsp * @return {String} */ -function escapeMarkdown(text, zwsp) { - let unescaped; - let escaped; +function escapeMarkdown (text, zwsp) { + let unescaped + let escaped try { - unescaped = text.replace(/\\(\*|@|_|`|~|\\)/g, '$1'); - escaped = unescaped.replace(/(\*|@|_|`|~|\\)/g, zwsp ? - '\u200b\u200b$1' : - '\\$1', - ); + unescaped = text.replace(/\\(\*|@|_|`|~|\\)/g, '$1') + escaped = unescaped.replace(/(\*|@|_|`|~|\\)/g, zwsp + ? '\u200b\u200b$1' + : '\\$1' + ) } catch (e) { - return unescaped; + return unescaped } - return escaped; + return escaped } -module.exports = {escapeMarkdown}; +module.exports = { escapeMarkdown } diff --git a/util/file-exists.js b/util/file-exists.js index 218b8bf..ddf102e 100644 --- a/util/file-exists.js +++ b/util/file-exists.js @@ -1,19 +1,19 @@ -const fs = require('fs/promises'); +const fs = require('fs/promises') /** * check if file exists * @param {String} filepath the file path * @return {boolean} if file exists true else false */ -async function fileExists(filepath) { +async function fileExists (filepath) { try { - await fs.access(filepath); - return true; + await fs.access(filepath) + return true } catch (error) { - if (error.code !== 'ENOENT') throw error; + if (error.code !== 'ENOENT') throw error - return false; + return false } } -module.exports = fileExists; +module.exports = fileExists diff --git a/util/file-list.js b/util/file-list.js index 30f7142..f663251 100644 --- a/util/file-list.js +++ b/util/file-list.js @@ -1,18 +1,18 @@ -const fs = require('fs/promises'); +const fs = require('fs/promises') /** * just list the files * @param {String} filepath file path * @return {Array} component. */ -async function list(filepath = '.') { - const files = await fs.readdir(filepath); +async function list (filepath = '.') { + const files = await fs.readdir(filepath) - const component = []; + const component = [] files.forEach((filename, index) => { - component.push(filename); - }); - return component; + component.push(filename) + }) + return component } -module.exports = list; +module.exports = list diff --git a/util/generateEaglerUsername.js b/util/generateEaglerUsername.js index 6b2f5b3..a8a4b74 100644 --- a/util/generateEaglerUsername.js +++ b/util/generateEaglerUsername.js @@ -3,21 +3,21 @@ const profanityNames = ['Eagler', 'Eagler', 'Bitch', 'Cock', 'Milf', 'Milf', 'Ye 'Eag', 'Deevis', 'Chode', 'Deev', 'Deev', 'Fucker', 'Fucking', 'Dumpster', 'Dumpster', 'Cum', 'Chad', 'Egg', 'Fudgler', 'Fudgli', 'Yee', 'Yee', 'Yee', 'Yeet', 'Flumpter', 'Darvy', 'Darver', 'Darver', - 'Fuck', 'Fuck', 'Frick', 'Eagler', 'Vigg', 'Vigg', 'Cunt', 'Darvig', -]; + 'Fuck', 'Fuck', 'Frick', 'Eagler', 'Vigg', 'Vigg', 'Cunt', 'Darvig' +] const names = ['Yeeish', 'Yeeish', 'Yee', 'Yee', 'Yeer', 'Yeeler', 'Eagler', 'Eagl', - 'Darver', 'Darvler', 'Vool', 'Vigg', 'Vigg', 'Deev', 'Yigg', 'Yeeg']; + 'Darver', 'Darvler', 'Vool', 'Vigg', 'Vigg', 'Deev', 'Yigg', 'Yeeg'] /** * gets a random item in an array * @param {Array} arr the array * @return {*} the item in the array */ -function getRandomItem(arr) { - const randomIndex = Math.floor(Math.random() * arr.length); - const item = arr[randomIndex]; +function getRandomItem (arr) { + const randomIndex = Math.floor(Math.random() * arr.length) + const item = arr[randomIndex] - return item; + return item } /** @@ -25,15 +25,15 @@ function getRandomItem(arr) { * @param {boolean} profanity bad words. * @return {String} the output of the generated eagler username */ -function genUsername(profanity) { - let username; +function genUsername (profanity) { + let username if (profanity) { - username = getRandomItem(profanityNames) + getRandomItem(profanityNames) + (10 + Math.floor(Math.random() * 90)); + username = getRandomItem(profanityNames) + getRandomItem(profanityNames) + (10 + Math.floor(Math.random() * 90)) } else { - username = getRandomItem(names) + getRandomItem(names) + (10 + Math.floor(Math.random() * 90)); + username = getRandomItem(names) + getRandomItem(names) + (10 + Math.floor(Math.random() * 90)) } - return username; + return username } -module.exports = genUsername; +module.exports = genUsername diff --git a/util/image.js b/util/image.js index d484a31..4a17c22 100644 --- a/util/image.js +++ b/util/image.js @@ -4,24 +4,24 @@ * @param {number} height height * @return {object} width and height */ -function resize(width, height) { - const aspectRatio = width / height; +function resize (width, height) { + const aspectRatio = width / height - let optimalWidth = Math.round(aspectRatio * 20 * (27 / 3)); - let optimalHeight = 20; + let optimalWidth = Math.round(aspectRatio * 20 * (27 / 3)) + let optimalHeight = 20 if (optimalWidth > 320) { - const reduction = optimalWidth / 320; + const reduction = optimalWidth / 320 - optimalWidth = 320; + optimalWidth = 320 - optimalHeight *= reduction; + optimalHeight *= reduction } return { width: Math.floor(optimalWidth), - height: Math.floor(optimalHeight), - }; + height: Math.floor(optimalHeight) + } } -module.exports = {resize}; +module.exports = { resize } diff --git a/util/loadPlugins.js b/util/loadPlugins.js index bf75203..6e29fa2 100644 --- a/util/loadPlugins.js +++ b/util/loadPlugins.js @@ -1,7 +1,7 @@ /* eslint-disable max-len */ -const fs = require('fs/promises'); -const util = require('util'); -const path = require('path'); +const fs = require('fs/promises') +const util = require('util') +const path = require('path') /** * load plugins @@ -10,19 +10,19 @@ const path = require('path'); * @param {object} config the config * @param {object} rl readline. */ -async function loadPlugins(bot, dcclient, config, rl) { - const dir = path.join(__dirname, '..', 'plugins'); - const plugins = await fs.readdir(dir); +async function loadPlugins (bot, dcclient, config, rl) { + const dir = path.join(__dirname, '..', 'plugins') + const plugins = await fs.readdir(dir) plugins.forEach((plugin) => { - if (!plugin.endsWith('.js')) return; + if (!plugin.endsWith('.js')) return try { - const plug = require(path.join(dir, plugin)); - plug.inject(bot, dcclient, config, rl); + const plug = require(path.join(dir, plugin)) + plug.inject(bot, dcclient, config, rl) } catch (e) { - console.log(`Plugin ${plugin} is having exception loading the plugin:`); - console.log(util.inspect(e)); + console.log(`Plugin ${plugin} is having exception loading the plugin:`) + console.log(util.inspect(e)) } - }); + }) }; -module.exports = {loadPlugins}; +module.exports = { loadPlugins } diff --git a/util/load_files.js b/util/load_files.js index 5ff146d..bbe0dc1 100644 --- a/util/load_files.js +++ b/util/load_files.js @@ -1,25 +1,25 @@ -const fs = require('fs/promises'); -const path = require('path'); +const fs = require('fs/promises') +const path = require('path') /** * loads js files * @param {string} directory the directory that contains the js files * @return {Array} an array of require()ed js files */ -async function loadPlugins(directory) { - const plugins = []; +async function loadPlugins (directory) { + const plugins = [] for (const filename of await fs.readdir(directory)) { - if (!filename.endsWith('.js')) continue; + if (!filename.endsWith('.js')) continue - const filepath = path.join(directory, filename); + const filepath = path.join(directory, filename) - const plugin = require(filepath); + const plugin = require(filepath) - plugins.push(plugin); + plugins.push(plugin) } - return plugins; + return plugins } -module.exports = loadPlugins; +module.exports = loadPlugins diff --git a/util/secondToHms.js b/util/secondToHms.js index 9ca23b0..bfefb87 100644 --- a/util/secondToHms.js +++ b/util/secondToHms.js @@ -3,15 +3,15 @@ * @param {Number} d seconds * @return {String} X hour, X minute, X second */ -function secondsToHms(d) { - d = Number(d); - const h = Math.floor(d / 3600); - const m = Math.floor(d % 3600 / 60); - const s = Math.floor(d % 3600 % 60); - const hDisplay = h > 0 ? h + (h == 1 ? ' hour, ' : ' hours, ') : ''; - const mDisplay = m > 0 ? m + (m == 1 ? ' minute, ' : ' minutes, ') : ''; - const sDisplay = s > 0 ? s + (s == 1 ? ' second' : ' seconds') : ''; - return hDisplay + mDisplay + sDisplay; +function secondsToHms (d) { + d = Number(d) + const h = Math.floor(d / 3600) + const m = Math.floor(d % 3600 / 60) + const s = Math.floor(d % 3600 % 60) + const hDisplay = h > 0 ? h + (h === 1 ? ' hour, ' : ' hours, ') : '' + const mDisplay = m > 0 ? m + (m === 1 ? ' minute, ' : ' minutes, ') : '' + const sDisplay = s > 0 ? s + (s === 1 ? ' second' : ' seconds') : '' + return hDisplay + mDisplay + sDisplay } -module.exports = {secondsToHms}; +module.exports = { secondsToHms }