From 6c64fd5877956046f2670cd64df4eab20f506b15 Mon Sep 17 00:00:00 2001 From: VPS Date: Fri, 11 Mar 2022 15:47:43 -0500 Subject: [PATCH] Initial commit --- .gitignore | 61 ++++ README.md | 38 +++ index.js | 492 ++++++++++++++++++++++++++++++++ package-lock.json | 707 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 18 ++ rccscreenshot.exe | Bin 0 -> 7680 bytes 6 files changed, 1316 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 rccscreenshot.exe diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ad46b30 --- /dev/null +++ b/.gitignore @@ -0,0 +1,61 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next diff --git a/README.md b/README.md new file mode 100644 index 0000000..0fc6eaf --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# RCC Soap Bot + +This was rushed and should not be used for production. + +âš ī¸**Warning:** This code contains hardcoded banlist, ports, xml, paths, and executable names. +â„šī¸ **Note:** this was made in 2 hours... + +## Features: + + - Execute Roblox Lua (;execute) + - Supports returning data of the following types: + - LUA_TSTRING + - LUA_TNUMBER + - LUA_TBOOLEAN + - LUA_TTABLE + - View Console (;viewconsole) + - Vote Reset (;votereset) +## Requirements: + + - NodeJS Installation + - RCCService 2016 (March build was tested) + +## Installation: + +Roblox Compute Cloud should be located at `C:\RCCSoap\RCCServiceSOAP.exe` +Create a **.env** file in the directory of the repository: +``` +TOKEN=BOT_TOKEN +PREFIX=; +ADMIN=USER_ID_OF_ADMINISTRATOR +CHANNEL=CHANNEL_ID +``` + +Open cmd or powershell in the repo directory: +- **(First Time)** Run `npm i` +- Run `node index.js` to start the bot + +Use `;start 530` to start an RCC Instance diff --git a/index.js b/index.js new file mode 100644 index 0000000..ee36761 --- /dev/null +++ b/index.js @@ -0,0 +1,492 @@ +require('dotenv').config(); +const exec = require('child_process').exec; + +const Discord = require('discord.js'); +const https = require('http'); +const fs = require('fs'); +const parser = require('fast-xml-parser'); +const bot = new Discord.Client(); +const TOKEN = process.env.TOKEN; +var defport = 530; +var defip = "localhost"; +var currentvote = false; +var thumbsup = 0; +var thumbsdown = 0; +var msgid; + + +const isRunning = (query, cb) => { + let platform = process.platform; + let cmd = ''; + switch (platform) { + case 'win32' : cmd = `tasklist`; break; + case 'darwin' : cmd = `ps -ax | grep ${query}`; break; + case 'linux' : cmd = `ps -A`; break; + default: break; + } + exec(cmd, (err, stdout, stderr) => { + cb(stdout.toLowerCase().indexOf(query.toLowerCase()) > -1); + }); +} + + +bot.login(TOKEN); + +bot.on('ready', () => { + console.info(`Logged in as ${bot.user.tag}!`); +}); + +const options = { + hostname: defip, + port: defport, + path: '', + method: 'POST', + headers: { + 'Accept': 'text/xml', + 'Cache-Control': 'no-cache', + 'Pragma': 'no-cache', + 'SOAPAction': 'Execute' + } +}; + + bot.on('message', msg => { + if (msg.author.bot) { + return; + } + if (msg.channel.id != process.env.CHANNEL) { return; } + + var message = msg.content + + if (!msg.content.startsWith(process.env.PREFIX)) + { + if (msg.mentions.has(bot.user.id) && msg.content.includes(" ")) { + message = message.substring(message.indexOf(" ") + 1) + } + else + { + return; + }; + } + else + { + message = message.substring(1); + } + + var messageArray = message.includes(" ") ? message.split(' ') : [ message ]; + + switch (messageArray[0].toLowerCase()) + { + case "prefix": + msg.channel.send(`The Current prefix is: \`${process.env.PREFIX}\``); + break; + case "help": + const exampleEmbed = new Discord.MessageEmbed() + .setColor('#0099ff') + .setTitle('SOAP Commands') + .setAuthor('RCCService.exe', 'https://i.imgur.com/52zkGiZ.png') + .setDescription('Here are the commands for RCC SOAP Bot:\n\n;help\n;execute ( script) | ;x\n;viewgame | ;vg\n;viewconsole | ;vc\n;votereset') + .setTimestamp() + .setFooter('Coded by Yakov and Linus man himself', 'https://i.imgur.com/9cPv812.png'); + + msg.channel.send(exampleEmbed); + break; + case "restart": + if (msg.author.id == process.env.ADMIN) { + msg.reply('Restarting...') + .then(msg => bot.destroy()) + .then(() => bot.login(TOKEN)); + } else { + msg.reply('UNAUTHORIZED! :no_entry:'); + } + break; + case "srestart": + if (msg.author.id == process.env.ADMIN) { + msg.reply('Server Restarting...'); + exec("taskkill /im \"RCCServiceSOAP.exe\" /t"); + exec("cd C:\\RCCSoap && start RCCServiceSOAP.bat 530"); + } else { + msg.reply('UNAUTHORIZED! :no_entry:'); + } + break; + case "start": + if (msg.author.id == process.env.ADMIN) { + if(messageArray.length <= 1) + { + msg.reply('Missing Parameter `Port`'); + return; + } + isRunning('RCCServiceSOAP.exe', (status) => { + if (status) + { + msg.reply("RCCService.exe is already open."); + return; + } + exec(`cd C:\\RCCSoap && start RCCServiceSOAP.bat ${messageArray[1]}`); + defport = messageArray[1] + msg.reply(`Started on port ${messageArray[1]}!`) + .then(msg => bot.destroy()) + .then(() => bot.login(TOKEN)); + }); + } + else + { + msg.reply('UNAUTHORIZED! :no_entry:'); + } + break; + case "stop": + if (msg.author.id == process.env.ADMIN) { + exec(`taskkill /im "RCCServiceSOAP.exe" /t`); + msg.reply('Server Stopped! :white_check_mark:') + .then(msg => bot.destroy()) + .then(() => bot.login(TOKEN)); + } else { + msg.reply('UNAUTHORIZED! :no_entry:'); + } + break; + case "vc": + exec(`rccscreenshot.exe`); + setTimeout(function(){ + screenshot(msg); + }, 500); + break; + case "viewconsole": + exec(`rccscreenshot.exe`); + setTimeout(function(){ + screenshot(msg); + }, 500); + break; + case "vg": + viewgame(msg); + break; + case "viewgame": + viewgame(msg); + break; + case "x": + if(messageArray.length <= 1) + { + msg.reply('Missing Parameter `Script`'); + return; + } + execute(message, msg); + break; + case "execute": + if(messageArray.length <= 1) + { + msg.reply('Missing Parameter `Script`'); + return; + } + execute(message, msg); + break; + case "helloworld": + HelloWorld(msg) + break; + case "votereset": + votereset(msg); + break; + } + + async function votereset(msg) + { + if (currentvote) + { + const exampleEmbed = new Discord.MessageEmbed() + .setDescription("A vote reset has already been started!") + .setColor('#FA7513') + .addField("Jump to message", `[Click Here](https://discord.com/channels/${msg.guild.id}/${msg.channel.id}/${msgid})`) + .setTimestamp() + msg.channel.send(exampleEmbed); + return; + } + else { + currentvote = true; + } + const exampleEmbed = new Discord.MessageEmbed() + .setTitle("Vote Reset has Started!") + .setDescription("Use reactions to vote! Vote will be ending in 30 seconds.") + .setColor('#0099ff') + .setTimestamp() + msg.channel.send(exampleEmbed).then(function (message) { + message.react("👍") + message.react("👎") + msgid = message.id; + setTimeout(function(){ + try { + voteconcluded(msg); + } + catch{} + }, 30000); + }); + } + + function voteconcluded(msg) { + var result = thumbsup >= thumbsdown; + const exampleEmbed = new Discord.MessageEmbed() + .setTitle("The vote reset has been concluded!") + .setDescription(result ? "The vote has won, RCC is being resetted..." : "The vote has lost!") + .setColor(result ? '#0099ff': '#FA7513') + .setTimestamp() + msg.channel.send(exampleEmbed); + currentvote = false; + thumbsdown = thumbsup = 0; + msgid = "0"; + if (result) + { + exec("taskkill /im \"RCCServiceSOAP.exe\" /t"); + exec("cd C:\\RCCSoap && start RCCServiceSOAP.bat 530"); + } + } + + function screenshot(msg){ + if (!fs.existsSync("screenshot.png")) { + msg.reply("An Unknown Error has occurred, Is RCC Running?"); + return; + } + + msg.channel.send({ files: ['./screenshot.png'] }); + + setTimeout(function(){ + try { + fs.unlinkSync("screenshot.png"); + } + catch{} + }, 2000); + } + + async function PrintEmbedOfLuaTypes(msg, value, luatype){ + const exampleEmbed = new Discord.MessageEmbed() + .setColor('#0099ff') + .setAuthor('RCCService.exe', 'https://i.imgur.com/52zkGiZ.png') + .addFields( + { name: 'Return Data:', value: value, inline: true}, + { name: 'Lua Type:', value: luatype, inline: true}, + ) + .setTimestamp() + msg.channel.send(exampleEmbed); + } + + async function contentVarible(content2) { + return ` + + ${content2} + ` + } + + async function ErrorOccurred(msg, e) + { + msg.reply("An error has occurred! :x:"); + console.error(e); + } + + async function CreateEmbed(msg,color,title,field) { + const exampleEmbed = new Discord.MessageEmbed() + .setColor(color) + .setTitle(title) + .setAuthor('RCCService.exe', 'https://i.imgur.com/52zkGiZ.png') + .addFields( + { name: 'Message', value: "```" + `${field}`+"```", inline: true }, + ) + msg.channel.send(exampleEmbed) + } + + async function HelloWorld(msg){ + const adsads = https.request(options, res => { + res.setEncoding('utf8'); + res.on('data', function (chunk) { + try { + var parsedXML = parser.parse(chunk); + CreateEmbed(msg, "#008000", "Hello World!", parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:HelloWorldResponse"]["ns1:HelloWorldResult"]) + } catch(e) {console.error(e)} + }) + }) + var HelloWorldContent = ""; + console.log(await contentVarible(HelloWorldContent)) + adsads.write(await contentVarible(HelloWorldContent)); + adsads.end(); + + + } + + async function viewgame(msg){ + try { + const request = https.request(options, res => { + res.setEncoding('utf8'); + var body = ''; + var chunks = []; + res.on('readable', function () { + var chunk = this.read() || ''; + + body += chunk; + }); + + res.on('end', function () { + var parsedXML = parser.parse(body) + let image = new Buffer.from(parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:ExecuteResponse"]["ns1:ExecuteResult"][0]["ns1:value"], "base64") + fs.writeFile("out.png", image, 'base64', function(err) { + console.log(err); + }); + msg.channel.send({ files: ['./out.png'] }); + }); + }) + var content2 = ` + Test + + SOAP + + return game:GetService("ThumbnailGenerator"):Click("PNG", 4000, 2000, true) + + + + `; + //console.log(await contentVarible(content2)) + request.write(await contentVarible(content2)); + request.end(); + } + catch{ msg.reply("An Unknown Error has occurred, Is RCC Running?"); } + } + + async function execute(message, msg){ + message = message.substring(message.indexOf(" ") + 1); + if (msg.author.id == "3600780812240814059" || msg.author.id == "632025609970647051") {msg.reply("**Unauthorized!**"); return;} + if (message.includes("HttpGet") || message.includes("HttpPost") || message.includes("fenv") || message.includes("while true do") || message.includes("SetUploadUrl") || message.includes("crash__") || message.includes("ModuleScript") || message.includes("\\77") || message.includes("\\11") || message.includes("do print(\"") || message.includes("do print()") || message.includes("math.huge do") || message.includes(":ExecuteScript")) {msg.reply("**CENSORED CODE DETECTED!** :no_entry: "); return;} + if (message.startsWith("`") && message.endsWith("`")) + { + if (message.startsWith("```") && message.endsWith("```")) message = message.substring(message.startsWith("```lua") ? 6 : 3, message.length - 3); else message = message.substring(1, message.length - 1); + } + //console.log(message); + const req = https.request(options, res => { //go on? + //console.log('STATUS: ' + res.statusCode); + //console.log('HEADERS: ' + JSON.stringify(res.headers)); + res.setEncoding('utf8'); + res.on('data', function (chunk) { + //console.log('BODY: ' + chunk); + //console.log(chunk) + try { + var parsedXML = parser.parse(chunk) + } catch(e) {ErrorOccurred(msg,e);} + //console.log(parsedXML) + // console.log(parsedXML['SOAP-ENV:Fault']); + //var tObj = parser.getTraversalObj(chunk,xmlOptions); + // var jsonObj = parser.convertToJson(tObj,xmlOptions); + if (parsedXML["SOAP-ENV:Envelope"] && parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"] && parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["SOAP-ENV:Fault"] != undefined) ***REMOVED*** + { + var errormsg = parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["SOAP-ENV:Fault"]["faultstring"]; + var noline = !errormsg.startsWith("SOAP"); + if (!noline) + { + var parsed = errormsg.split(":"); + var line = parsed[1]; + var message = parsed[2]; + const exampleEmbed = new Discord.MessageEmbed() + .setColor('#F60E0E') + .setTitle('An error has occurred!') + .setAuthor('RCCService.exe', 'https://i.imgur.com/52zkGiZ.png') + .addFields( + { name: 'Message', value: message, inline: true }, + { name: 'Line', value: line, inline: true } + ) + .setTimestamp() + msg.channel.send(exampleEmbed); + } + else + { + try { + const exampleEmbed = new Discord.MessageEmbed() + .setColor('#F60E0E') + .setTitle('An error has occurred!') + .setAuthor('RCCService.exe', 'https://i.imgur.com/52zkGiZ.png') + .addFields( + { name: 'Message', value: errormsg, inline: true }, + ) + .setTimestamp() + msg.channel.send(exampleEmbed); + } catch(e){ + msg.channel.send(`An error has occurred:\n\`\`\`${e}\`\`\``); + } + } + //msg.reply(errormsg); + } + else if (parsedXML["SOAP-ENV:Envelope"] && parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"] && parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:ExecuteResponse"] != undefined) //&& parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["SOAP-ENV:ExecuteResponse"]["SOAP-ENV:ExecuteResult"] != undefined) { + if (parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:ExecuteResponse"]["ns1:ExecuteResult"]) + { + var LuaType = parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:ExecuteResponse"]["ns1:ExecuteResult"]["ns1:type"] + switch (LuaType) + { + case "LUA_TSTRING": + PrintEmbedOfLuaTypes(msg,parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:ExecuteResponse"]["ns1:ExecuteResult"]["ns1:value"], LuaType) + break; + case "LUA_TBOOLEAN": + PrintEmbedOfLuaTypes(msg,parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:ExecuteResponse"]["ns1:ExecuteResult"]["ns1:value"] ? "true" : "false", LuaType) + break; + case "LUA_TTABLE": + //parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["SOAP-ENV:ExecuteResponse"]["SOAP-ENV:ExecuteResult"]["ns1:table"] + console.log(parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:ExecuteResponse"]["ns1:ExecuteResult"]["ns1:table"]) + PrintEmbedOfLuaTypes(msg, `\`\`\`json\n${JSON.stringify(parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:ExecuteResponse"]["ns1:ExecuteResult"]["ns1:table"])}\`\`\``, LuaType) + break; + case "LUA_TNUMBER": + PrintEmbedOfLuaTypes(msg,parsedXML["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:ExecuteResponse"]["ns1:ExecuteResult"]["ns1:value"], LuaType) + break; + default: + msg.reply("Unknown Return Type!"); + break; + } + } + + + else{ + msg.reply("Executed! :white_check_mark:"); + } + + }); + }) + + req.on('error', error => { + console.error(error); + }) + + var content2 = ` + Test + + SOAP + ${message} + + + + `; + + var content = await contentVarible(content2); + + req.write(content); + req.end(); + } + }); + + bot.on('messageReactionAdd', (messageReaction, user) => { + if(user.bot) return; + const { message, emoji } = messageReaction; + if(message.id === msgid) { + switch(emoji.name){ + case "👍": + thumbsup++; + break; + case "👎": + thumbsdown++; + break; + } + } +}); + +bot.on('messageReactionRemove', (messageReaction, user) => { + if(user.bot) return; + const { message, emoji } = messageReaction; + + if(message.id === msgid) { + switch(emoji.name){ + case "👍": + thumbsup--; + break; + case "👎": + thumbsdown--; + break; + } + } +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..16aa316 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,707 @@ +{ + "name": "discord-bot", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@discordjs/collection": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz", + "integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ==" + }, + "@discordjs/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + } + } + }, + "bignumber.js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.4.0.tgz", + "integrity": "sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg=" + }, + "bmp-js": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.3.tgz", + "integrity": "sha1-ZBE+nHzxICs3btYHvzBibr5XsYo=" + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "desktop-screenshot": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/desktop-screenshot/-/desktop-screenshot-0.1.1.tgz", + "integrity": "sha1-f4SSO7/Hk+0lXa2GIeRSSdwSNP0=", + "requires": { + "flavored-path": "0.0.x", + "jimp": "0.2.x" + } + }, + "discord.js": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.1.tgz", + "integrity": "sha512-VwZkVaUAIOB9mKdca0I5MefPMTQJTNg0qdgi1huF3iwsFwJ0L5s/Y69AQe+iPmjuV6j9rtKoG0Ta0n9vgEIL6w==", + "requires": { + "@discordjs/collection": "^0.1.6", + "@discordjs/form-data": "^3.0.1", + "abort-controller": "^3.0.0", + "node-fetch": "^2.6.1", + "prism-media": "^1.2.2", + "setimmediate": "^1.0.5", + "tweetnacl": "^1.0.3", + "ws": "^7.3.1" + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-xml-parser": { + "version": "3.17.6", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.17.6.tgz", + "integrity": "sha512-40WHI/5d2MOzf1sD2bSaTXlPn1lueJLAX6j1xH5dSAr6tNeut8B9ktEL6sjAK9yVON4uNj9//axOdBJUuruCzw==" + }, + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "flavored-path": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/flavored-path/-/flavored-path-0.0.8.tgz", + "integrity": "sha1-s3nIr+yEGv4d0NLsqrEeDMedeso=", + "requires": { + "meta-path": "*" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=" + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "is-global": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-global/-/is-global-0.1.0.tgz", + "integrity": "sha1-dDBf0PhmGz/f6ALRGqlwZo3NzTM=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jimp": { + "version": "0.2.28", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz", + "integrity": "sha1-3VKak3GQ9ClXp5N9Gsw6d2KZbqI=", + "requires": { + "bignumber.js": "^2.1.0", + "bmp-js": "0.0.3", + "es6-promise": "^3.0.2", + "exif-parser": "^0.1.9", + "file-type": "^3.1.0", + "jpeg-js": "^0.2.0", + "load-bmfont": "^1.2.3", + "mime": "^1.3.4", + "mkdirp": "0.5.1", + "pixelmatch": "^4.0.0", + "pngjs": "^3.0.0", + "read-chunk": "^1.0.1", + "request": "^2.65.0", + "stream-to-buffer": "^0.1.0", + "tinycolor2": "^1.1.2", + "url-regex": "^3.0.0" + } + }, + "jpeg-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.2.0.tgz", + "integrity": "sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "meta-path": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/meta-path/-/meta-path-0.0.8.tgz", + "integrity": "sha1-3XL11A9VnGIu+mV6wCzWdkpHVnI=", + "requires": { + "is-global": "*" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" + }, + "mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "requires": { + "mime-db": "1.45.0" + } + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "parse-headers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "requires": { + "pngjs": "^3.0.0" + } + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + }, + "prism-media": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz", + "integrity": "sha512-fSrR66n0l6roW9Rx4rSLMyTPTjRTiXy5RVqDOurACQ6si1rKHHKDU5gwBJoCsIV0R3o9gi+K50akl/qyw1C74A==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "read-chunk": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-1.0.1.tgz", + "integrity": "sha1-X2jKswfmY/GZk1J9m1icrORmEZQ=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + } + } + }, + "stream-to": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-to/-/stream-to-0.2.2.tgz", + "integrity": "sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0=" + }, + "stream-to-buffer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz", + "integrity": "sha1-JnmdkDqyAlyb1VCsRxcbAPjdgKk=", + "requires": { + "stream-to": "~0.2.0" + } + }, + "tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-regex": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", + "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", + "requires": { + "ip-regex": "^1.0.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "ws": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz", + "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==" + }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xml-parse": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/xml-parse/-/xml-parse-0.4.0.tgz", + "integrity": "sha512-+wgw8F9dPiBEOD91RnzJ+s9HJcW5jNR8fgtmqqTpa2YEC22TnExMJPnE5tzEbfyPyjeVZqLdLPj6M0k6oqPM0g==" + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..325b6ce --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "discord-bot", + "version": "1.0.0", + "description": "RCC Soap Bot", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Yakov", + "dependencies": { + "desktop-screenshot": "^0.1.1", + "discord.js": "^12.5.1", + "dotenv": "^8.2.0", + "fast-xml-parser": "^3.17.6", + "he": "^1.2.0", + "xml-parse": "^0.4.0" + } +} diff --git a/rccscreenshot.exe b/rccscreenshot.exe new file mode 100644 index 0000000000000000000000000000000000000000..3d9aeb5d644a07965e9f91e9f6510da7d3fbff7c GIT binary patch literal 7680 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 Du}jrQ literal 0 HcmV?d00001