├── .gitignore ├── MC Server Bot ├── commands │ ├── clear.js │ ├── cmd.js │ ├── help.js │ ├── info.js │ ├── servers.js │ ├── start.js │ ├── status.js │ └── stop.js ├── config.js ├── index.js ├── notes.txt ├── package-lock.json └── package.json └── Servers └── Default ├── eula.txt ├── logs └── latest.log ├── server.jar └── server.properties /.gitignore: -------------------------------------------------------------------------------- 1 | MC SERVER BOT/node_modules/ 2 | -------------------------------------------------------------------------------- /MC Server Bot/commands/clear.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'clear', 3 | description: 'clears msgs', 4 | execute(message, args){ 5 | if (!args[1]) return message.reply("specify number of messages ex.\n!clear 10"); 6 | var num = parseInt(args[1]); 7 | if(num>100){ 8 | for(i = 0;i !servers - This command provides a list of the current servers.\n\ 8 | \n> !status - This will tell you what servers are already running.\n\ 9 | \n> !info "ServerName" - This will provide the info of "ServerName" if configured.\n\ 10 | \n> !start "ServerName" - This command will start the given "ServerName".\n\ 11 | \n> !stop "ServerName - This will stop whatever server is running DO NOT forget to stop the server if you"re the last one off.\n\ 12 | \n> !cmd "ServerName" "_____" - This command can directly pass "______" to the server console.'); 13 | } 14 | } -------------------------------------------------------------------------------- /MC Server Bot/commands/info.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'info', 3 | description: 'info for each server', 4 | execute(message, args, embedList){ 5 | if (embedList.length == 0) { return message.reply('no embeds currently configured.') } 6 | 7 | for (i = 0; i < embedList.length; i++) { 8 | if (args[1] == embedList[i].title) { message.channel.send(embedList[i]); } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /MC Server Bot/commands/servers.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'servers', 3 | description: 'shows server list', 4 | execute(message, serverList) { 5 | var msg = 'There are currently ' + serverList.length + ' server(s)...\n'; 6 | 7 | msg += serverList[0] + ',\n'; 8 | for (i = 1; i < serverList.length; i++) { 9 | msg += serverList[i] + ',\n'; 10 | } 11 | 12 | msg += 'for more information on any one server type: !info "ServerName"'; 13 | message.channel.send(msg); 14 | } 15 | } -------------------------------------------------------------------------------- /MC Server Bot/commands/start.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'start', 3 | description: 'starts arg server', 4 | execute(message, args, serverConfigs, path, serverList, singleServer) { 5 | 6 | if (singleServer == true){ 7 | if(singleServerFunc(serverList) == true){ 8 | return message.reply('Can only run one server at a time.\n Please stop the running server before starting another.') 9 | } 10 | } 11 | 12 | var serverConfigs1 = JSON.parse(JSON.stringify(serverConfigs)); 13 | 14 | for (i = 0; i < serverConfigs1.length; i++) { 15 | if(args[1] == serverConfigs1[i][0]){ 16 | var name = serverConfigs1[i].shift(); 17 | var java = serverConfigs1[i].shift(); 18 | var consoleChan = serverConfigs1[i].pop(); 19 | var port = serverConfigs1[i].pop(); 20 | var commands = serverConfigs1[i]; 21 | break; 22 | } else if (i === serverConfigs.length-1) { 23 | message.reply("Server was not found make sure capitalization is correct.\nUse !servers to double check."); 24 | return; 25 | } 26 | } 27 | 28 | if (eval('typeof ' + name + ' != "undefined"')){ 29 | message.reply(name + ' is already runnig.'); 30 | return; 31 | }else{message.reply('Please wait while ' + name + ' is started.\nThis may take a few minutes before joinable.')} 32 | 33 | var currentDir = path+ '/'+ name + '/'; 34 | 35 | // Require Node.js standard library function to spawn a child process 36 | var spawn = require('child_process').spawn; 37 | 38 | // Create a child process for the Minecraft server using the same java process 39 | // invocation we used manually before 40 | eval('global.' + name + ' = spawn(java, commands, { cwd: currentDir });'); 41 | 42 | // Listen for events coming from the minecraft server process - in this case, 43 | // just log out messages coming from the server 44 | function log(data) { 45 | process.stdout.write(data.toString()); 46 | 47 | } 48 | 49 | 50 | var msg; 51 | var consoleOutput = "> Console Output:\n"; 52 | 53 | eval(name).stdout.on('data', code => { 54 | console.log( consoleOutput + `${code}`); 55 | message.client.channels.cache.find(channel => channel.name === consoleChan).send(`Console Output:\n${code}`); 56 | msg = `${code}`; 57 | 58 | }); 59 | 60 | 61 | eval(name).stderr.on('data', log); 62 | 63 | 64 | eval(name).on('exit', code => { 65 | console.log(`Exit code is: ${code}`); 66 | message.channel.send(name + ' Server stopped, check ' + consoleChan + ' for more info.'); 67 | message.client.channels.cache.find(channel => channel.name === consoleChan).send(`Server Exit Code:\n${code}`); 68 | message.client.channels.cache.find(channel => channel.name === consoleChan).send('Last Console Output:\n' + msg); 69 | eval('delete ' + name); 70 | }); 71 | 72 | 73 | 74 | //single server function 75 | function singleServerFunc(arrayserverList) { 76 | 77 | for (i = 0; i < serverList.length; i++) { 78 | if (eval('typeof ' + serverList[i] + ' != "undefined"')) { 79 | return true; 80 | } else if (i == serverList.length){ 81 | return false; 82 | } 83 | } 84 | 85 | }//function 86 | 87 | 88 | } 89 | 90 | } -------------------------------------------------------------------------------- /MC Server Bot/commands/status.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'status', 3 | description: 'status of all servers', 4 | execute(message, serverList) { 5 | 6 | var msg = 'Server Status:\n'; 7 | 8 | for (i=0; i file.endsWith('.js'));//location of commands filter for all .js 17 | for (const file of commandFiles) { 18 | const command = require(`./commands/${file}`);//adds commands 19 | bot.commands.set(command.name, command); 20 | } 21 | //get cmd perms from config & channel 22 | const cmdChannel = configFile.cmdChannel; 23 | const lvl1 = configFile.level1; 24 | const lvl2 = configFile.level2; 25 | const lvl3 = configFile.level3; 26 | 27 | 28 | //server info init 29 | const ping = require('minecraft-server-util');//init for ping command 30 | var serverIP = configFile.serverIP;//MC server ip from config.js 31 | var path = configFile.path;// get path to MC servers from config.js 32 | let serverList = []; 33 | fs.readdir(path, serverList, function (err, items) { 34 | for (var i = 0; i < items.length; i++) { 35 | serverList.push(items[i]);//add each server found in dir. to serverList Array 36 | } 37 | return serverList; 38 | }); 39 | const serverConfigs = configFile.serverConfigs;//grab server configs from config file 40 | const singleServer = configFile.singleServer;//grab single server option from config file 41 | 42 | 43 | //bot states 44 | bot.on('ready', () => { 45 | console.log('This bot is online.');//if bot is 'ready' console lol (i think) 46 | bot.user.setActivity('in the Nether', { type: 'PLAYING' }); 47 | }) 48 | 49 | 50 | bot.login(token);//attempt logon with token 51 | 52 | 53 | bot.on('guildMemberAdd', member => {//when bot new member 54 | // Send the message to a designated channel on a server: 55 | const channel = member.guild.channels.cache.find(ch => ch.name === '💬text-chat'); 56 | // Do nothing if the channel wasn't found on this server 57 | if (!channel) return; 58 | // Send the message, mentioning the member if channel found 59 | channel.send(`Hey, ${member}` + ' if you need MC Server help try "!help" in chat.'); 60 | }); 61 | 62 | 63 | bot.on('message', message => {//if bot sees messege run arrow function 64 | 65 | let args = message.content.substring(PREFIX.length).split(" ");//if contents of messege start with PREFIX make arg of words after splitting on SPACE 66 | 67 | var msgChannel = message.channel.name; 68 | 69 | switch (args[0].toLowerCase()) {//swith to arg pos 0 function (like a if statement) 70 | 71 | case 'help': 72 | bot.commands.get('help').execute(message, args); 73 | break; 74 | 75 | 76 | case 'ip': 77 | if (!message.member.roles.cache.find(r => r.name === lvl1)) return message.reply("you don't have permission to do that.\n@ or message the admin to see about becoming a Player.") 78 | message.author.send(serverIP); 79 | break; 80 | 81 | 82 | case 'status': 83 | if (!message.member.roles.cache.find(r => r.name === lvl1)) return message.reply("you don't have permission to do that.\n@ or message the admin to see about becoming a Player.") 84 | 85 | bot.commands.get('status').execute(message, serverList); 86 | break; 87 | 88 | 89 | case 'servers': 90 | if (!message.member.roles.cache.find(r => r.name === lvl1)) return message.reply("you don't have permission to do that.\n@ or message the admin to see about becoming a Player.") 91 | 92 | bot.commands.get('servers').execute(message, serverList); 93 | break; 94 | 95 | 96 | case 'info': 97 | if (!message.member.roles.cache.find(r => r.name === lvl1)) return message.reply("you don't have permission to do that.\n@ or message the admin to see about becoming a Player.") 98 | 99 | bot.commands.get('info').execute(message, args, embedList); 100 | break; 101 | 102 | 103 | case 'start': 104 | if (message.channel.name != cmdChannel) return message.reply("please keep all server related commands in the " + cmdChannel + " channel.") 105 | if (!message.member.roles.cache.find(r => r.name === lvl2)) return message.reply("you don't have permission to do that.\nOnly a Server Head can start a server try @ing one.") 106 | 107 | if (args[1] === undefined) { 108 | message.reply("You must enter a server name to start."); 109 | break; 110 | } else { bot.commands.get('start').execute(message, args, serverConfigs, path, serverList, singleServer) } 111 | 112 | break; 113 | 114 | 115 | case 'stop': 116 | if (message.channel.name != cmdChannel) return message.reply("please keep all server related commands in the " + cmdChannel + " channel.") 117 | if (!message.member.roles.cache.find(r => r.name === lvl2)) return message.reply("you don't have permission to do that.\n@ or message the admin to see about becoming a Player.") 118 | 119 | if (args[1] === undefined) { 120 | message.reply("You must enter a server name to stop."); 121 | break; 122 | } else (bot.commands.get('stop').execute(message, args, serverConfigs)); 123 | 124 | break; 125 | 126 | 127 | case 'cmd': 128 | if (!message.member.roles.cache.find(r => r.name === lvl3)) return message.reply("you don't have permission to do that, only an admin or mod.") 129 | 130 | if (args[1] === undefined) { 131 | message.reply("You must enter a server name to start."); 132 | break; 133 | } else { bot.commands.get('cmd').execute(message, args, serverConfigs, path) } 134 | 135 | break; 136 | 137 | 138 | case 'clear': 139 | if (!message.member.roles.cache.find(r => r.name === lvl3)) return message.reply("you don't have permission to do that, only an admin or mod.") 140 | 141 | bot.commands.get('clear').execute(message, args); 142 | break; 143 | 144 | 145 | } 146 | 147 | }) 148 | 149 | ////Embeds inits for each server 150 | embedList = []; 151 | 152 | const Default = new Discord.MessageEmbed() 153 | .setTitle('Default') 154 | .setThumbnail('https://www.minecraft.net/content/dam/minecraft/pmp/pmp-minecraft-howitworks-survive.png') 155 | .addField('MC Version:', '1.15.2') 156 | .addField('TexturePack:', 'https://www.curseforge.com/minecraft/modpacks/hexxit-updated/files/2806407') 157 | .setDescription("Default is a vanilla world to use as example.") 158 | .setColor(0x228B22); 159 | 160 | embedList.push(Default);//push HEXXIT embed to array[0] 161 | 162 | 163 | ////embeds END -------------------------------------------------------------------------------- /MC Server Bot/notes.txt: -------------------------------------------------------------------------------- 1 | 2 | All original intelectual property designed, coded, and owned by 3 | Victor Dominic Ferri 4 | 5 | -------------------------------------------------------------------------------- /MC Server Bot/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mc_server_bot", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@discordjs/collection": { 8 | "version": "0.1.5", 9 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.5.tgz", 10 | "integrity": "sha512-CU1q0UXQUpFNzNB7gufgoisDHP7n+T3tkqTsp3MNUkVJ5+hS3BCvME8uCXAUFlz+6T2FbTCu75A+yQ7HMKqRKw==" 11 | }, 12 | "@discordjs/form-data": { 13 | "version": "3.0.1", 14 | "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz", 15 | "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==", 16 | "requires": { 17 | "asynckit": "^0.4.0", 18 | "combined-stream": "^1.0.8", 19 | "mime-types": "^2.1.12" 20 | } 21 | }, 22 | "@types/body-parser": { 23 | "version": "1.19.0", 24 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", 25 | "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", 26 | "requires": { 27 | "@types/connect": "*", 28 | "@types/node": "*" 29 | } 30 | }, 31 | "@types/connect": { 32 | "version": "3.4.33", 33 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", 34 | "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", 35 | "requires": { 36 | "@types/node": "*" 37 | } 38 | }, 39 | "@types/express": { 40 | "version": "4.17.6", 41 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.6.tgz", 42 | "integrity": "sha512-n/mr9tZI83kd4azlPG5y997C/M4DNABK9yErhFM6hKdym4kkmd9j0vtsJyjFIwfRBxtrxZtAfGZCNRIBMFLK5w==", 43 | "requires": { 44 | "@types/body-parser": "*", 45 | "@types/express-serve-static-core": "*", 46 | "@types/qs": "*", 47 | "@types/serve-static": "*" 48 | } 49 | }, 50 | "@types/express-serve-static-core": { 51 | "version": "4.17.7", 52 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.7.tgz", 53 | "integrity": "sha512-EMgTj/DF9qpgLXyc+Btimg+XoH7A2liE8uKul8qSmMTHCeNYzydDKFdsJskDvw42UsesCnhO63dO0Grbj8J4Dw==", 54 | "requires": { 55 | "@types/node": "*", 56 | "@types/qs": "*", 57 | "@types/range-parser": "*" 58 | } 59 | }, 60 | "@types/mime": { 61 | "version": "2.0.1", 62 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", 63 | "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==" 64 | }, 65 | "@types/node": { 66 | "version": "14.0.1", 67 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.1.tgz", 68 | "integrity": "sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA==" 69 | }, 70 | "@types/qs": { 71 | "version": "6.9.2", 72 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.2.tgz", 73 | "integrity": "sha512-a9bDi4Z3zCZf4Lv1X/vwnvbbDYSNz59h3i3KdyuYYN+YrLjSeJD0dnphdULDfySvUv6Exy/O0K6wX/kQpnPQ+A==" 74 | }, 75 | "@types/range-parser": { 76 | "version": "1.2.3", 77 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", 78 | "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" 79 | }, 80 | "@types/serve-static": { 81 | "version": "1.13.3", 82 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.3.tgz", 83 | "integrity": "sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g==", 84 | "requires": { 85 | "@types/express-serve-static-core": "*", 86 | "@types/mime": "*" 87 | } 88 | }, 89 | "abort-controller": { 90 | "version": "3.0.0", 91 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 92 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 93 | "requires": { 94 | "event-target-shim": "^5.0.0" 95 | } 96 | }, 97 | "accepts": { 98 | "version": "1.3.7", 99 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 100 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 101 | "requires": { 102 | "mime-types": "~2.1.24", 103 | "negotiator": "0.6.2" 104 | } 105 | }, 106 | "array-flatten": { 107 | "version": "1.1.1", 108 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 109 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 110 | }, 111 | "asap": { 112 | "version": "2.0.6", 113 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 114 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" 115 | }, 116 | "asynckit": { 117 | "version": "0.4.0", 118 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 119 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 120 | }, 121 | "axios": { 122 | "version": "0.19.2", 123 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", 124 | "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", 125 | "requires": { 126 | "follow-redirects": "1.5.10" 127 | } 128 | }, 129 | "body-parser": { 130 | "version": "1.19.0", 131 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 132 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 133 | "requires": { 134 | "bytes": "3.1.0", 135 | "content-type": "~1.0.4", 136 | "debug": "2.6.9", 137 | "depd": "~1.1.2", 138 | "http-errors": "1.7.2", 139 | "iconv-lite": "0.4.24", 140 | "on-finished": "~2.3.0", 141 | "qs": "6.7.0", 142 | "raw-body": "2.4.0", 143 | "type-is": "~1.6.17" 144 | } 145 | }, 146 | "buffer-equal-constant-time": { 147 | "version": "1.0.1", 148 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 149 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 150 | }, 151 | "bytes": { 152 | "version": "3.1.0", 153 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 154 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 155 | }, 156 | "combined-stream": { 157 | "version": "1.0.8", 158 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 159 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 160 | "requires": { 161 | "delayed-stream": "~1.0.0" 162 | } 163 | }, 164 | "content-disposition": { 165 | "version": "0.5.3", 166 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 167 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 168 | "requires": { 169 | "safe-buffer": "5.1.2" 170 | } 171 | }, 172 | "content-type": { 173 | "version": "1.0.4", 174 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 175 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 176 | }, 177 | "cookie": { 178 | "version": "0.4.0", 179 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 180 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 181 | }, 182 | "cookie-signature": { 183 | "version": "1.0.6", 184 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 185 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 186 | }, 187 | "dayjs": { 188 | "version": "1.8.27", 189 | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.27.tgz", 190 | "integrity": "sha512-Jpa2acjWIeOkg8KURUHICk0EqnEFSSF5eMEscsOgyJ92ZukXwmpmRkPSUka7KHSfbj5eKH30ieosYip+ky9emQ==" 191 | }, 192 | "debug": { 193 | "version": "2.6.9", 194 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 195 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 196 | "requires": { 197 | "ms": "2.0.0" 198 | } 199 | }, 200 | "delayed-stream": { 201 | "version": "1.0.0", 202 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 203 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 204 | }, 205 | "depd": { 206 | "version": "1.1.2", 207 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 208 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 209 | }, 210 | "destroy": { 211 | "version": "1.0.4", 212 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 213 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 214 | }, 215 | "discord.js": { 216 | "version": "12.2.0", 217 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.2.0.tgz", 218 | "integrity": "sha512-Ueb/0SOsxXyqwvwFYFe0msMrGqH1OMqpp2Dpbplnlr4MzcRrFWwsBM9gKNZXPVBHWUKiQkwU8AihXBXIvTTSvg==", 219 | "requires": { 220 | "@discordjs/collection": "^0.1.5", 221 | "@discordjs/form-data": "^3.0.1", 222 | "abort-controller": "^3.0.0", 223 | "node-fetch": "^2.6.0", 224 | "prism-media": "^1.2.0", 225 | "setimmediate": "^1.0.5", 226 | "tweetnacl": "^1.0.3", 227 | "ws": "^7.2.1" 228 | } 229 | }, 230 | "ecdsa-sig-formatter": { 231 | "version": "1.0.11", 232 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 233 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 234 | "requires": { 235 | "safe-buffer": "^5.0.1" 236 | } 237 | }, 238 | "ee-first": { 239 | "version": "1.1.1", 240 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 241 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 242 | }, 243 | "encodeurl": { 244 | "version": "1.0.2", 245 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 246 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 247 | }, 248 | "escape-html": { 249 | "version": "1.0.3", 250 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 251 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 252 | }, 253 | "etag": { 254 | "version": "1.8.1", 255 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 256 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 257 | }, 258 | "event-target-shim": { 259 | "version": "5.0.1", 260 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 261 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" 262 | }, 263 | "express": { 264 | "version": "4.17.1", 265 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 266 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 267 | "requires": { 268 | "accepts": "~1.3.7", 269 | "array-flatten": "1.1.1", 270 | "body-parser": "1.19.0", 271 | "content-disposition": "0.5.3", 272 | "content-type": "~1.0.4", 273 | "cookie": "0.4.0", 274 | "cookie-signature": "1.0.6", 275 | "debug": "2.6.9", 276 | "depd": "~1.1.2", 277 | "encodeurl": "~1.0.2", 278 | "escape-html": "~1.0.3", 279 | "etag": "~1.8.1", 280 | "finalhandler": "~1.1.2", 281 | "fresh": "0.5.2", 282 | "merge-descriptors": "1.0.1", 283 | "methods": "~1.1.2", 284 | "on-finished": "~2.3.0", 285 | "parseurl": "~1.3.3", 286 | "path-to-regexp": "0.1.7", 287 | "proxy-addr": "~2.0.5", 288 | "qs": "6.7.0", 289 | "range-parser": "~1.2.1", 290 | "safe-buffer": "5.1.2", 291 | "send": "0.17.1", 292 | "serve-static": "1.14.1", 293 | "setprototypeof": "1.1.1", 294 | "statuses": "~1.5.0", 295 | "type-is": "~1.6.18", 296 | "utils-merge": "1.0.1", 297 | "vary": "~1.1.2" 298 | } 299 | }, 300 | "finalhandler": { 301 | "version": "1.1.2", 302 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 303 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 304 | "requires": { 305 | "debug": "2.6.9", 306 | "encodeurl": "~1.0.2", 307 | "escape-html": "~1.0.3", 308 | "on-finished": "~2.3.0", 309 | "parseurl": "~1.3.3", 310 | "statuses": "~1.5.0", 311 | "unpipe": "~1.0.0" 312 | } 313 | }, 314 | "follow-redirects": { 315 | "version": "1.5.10", 316 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", 317 | "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", 318 | "requires": { 319 | "debug": "=3.1.0" 320 | }, 321 | "dependencies": { 322 | "debug": { 323 | "version": "3.1.0", 324 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 325 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 326 | "requires": { 327 | "ms": "2.0.0" 328 | } 329 | } 330 | } 331 | }, 332 | "forwarded": { 333 | "version": "0.1.2", 334 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 335 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 336 | }, 337 | "fresh": { 338 | "version": "0.5.2", 339 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 340 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 341 | }, 342 | "http-errors": { 343 | "version": "1.7.2", 344 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 345 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 346 | "requires": { 347 | "depd": "~1.1.2", 348 | "inherits": "2.0.3", 349 | "setprototypeof": "1.1.1", 350 | "statuses": ">= 1.5.0 < 2", 351 | "toidentifier": "1.0.0" 352 | } 353 | }, 354 | "iconv-lite": { 355 | "version": "0.4.24", 356 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 357 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 358 | "requires": { 359 | "safer-buffer": ">= 2.1.2 < 3" 360 | } 361 | }, 362 | "inherits": { 363 | "version": "2.0.3", 364 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 365 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 366 | }, 367 | "ipaddr.js": { 368 | "version": "1.9.1", 369 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 370 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 371 | }, 372 | "jsonwebtoken": { 373 | "version": "8.5.1", 374 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 375 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 376 | "requires": { 377 | "jws": "^3.2.2", 378 | "lodash.includes": "^4.3.0", 379 | "lodash.isboolean": "^3.0.3", 380 | "lodash.isinteger": "^4.0.4", 381 | "lodash.isnumber": "^3.0.3", 382 | "lodash.isplainobject": "^4.0.6", 383 | "lodash.isstring": "^4.0.1", 384 | "lodash.once": "^4.0.0", 385 | "ms": "^2.1.1", 386 | "semver": "^5.6.0" 387 | }, 388 | "dependencies": { 389 | "ms": { 390 | "version": "2.1.2", 391 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 392 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 393 | } 394 | } 395 | }, 396 | "jwa": { 397 | "version": "1.4.1", 398 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 399 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 400 | "requires": { 401 | "buffer-equal-constant-time": "1.0.1", 402 | "ecdsa-sig-formatter": "1.0.11", 403 | "safe-buffer": "^5.0.1" 404 | } 405 | }, 406 | "jws": { 407 | "version": "3.2.2", 408 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 409 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 410 | "requires": { 411 | "jwa": "^1.4.1", 412 | "safe-buffer": "^5.0.1" 413 | } 414 | }, 415 | "lodash": { 416 | "version": "4.17.15", 417 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 418 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" 419 | }, 420 | "lodash.includes": { 421 | "version": "4.3.0", 422 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 423 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" 424 | }, 425 | "lodash.isboolean": { 426 | "version": "3.0.3", 427 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 428 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" 429 | }, 430 | "lodash.isinteger": { 431 | "version": "4.0.4", 432 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 433 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" 434 | }, 435 | "lodash.isnumber": { 436 | "version": "3.0.3", 437 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 438 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" 439 | }, 440 | "lodash.isplainobject": { 441 | "version": "4.0.6", 442 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 443 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 444 | }, 445 | "lodash.isstring": { 446 | "version": "4.0.1", 447 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 448 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 449 | }, 450 | "lodash.once": { 451 | "version": "4.1.1", 452 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 453 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" 454 | }, 455 | "media-typer": { 456 | "version": "0.3.0", 457 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 458 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 459 | }, 460 | "merge-descriptors": { 461 | "version": "1.0.1", 462 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 463 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 464 | }, 465 | "methods": { 466 | "version": "1.1.2", 467 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 468 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 469 | }, 470 | "mime": { 471 | "version": "1.6.0", 472 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 473 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 474 | }, 475 | "mime-db": { 476 | "version": "1.44.0", 477 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 478 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" 479 | }, 480 | "mime-types": { 481 | "version": "2.1.27", 482 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 483 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 484 | "requires": { 485 | "mime-db": "1.44.0" 486 | } 487 | }, 488 | "minecraft-server-util": { 489 | "version": "1.1.1", 490 | "resolved": "https://registry.npmjs.org/minecraft-server-util/-/minecraft-server-util-1.1.1.tgz", 491 | "integrity": "sha512-2sheU4vfYYwpjocZw1MM0NSU2FVazwujOB1a8QD7x8er8tSZWcdXE/+GOB9ZBJBbe4jBe/Up1xnOP7OGz1hVvw==" 492 | }, 493 | "ms": { 494 | "version": "2.0.0", 495 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 496 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 497 | }, 498 | "negotiator": { 499 | "version": "0.6.2", 500 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 501 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 502 | }, 503 | "node-fetch": { 504 | "version": "2.6.0", 505 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", 506 | "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" 507 | }, 508 | "on-finished": { 509 | "version": "2.3.0", 510 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 511 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 512 | "requires": { 513 | "ee-first": "1.1.1" 514 | } 515 | }, 516 | "parseurl": { 517 | "version": "1.3.3", 518 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 519 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 520 | }, 521 | "path-to-regexp": { 522 | "version": "0.1.7", 523 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 524 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 525 | }, 526 | "pop-iterate": { 527 | "version": "1.0.1", 528 | "resolved": "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz", 529 | "integrity": "sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M=" 530 | }, 531 | "prism-media": { 532 | "version": "1.2.2", 533 | "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.2.tgz", 534 | "integrity": "sha512-I+nkWY212lJ500jLe4tN9tWO7nRiBAVdMv76P9kffZjYhw20raMlW1HSSvS+MLXC9MmbNZCazMrAr+5jEEgTuw==" 535 | }, 536 | "proxy-addr": { 537 | "version": "2.0.6", 538 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 539 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 540 | "requires": { 541 | "forwarded": "~0.1.2", 542 | "ipaddr.js": "1.9.1" 543 | } 544 | }, 545 | "q": { 546 | "version": "2.0.3", 547 | "resolved": "https://registry.npmjs.org/q/-/q-2.0.3.tgz", 548 | "integrity": "sha1-dbjbAlWhpa+C9Yw/Oqoe/sfQ0TQ=", 549 | "requires": { 550 | "asap": "^2.0.0", 551 | "pop-iterate": "^1.0.1", 552 | "weak-map": "^1.0.5" 553 | } 554 | }, 555 | "qs": { 556 | "version": "6.7.0", 557 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 558 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 559 | }, 560 | "querystringify": { 561 | "version": "2.1.1", 562 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", 563 | "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" 564 | }, 565 | "range-parser": { 566 | "version": "1.2.1", 567 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 568 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 569 | }, 570 | "raw-body": { 571 | "version": "2.4.0", 572 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 573 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 574 | "requires": { 575 | "bytes": "3.1.0", 576 | "http-errors": "1.7.2", 577 | "iconv-lite": "0.4.24", 578 | "unpipe": "1.0.0" 579 | } 580 | }, 581 | "requires-port": { 582 | "version": "1.0.0", 583 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 584 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" 585 | }, 586 | "rootpath": { 587 | "version": "0.1.2", 588 | "resolved": "https://registry.npmjs.org/rootpath/-/rootpath-0.1.2.tgz", 589 | "integrity": "sha1-Wzeah9ypBum5HWkKWZQ5vvJn6ms=" 590 | }, 591 | "safe-buffer": { 592 | "version": "5.1.2", 593 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 594 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 595 | }, 596 | "safer-buffer": { 597 | "version": "2.1.2", 598 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 599 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 600 | }, 601 | "scmp": { 602 | "version": "2.1.0", 603 | "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz", 604 | "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==" 605 | }, 606 | "semver": { 607 | "version": "5.7.1", 608 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 609 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 610 | }, 611 | "send": { 612 | "version": "0.17.1", 613 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 614 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 615 | "requires": { 616 | "debug": "2.6.9", 617 | "depd": "~1.1.2", 618 | "destroy": "~1.0.4", 619 | "encodeurl": "~1.0.2", 620 | "escape-html": "~1.0.3", 621 | "etag": "~1.8.1", 622 | "fresh": "0.5.2", 623 | "http-errors": "~1.7.2", 624 | "mime": "1.6.0", 625 | "ms": "2.1.1", 626 | "on-finished": "~2.3.0", 627 | "range-parser": "~1.2.1", 628 | "statuses": "~1.5.0" 629 | }, 630 | "dependencies": { 631 | "ms": { 632 | "version": "2.1.1", 633 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 634 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 635 | } 636 | } 637 | }, 638 | "serve-static": { 639 | "version": "1.14.1", 640 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 641 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 642 | "requires": { 643 | "encodeurl": "~1.0.2", 644 | "escape-html": "~1.0.3", 645 | "parseurl": "~1.3.3", 646 | "send": "0.17.1" 647 | } 648 | }, 649 | "setimmediate": { 650 | "version": "1.0.5", 651 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 652 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" 653 | }, 654 | "setprototypeof": { 655 | "version": "1.1.1", 656 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 657 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 658 | }, 659 | "statuses": { 660 | "version": "1.5.0", 661 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 662 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 663 | }, 664 | "toidentifier": { 665 | "version": "1.0.0", 666 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 667 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 668 | }, 669 | "tweetnacl": { 670 | "version": "1.0.3", 671 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", 672 | "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" 673 | }, 674 | "twilio": { 675 | "version": "3.43.1", 676 | "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.43.1.tgz", 677 | "integrity": "sha512-vULKUCWY712Jv6Jb3VRceneuvcdO0JZ9adTofiDo3Ks/z58WKlj8vHawsjiZxsKAHnuBSGnhL3WKxQoUj/xmHQ==", 678 | "requires": { 679 | "@types/express": "^4.17.3", 680 | "axios": "^0.19.2", 681 | "dayjs": "^1.8.21", 682 | "jsonwebtoken": "^8.5.1", 683 | "lodash": "^4.17.15", 684 | "q": "2.0.x", 685 | "qs": "^6.9.1", 686 | "rootpath": "^0.1.2", 687 | "scmp": "^2.1.0", 688 | "url-parse": "^1.4.7", 689 | "xmlbuilder": "^13.0.2" 690 | }, 691 | "dependencies": { 692 | "qs": { 693 | "version": "6.9.4", 694 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", 695 | "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" 696 | } 697 | } 698 | }, 699 | "type-is": { 700 | "version": "1.6.18", 701 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 702 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 703 | "requires": { 704 | "media-typer": "0.3.0", 705 | "mime-types": "~2.1.24" 706 | } 707 | }, 708 | "unpipe": { 709 | "version": "1.0.0", 710 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 711 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 712 | }, 713 | "url-parse": { 714 | "version": "1.4.7", 715 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", 716 | "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", 717 | "requires": { 718 | "querystringify": "^2.1.1", 719 | "requires-port": "^1.0.0" 720 | } 721 | }, 722 | "utils-merge": { 723 | "version": "1.0.1", 724 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 725 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 726 | }, 727 | "vary": { 728 | "version": "1.1.2", 729 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 730 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 731 | }, 732 | "weak-map": { 733 | "version": "1.0.5", 734 | "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz", 735 | "integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes=" 736 | }, 737 | "ws": { 738 | "version": "7.2.5", 739 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz", 740 | "integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==" 741 | }, 742 | "xmlbuilder": { 743 | "version": "13.0.2", 744 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", 745 | "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==" 746 | } 747 | } 748 | } 749 | -------------------------------------------------------------------------------- /MC Server Bot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mc_server_bot", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "Victor Ferri", 10 | "license": "ISC", 11 | "dependencies": { 12 | "body-parser": "^1.19.0", 13 | "discord.js": "^12.2.0", 14 | "express": "^4.17.1", 15 | "minecraft-server-util": "^1.1.1", 16 | "twilio": "^3.43.1" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Servers/Default/eula.txt: -------------------------------------------------------------------------------- 1 | #By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula). 2 | #Sun May 31 12:19:05 MDT 2020 3 | eula=true 4 | -------------------------------------------------------------------------------- /Servers/Default/logs/latest.log: -------------------------------------------------------------------------------- 1 | [12:19:05] [main/ERROR]: Failed to load properties from file: server.properties 2 | [12:19:05] [main/WARN]: Failed to load eula.txt 3 | [12:19:05] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info. 4 | -------------------------------------------------------------------------------- /Servers/Default/server.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/victorf8/MCServerDiscordBot/c2a55e1dfe8641fccf83a1f7045f38ff881de314/Servers/Default/server.jar -------------------------------------------------------------------------------- /Servers/Default/server.properties: -------------------------------------------------------------------------------- 1 | #Minecraft server properties 2 | #Sun May 31 12:19:05 MDT 2020 3 | spawn-protection=16 4 | max-tick-time=60000 5 | query.port=25565 6 | generator-settings= 7 | force-gamemode=false 8 | allow-nether=true 9 | enforce-whitelist=false 10 | gamemode=survival 11 | broadcast-console-to-ops=true 12 | enable-query=false 13 | player-idle-timeout=0 14 | difficulty=easy 15 | broadcast-rcon-to-ops=true 16 | spawn-monsters=true 17 | op-permission-level=4 18 | pvp=true 19 | snooper-enabled=true 20 | level-type=default 21 | hardcore=false 22 | enable-command-block=false 23 | network-compression-threshold=256 24 | max-players=20 25 | max-world-size=29999984 26 | resource-pack-sha1= 27 | function-permission-level=2 28 | rcon.port=25575 29 | server-port=25565 30 | server-ip= 31 | spawn-npcs=true 32 | allow-flight=false 33 | level-name=world 34 | view-distance=10 35 | resource-pack= 36 | spawn-animals=true 37 | white-list=false 38 | rcon.password= 39 | generate-structures=true 40 | online-mode=true 41 | max-build-height=256 42 | level-seed= 43 | prevent-proxy-connections=false 44 | use-native-transport=true 45 | motd=A Minecraft Server 46 | enable-rcon=false 47 | --------------------------------------------------------------------------------