From 473a715450eb2247da94b9c9a90f299111a8cf99 Mon Sep 17 00:00:00 2001 From: DeSqBlocki Date: Tue, 4 Feb 2025 21:43:22 +0100 Subject: [PATCH] merge --- HelBot v2/.gitignore | 1 + HelBot v2/commands/live.js | 65 +++ HelBot v2/commands/mcinfo.js | 66 +++ HelBot v2/commands/ping.js | 10 + HelBot v2/commands/server.js | 40 ++ HelBot v2/index.js | 115 ++++ HelBot v2/package-lock.json | 1043 ++++++++++++++++++++++++++++++++++ HelBot v2/package.json | 18 + HelBot v2/pixelhel.png | Bin 0 -> 9011 bytes 9 files changed, 1358 insertions(+) create mode 100644 HelBot v2/.gitignore create mode 100644 HelBot v2/commands/live.js create mode 100644 HelBot v2/commands/mcinfo.js create mode 100644 HelBot v2/commands/ping.js create mode 100644 HelBot v2/commands/server.js create mode 100644 HelBot v2/index.js create mode 100644 HelBot v2/package-lock.json create mode 100644 HelBot v2/package.json create mode 100644 HelBot v2/pixelhel.png diff --git a/HelBot v2/.gitignore b/HelBot v2/.gitignore new file mode 100644 index 0000000..2eea525 --- /dev/null +++ b/HelBot v2/.gitignore @@ -0,0 +1 @@ +.env \ No newline at end of file diff --git a/HelBot v2/commands/live.js b/HelBot v2/commands/live.js new file mode 100644 index 0000000..675b514 --- /dev/null +++ b/HelBot v2/commands/live.js @@ -0,0 +1,65 @@ +const { MessageEmbed } = require("discord.js") +const TwitchApi = require("node-twitch").default +const twitch = new TwitchApi({ + client_id: process.env.TTV_ID, + client_secret: process.env.TTV_SECRET + }); +module.exports = { + category: 'Twitch', + description: 'Shows You If A Stream Is Online', + testOnly: true, + expectedArgs: '', + callback: async ({ client, args, interaction, message }) => { + var channel = args[0] + if (!args.length) { + channel = 'x__hel__x' //default + } + + async function Twitch(stream) { + var streamData = undefined + await twitch.getStreams({ channel: stream }).then(async data => { + const r = data.data[0] + if (r) { + streamData = { + "game": r.game_name, + "title": r.title, + } + } else { + + } + }) + return streamData + } + const streamdata = await Twitch(channel) + var reply + var embed + + if (!streamdata || streamdata === undefined) { + reply = ` is currently offline!` + } else { + const imageUrl = `https://static-cdn.jtvnw.net/previews-ttv/live_user_${channel.toLowerCase()}.jpg` + embed = new MessageEmbed() + .setTitle(`twitch.tv/${channel}`) + .setURL(`https://twitch.tv/${channel}`) + .setDescription(`${channel} is **live**!\n\nThey're playing **${streamdata.game}**\n [${streamdata.title}]`) + .setTimestamp() + .setFooter('HelBot by DeSqBlocki', 'https://cdn.discordapp.com/attachments/345238918582763520/901262809466282034/HelBotIcon.png') + .setImage(imageUrl) + } + + if (interaction){ + if(!streamdata || streamdata === undefined){ + return reply + } else { + return embed + } + } + if (message){ + if(!streamdata || streamdata === undefined){ + return reply + } else { + return embed + } + } + } +} diff --git a/HelBot v2/commands/mcinfo.js b/HelBot v2/commands/mcinfo.js new file mode 100644 index 0000000..8cb513b --- /dev/null +++ b/HelBot v2/commands/mcinfo.js @@ -0,0 +1,66 @@ +const { MessageEmbed } = require('discord.js') +const mcsrv = require('mcsrvstat-api') +module.exports = { + category: 'Minecraft', + description: 'Minecraft Server Information', + slash: 'both', + testOnly: true, + callback: ({ client, message, interaction }) => { + + mcsrv.fetchData("bettermc.desq-gaming.de") + .then((data) => { + if (data.online === false) { + if (message) { + message.reply({ content: 'Could Not Fetch Server Info. Is It Offline?' }) + .then(msg => { + setTimeout(() => { + message.delete() + return msg.delete() + }, 15000) + }) + } + if (interaction) { + interaction.reply({ content: 'Could Not Get All Infos. Is It Offline?' }) + .then(() => { + setTimeout(() => { + return client.api.webhooks(client.user.id, interaction.token).messages("@original").delete(); + }, 15000) + }) + } + } else { + const embed = new MessageEmbed() + .setTitle(data.hostname) + .setURL(`https://mcsrvstat.us/server/bettermc.desq-gaming.de`) + .setThumbnail('https://cdn.discordapp.com/attachments/345238918582763520/885475680014458900/PixelHel.png') + .setAuthor(`${data.motd.clean}`) + .addFields( + { name: "IP:", value: `${data.ip}:${data.port}` }, + { name: "Game Version:", value: `${data.version}`, inline: true }, + { name: "Currently Online:", value: `${data.players.online}`, inline: true } + ) + .setTimestamp() + .setFooter('HelBot by DeSqBlocki', 'https://cdn.discordapp.com/attachments/345238918582763520/901262809466282034/HelBotIcon.png') + if(data.mods){ + embed.addFields({ name: "Mods Installed:", value: `${data.mods.names.length}`, inline: true }) + } + if (message) { + message.reply({ embeds: [embed] }) + .then(msg => { + setTimeout(() => { + message.delete() + return msg.delete() + }, 15000) + }) + } + if (interaction) { + interaction.reply({ embeds: [embed] }) + .then(msg => { + setTimeout(() => { + return client.api.webhooks(client.user.id, interaction.token).messages("@original").delete(); + }, 15000) + }) + } + } + }) + } +} diff --git a/HelBot v2/commands/ping.js b/HelBot v2/commands/ping.js new file mode 100644 index 0000000..87998a3 --- /dev/null +++ b/HelBot v2/commands/ping.js @@ -0,0 +1,10 @@ +module.exports = { + category: 'Admin', + description: 'Replies with pong', + slash: 'both', + testOnly: true, + + callback: ({ }) => { + return "Pong!" + } +} \ No newline at end of file diff --git a/HelBot v2/commands/server.js b/HelBot v2/commands/server.js new file mode 100644 index 0000000..fa4f02a --- /dev/null +++ b/HelBot v2/commands/server.js @@ -0,0 +1,40 @@ +const { MessageEmbed } = require('discord.js') +const mcsrv = require('mcsrvstat-api') +module.exports = { + category: 'Minecraft', + description: 'Minecraft Server Availabilty', + slash: 'both', + testOnly: true, + callback: ({client, message, interaction}) => { + const server = "bettermc.desq-gaming.de" + mcsrv.isOnline(server) + .then((bool) =>{ + const embed = new MessageEmbed() + .setTitle(server) + .setURL(`https://mcsrvstat.us/server/bettermc.desq-gaming.de`) + .setThumbnail('https://cdn.discordapp.com/attachments/345238918582763520/885475680014458900/PixelHel.png') + .setDescription( + `The Server Is **${bool?"":"Not "}Online!**` + ) + .setTimestamp() + .setFooter('HelBot by DeSqBlocki', 'https://cdn.discordapp.com/attachments/345238918582763520/901262809466282034/HelBotIcon.png') + if (message) { + message.reply({ embeds: [embed] }) + .then(msg => { + setTimeout(() => { + message.delete() + return msg.delete() + }, 15000) + }) + } + if (interaction) { + interaction.reply({ embeds: [embed] }) + .then(msg => { + setTimeout(() => { + return client.api.webhooks(client.user.id, interaction.token).messages("@original").delete(); + }, 15000) + }) + } + }) + } +} diff --git a/HelBot v2/index.js b/HelBot v2/index.js new file mode 100644 index 0000000..4ef3fee --- /dev/null +++ b/HelBot v2/index.js @@ -0,0 +1,115 @@ +const TwitchApi = require("node-twitch").default +const { Client, Intents, MessageEmbed } = require('discord.js') +const WOKCommands = require('wokcommands') +const dotenv = require('dotenv') +const path = require('path') +dotenv.config() + +const streamers = [ + 'x__hel__x', +] + +const isLive = new Set() + +const twitch = new TwitchApi({ + client_id: process.env.TTV_ID, + client_secret: process.env.TTV_SECRET +}); + +const client = new Client({ + intents: [ + Intents.FLAGS.GUILDS, + Intents.FLAGS.GUILD_MESSAGES, + Intents.FLAGS.GUILD_MESSAGE_REACTIONS + ] +}) + +client.on('ready', async () => { + //Discord Bot + new WOKCommands(client, { + commandsDir: path.join(__dirname, 'commands'), + ignoreBots: true, + testServers: [process.env.GUILD_ID], + botOwners: ['140508899064283136'] + }) + .setDefaultPrefix(process.env.PREFIX) + .setDisplayName('-=HelBot Commands=-') + .setCategorySettings([ + { + name: 'Minecraft', + emoji: '<:Minecraft:901642179661946940>' + }, { + name: 'Twitch', + emoji: '<:Twitch:888077898400022548>' + }, { + name: 'League', + emoji: '<:LoL:901642179477389353>' + } + ]) + // const d = await client.api.applications(client.user.id).guilds("887425193969082379").commands.get() + // console.log(d) + //// find all slash command in guild + + + // client.api.applications(client.user.id).guilds("887425193969082379").commands('901640675131531314').delete(); + //// delete specific slash command in guild + + const guild = client.guilds.cache.get(process.env.GUILD_ID) + const botchannel = guild.channels.cache.get(process.env.CHANNEL_ID) + //const botchannel = guild.channels.cache.get(process.env.TEST_CHANNEL_ID) + + //Twitch API + async function Twitch(stream) { + var streamData + await twitch.getStreams({ channel: stream }).then(async data => { + const r = data.data[0] + if (r) { + //stream online + if (!isLive.has(stream)) { + //not yet in memory + streamData = { + "game": r.game_name, + "title": r.title, + } + } else { + //already in memory + } + } else { + //stream offline + if (isLive.has(stream)) { + //was in memory + console.log(`${stream} went offline :c`) + isLive.delete(stream) + } else { + //was not in memory + } + } + }) + return streamData + } + + for (var i = 0; i < streamers.length; i++) { + let channel = streamers[i] + setInterval(async () => { + let streamdata = await Twitch(channel) + if (streamdata) { + const imageUrl = `https://static-cdn.jtvnw.net/previews-ttv/live_user_${channel.toLowerCase()}.jpg` + const embed = new MessageEmbed() + .setTitle(`Stream Notice!`) + .setURL(`https://twitch.tv/${channel}`) + .setDescription(`*${streamdata.title}*\nThey're playing **${streamdata.game}**`) + .setTimestamp() + .setFooter('HelBot by DeSqBlocki', 'https://cdn.discordapp.com/attachments/345238918582763520/901262809466282034/HelBotIcon.png') + .setImage(imageUrl) + + botchannel.send({ + content: `<@&${process.env.NOTIFY_ROLE_ID}> im live <:helcomf:963147337134399508> `, + embeds: [embed] + }) + isLive.add(channel) + } + }, 15000); + } +}) + +client.login(process.env.TOKEN) diff --git a/HelBot v2/package-lock.json b/HelBot v2/package-lock.json new file mode 100644 index 0000000..5ccbacb --- /dev/null +++ b/HelBot v2/package-lock.json @@ -0,0 +1,1043 @@ +{ + "name": "helbot_discord", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "helbot_discord", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "discord.js": "^13.2.0", + "dotenv": "^10.0.0", + "mcsrvstat-api": "^1.0.0", + "node-twitch": "^0.4.5", + "wokcommands": "^1.5.3" + } + }, + "node_modules/@discordjs/builders": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.6.0.tgz", + "integrity": "sha512-mH3Gx61LKk2CD05laCI9K5wp+a3NyASHDUGx83DGJFkqJlRlSV5WMJNY6RS37A5SjqDtGMF4wVR9jzFaqShe6Q==", + "dependencies": { + "@sindresorhus/is": "^4.0.1", + "discord-api-types": "^0.22.0", + "ow": "^0.27.0", + "ts-mixer": "^6.0.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@discordjs/builders/node_modules/discord-api-types": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.22.0.tgz", + "integrity": "sha512-l8yD/2zRbZItUQpy7ZxBJwaLX/Bs2TGaCthRppk8Sw24LOIWg12t9JEreezPoYD0SQcC2htNNo27kYEpYW/Srg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@discordjs/collection": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.2.1.tgz", + "integrity": "sha512-vhxqzzM8gkomw0TYRF3tgx7SwElzUlXT/Aa41O7mOcyN6wIJfj5JmDWaO5XGKsGSsNx7F3i5oIlrucCCWV1Nog==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@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==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@sapphire/async-queue": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.7.tgz", + "integrity": "sha512-EBRERa9NqK/EV6DIPBVtjjdHBsu/DSdMuYAydmoIyIPONzp0UAxf2G6JGJ52WkiONtPRx6KNuqB5Q8dm14fwyw==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", + "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@types/node": { + "version": "16.11.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz", + "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==" + }, + "node_modules/@types/webidl-conversions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz", + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.0.tgz", + "integrity": "sha512-cyeefcUCgJlEk+hk2h3N+MqKKsPViQgF5boi9TTHSK+PoR9KWBb/C5ccPcDyAqgsbAYHTwulch725DV84+pSpg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bson": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.5.3.tgz", + "integrity": "sha512-qVX7LX79Mtj7B3NPLzCfBiCP6RAsjiV8N63DjlaVVpZW+PFoDTxQ4SeDbSpcqgE6mXksM5CAwZnXxxxn/XwC0g==", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/discord-api-types": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.23.1.tgz", + "integrity": "sha512-igWmn+45mzXRWNEPU25I/pr8MwxHb767wAr51oy3VRLRcTlp5ADBbrBR0lq3SA1Rfw3MtM4TQu1xo3kxscfVdQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/discord.js": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.2.0.tgz", + "integrity": "sha512-nyxUvL8wuQG38zx13wUMkpcA8koFszyiXdkSLwwM9opKW2LC2H5gD0cTZxImeJ6GtEnKPWT8xBiE8lLBmbNIhw==", + "dependencies": { + "@discordjs/builders": "^0.6.0", + "@discordjs/collection": "^0.2.1", + "@discordjs/form-data": "^3.0.1", + "@sapphire/async-queue": "^1.1.5", + "@types/ws": "^8.2.0", + "discord-api-types": "^0.23.1", + "node-fetch": "^2.6.1", + "ws": "^8.2.3" + }, + "engines": { + "node": ">=16.6.0", + "npm": ">=7.0.0" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "engines": { + "node": ">=10" + } + }, + "node_modules/https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", + "integrity": "sha1-PDfHrhqO65ZpBKKtHpdaGUt+06Q=" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/kareem": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", + "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "node_modules/mcsrvstat-api": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mcsrvstat-api/-/mcsrvstat-api-1.0.0.tgz", + "integrity": "sha512-SGhhVYNaVsvboqrjmViz4OhDxSGavYydSmg2A3Q4kM/ovxeWYufTO62Yz6d9gZj4S97HDSafF1TvSA5ZC6JJDw==", + "dependencies": { + "https": "^1.0.0" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "dependencies": { + "mime-db": "1.50.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mongodb": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.1.3.tgz", + "integrity": "sha512-lHvTqODBiSpuqjpCj48DOyYWS6Iq6ElJNUiH9HWdQtONyOfjgsKzJULipWduMGsSzaNO4nFi/kmlMFCLvjox/Q==", + "dependencies": { + "bson": "^4.5.2", + "denque": "^2.0.1", + "mongodb-connection-string-url": "^2.0.0" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.1.0.tgz", + "integrity": "sha512-Qf9Zw7KGiRljWvMrrUFDdVqo46KIEiDuCzvEN97rh/PcKzk2bd6n9KuzEwBwW9xo5glwx69y1mI6s+jFUD/aIQ==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^9.1.0" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-9.1.0.tgz", + "integrity": "sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA==", + "dependencies": { + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongoose": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.0.12.tgz", + "integrity": "sha512-BvsZk7zEEhb1AgQFLtxN9C+7qgy5edRuA3ZDDwHU+kHG/HM44vI6FdKV5m6HVdAUeCHHQTiVv+YQh8BRsToSHw==", + "dependencies": { + "bson": "^4.2.2", + "kareem": "2.3.2", + "mongodb": "4.1.3", + "mpath": "0.8.4", + "mquery": "4.0.0", + "ms": "2.1.2", + "regexp-clone": "1.0.0", + "sift": "13.5.2", + "sliced": "1.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mpath": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz", + "integrity": "sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.0.tgz", + "integrity": "sha512-nGjm89lHja+T/b8cybAby6H0YgA4qYC/lx6UlwvHGqvTq8bDaNeCwl1sY8uRELrNbVWJzIihxVd+vphGGn1vBw==", + "dependencies": { + "debug": "4.x", + "regexp-clone": "^1.0.0", + "sliced": "1.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/node-fetch": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-twitch": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/node-twitch/-/node-twitch-0.4.5.tgz", + "integrity": "sha512-aoNcCmPf+5SaLBnbGt0NdqhEwUhoKNMkeVdoMa6KEKZef0vCzFNtxBsJ9yBVuSz/cR6QF5rIcgoP5lB866BYFQ==", + "dependencies": { + "node-fetch": "^2.6.0" + } + }, + "node_modules/ow": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz", + "integrity": "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==", + "dependencies": { + "@sindresorhus/is": "^4.0.1", + "callsites": "^3.1.0", + "dot-prop": "^6.0.1", + "lodash.isequal": "^4.5.0", + "type-fest": "^1.2.1", + "vali-date": "^1.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/regexp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sift": { + "version": "13.5.2", + "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", + "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" + }, + "node_modules/sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/ts-mixer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz", + "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ==" + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wokcommands": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/wokcommands/-/wokcommands-1.5.3.tgz", + "integrity": "sha512-oBb7ujov8zJ1DYSLz3G7OW9DJK+0l35t/ds5j/2nJ+4DwfzLU7w4i2yXGZOidSHkkygSegiNuaWKfZTP2okJOw==", + "dependencies": { + "discord.js": "^13.1.0", + "dotenv": "^8.2.0", + "mongoose": "^6.0.10" + } + }, + "node_modules/wokcommands/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + }, + "dependencies": { + "@discordjs/builders": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.6.0.tgz", + "integrity": "sha512-mH3Gx61LKk2CD05laCI9K5wp+a3NyASHDUGx83DGJFkqJlRlSV5WMJNY6RS37A5SjqDtGMF4wVR9jzFaqShe6Q==", + "requires": { + "@sindresorhus/is": "^4.0.1", + "discord-api-types": "^0.22.0", + "ow": "^0.27.0", + "ts-mixer": "^6.0.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "discord-api-types": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.22.0.tgz", + "integrity": "sha512-l8yD/2zRbZItUQpy7ZxBJwaLX/Bs2TGaCthRppk8Sw24LOIWg12t9JEreezPoYD0SQcC2htNNo27kYEpYW/Srg==" + } + } + }, + "@discordjs/collection": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.2.1.tgz", + "integrity": "sha512-vhxqzzM8gkomw0TYRF3tgx7SwElzUlXT/Aa41O7mOcyN6wIJfj5JmDWaO5XGKsGSsNx7F3i5oIlrucCCWV1Nog==" + }, + "@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" + } + }, + "@sapphire/async-queue": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.7.tgz", + "integrity": "sha512-EBRERa9NqK/EV6DIPBVtjjdHBsu/DSdMuYAydmoIyIPONzp0UAxf2G6JGJ52WkiONtPRx6KNuqB5Q8dm14fwyw==" + }, + "@sindresorhus/is": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", + "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==" + }, + "@types/node": { + "version": "16.11.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz", + "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==" + }, + "@types/webidl-conversions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" + }, + "@types/whatwg-url": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz", + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==", + "requires": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "@types/ws": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.0.tgz", + "integrity": "sha512-cyeefcUCgJlEk+hk2h3N+MqKKsPViQgF5boi9TTHSK+PoR9KWBb/C5ccPcDyAqgsbAYHTwulch725DV84+pSpg==", + "requires": { + "@types/node": "*" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bson": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.5.3.tgz", + "integrity": "sha512-qVX7LX79Mtj7B3NPLzCfBiCP6RAsjiV8N63DjlaVVpZW+PFoDTxQ4SeDbSpcqgE6mXksM5CAwZnXxxxn/XwC0g==", + "requires": { + "buffer": "^5.6.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "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" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "denque": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==" + }, + "discord-api-types": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.23.1.tgz", + "integrity": "sha512-igWmn+45mzXRWNEPU25I/pr8MwxHb767wAr51oy3VRLRcTlp5ADBbrBR0lq3SA1Rfw3MtM4TQu1xo3kxscfVdQ==" + }, + "discord.js": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.2.0.tgz", + "integrity": "sha512-nyxUvL8wuQG38zx13wUMkpcA8koFszyiXdkSLwwM9opKW2LC2H5gD0cTZxImeJ6GtEnKPWT8xBiE8lLBmbNIhw==", + "requires": { + "@discordjs/builders": "^0.6.0", + "@discordjs/collection": "^0.2.1", + "@discordjs/form-data": "^3.0.1", + "@sapphire/async-queue": "^1.1.5", + "@types/ws": "^8.2.0", + "discord-api-types": "^0.23.1", + "node-fetch": "^2.6.1", + "ws": "^8.2.3" + } + }, + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + }, + "https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", + "integrity": "sha1-PDfHrhqO65ZpBKKtHpdaGUt+06Q=" + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "kareem": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", + "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "mcsrvstat-api": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mcsrvstat-api/-/mcsrvstat-api-1.0.0.tgz", + "integrity": "sha512-SGhhVYNaVsvboqrjmViz4OhDxSGavYydSmg2A3Q4kM/ovxeWYufTO62Yz6d9gZj4S97HDSafF1TvSA5ZC6JJDw==", + "requires": { + "https": "^1.0.0" + } + }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" + }, + "mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "requires": { + "mime-db": "1.50.0" + } + }, + "mongodb": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.1.3.tgz", + "integrity": "sha512-lHvTqODBiSpuqjpCj48DOyYWS6Iq6ElJNUiH9HWdQtONyOfjgsKzJULipWduMGsSzaNO4nFi/kmlMFCLvjox/Q==", + "requires": { + "bson": "^4.5.2", + "denque": "^2.0.1", + "mongodb-connection-string-url": "^2.0.0", + "saslprep": "^1.0.3" + } + }, + "mongodb-connection-string-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.1.0.tgz", + "integrity": "sha512-Qf9Zw7KGiRljWvMrrUFDdVqo46KIEiDuCzvEN97rh/PcKzk2bd6n9KuzEwBwW9xo5glwx69y1mI6s+jFUD/aIQ==", + "requires": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^9.1.0" + }, + "dependencies": { + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + }, + "whatwg-url": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-9.1.0.tgz", + "integrity": "sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA==", + "requires": { + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } + } + }, + "mongoose": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.0.12.tgz", + "integrity": "sha512-BvsZk7zEEhb1AgQFLtxN9C+7qgy5edRuA3ZDDwHU+kHG/HM44vI6FdKV5m6HVdAUeCHHQTiVv+YQh8BRsToSHw==", + "requires": { + "bson": "^4.2.2", + "kareem": "2.3.2", + "mongodb": "4.1.3", + "mpath": "0.8.4", + "mquery": "4.0.0", + "ms": "2.1.2", + "regexp-clone": "1.0.0", + "sift": "13.5.2", + "sliced": "1.0.1" + } + }, + "mpath": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz", + "integrity": "sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==" + }, + "mquery": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.0.tgz", + "integrity": "sha512-nGjm89lHja+T/b8cybAby6H0YgA4qYC/lx6UlwvHGqvTq8bDaNeCwl1sY8uRELrNbVWJzIihxVd+vphGGn1vBw==", + "requires": { + "debug": "4.x", + "regexp-clone": "^1.0.0", + "sliced": "1.0.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node-fetch": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-twitch": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/node-twitch/-/node-twitch-0.4.5.tgz", + "integrity": "sha512-aoNcCmPf+5SaLBnbGt0NdqhEwUhoKNMkeVdoMa6KEKZef0vCzFNtxBsJ9yBVuSz/cR6QF5rIcgoP5lB866BYFQ==", + "requires": { + "node-fetch": "^2.6.0" + } + }, + "ow": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz", + "integrity": "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==", + "requires": { + "@sindresorhus/is": "^4.0.1", + "callsites": "^3.1.0", + "dot-prop": "^6.0.1", + "lodash.isequal": "^4.5.0", + "type-fest": "^1.2.1", + "vali-date": "^1.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "regexp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" + }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "sift": { + "version": "13.5.2", + "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", + "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" + }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "ts-mixer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz", + "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ==" + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "wokcommands": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/wokcommands/-/wokcommands-1.5.3.tgz", + "integrity": "sha512-oBb7ujov8zJ1DYSLz3G7OW9DJK+0l35t/ds5j/2nJ+4DwfzLU7w4i2yXGZOidSHkkygSegiNuaWKfZTP2okJOw==", + "requires": { + "discord.js": "^13.1.0", + "dotenv": "^8.2.0", + "mongoose": "^6.0.10" + }, + "dependencies": { + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + } + } + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "requires": {} + } + } +} diff --git a/HelBot v2/package.json b/HelBot v2/package.json new file mode 100644 index 0000000..43671b0 --- /dev/null +++ b/HelBot v2/package.json @@ -0,0 +1,18 @@ +{ + "name": "helbot_discord", + "version": "1.0.0", + "description": "Small Discord Companion For x__hel__x", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "DeSqBlocki", + "license": "ISC", + "dependencies": { + "discord.js": "^13.2.0", + "dotenv": "^10.0.0", + "mcsrvstat-api": "^1.0.0", + "node-twitch": "^0.4.5", + "wokcommands": "^1.5.3" + } +} diff --git a/HelBot v2/pixelhel.png b/HelBot v2/pixelhel.png new file mode 100644 index 0000000000000000000000000000000000000000..6631eccdd338c6761197761072350282792037d9 GIT binary patch literal 9011 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

LuJque1nePa(%K7`gn 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 z