Mostly cleaning and added the JSON to Map to Print function

This commit is contained in:
ION606
2022-07-16 19:26:06 +03:00
parent b9c4caa608
commit 34bbd823ab
13 changed files with 737 additions and 410 deletions
+1
View File
@@ -6,3 +6,4 @@ config.json
!spec/LevelsXP.txt
*.sqlite
temp.js
trivia.js
+1
View File
@@ -23,6 +23,7 @@ async function welcome(member, welcomechannel, welcomemessage = null, welcomeban
// const background = new CanvasImport.Image();
// background.src = arrayBufferToBuffer(data);
// This uses the canvas dimensions to stretch the image onto the entire canvas
// context.drawImage(background, 0, 0, canvas.width, canvas.height);
context.fillStyle = 'rgba(0,0,0,1)';
+9 -1
View File
@@ -11,9 +11,12 @@ module.exports = {
name += args[i] + " ";
i++;
}
}
} else { name = args[0]; }
if (args[args.length - 1] != args[args.length - 1] != '~fancy' && args[args.length - 1] != '~summary' && args[args.length - 1] != '~stats') { args.push('~stats'); }
scraper.getInfoFromName(name).then((data) => {
try {
if (args[args.length - 1] == '~stats') {
const newEmbed = new Discord.MessageEmbed()
.setColor('#002eff')
@@ -45,6 +48,11 @@ module.exports = {
} else {
message.reply(`Unknown command, try using the format '${bot.prefix}asearch <anime name> [~stats or ~fancy or ~summary]`);
}
} catch (err) {
if (err.message.indexOf('MessageEmbed field values must be non-empty strings') != -1) {
message.reply(`Insufficient information on website!\nThe page can be found here: ${data.url}`);
}
}
});
}
+5 -4
View File
@@ -1,6 +1,7 @@
const { MongoClient, ServerApiVersion } = require('mongodb');
const { createSubscriptionManual } = require('./premium/stripe.js');
const { pause_start_stop, playNext, showQueue } = require('./misc/playAudio.js');
// const { RSSInteractionHandler } = require('./premium/rssFeed.js');
async function handle_interaction(interaction, mongouri, turnManager, bot, STATE, items, xp_collection) {
@@ -69,7 +70,7 @@ async function handle_interaction(interaction, mongouri, turnManager, bot, STATE
pause_start_stop(interaction, bot);
}
} //else ifs here
} //Button else ifs here
});
client.close();
@@ -129,9 +130,9 @@ async function handle_interaction(interaction, mongouri, turnManager, bot, STATE
//Handle the interaction here
}
}
//menu else ifs here
} /*else if (interaction.customId.indexOf('RSS') != -1) {
RSSInteractionHandler(bot, interaction);
}*/ //menu else ifs here
} //other selection types here
}
+2 -1
View File
@@ -211,7 +211,8 @@ function fromMessage(bot, command, msg) {
const message = msg.channel.messages.cache.get(data[2]);
// console.log(message);
var em = message.embeds[0];
var em;
if (message.embeds) { em = message.embeds[0]; }
var rows;
if (command == 'stop') {
+3
View File
@@ -12,6 +12,7 @@ module.exports ={
const html = response.data;
const $ = cheerio.load(html);
//lyrics = $('.para_row').text();
const haste = await hastebin(html, { extension: "txt" });
message.channel.send(haste);
// console.log(lyrics);
@@ -19,6 +20,8 @@ module.exports ={
.catch(function(err) {
if (err.message.indexOf('The "url" argument must be of type string') != -1) {
message.reply("The URL should be a string!");
} else if (err.code == 'ERR_BAD_REQUEST') {
message.reply("404 link not valid!")
} else {
message.reply("Oops! There's been an error");
}
+74
View File
@@ -0,0 +1,74 @@
/**
* @param {JSON} inp
* @returns {Map<String, Map>}
*/
function jsonToMapRecursive(inp) {
if (typeof(inp) != 'object') {
return inp;
}
let m2 = new Map();
Object.entries(inp).forEach((key) => { m2.set(key[0], jsonToMapRecursive(inp[key[0]])); });
return m2;
}
/**
*
* @param {Map} inp
* @param {int} layer
* @returns The map in string format
*
* @example
* {"key1": "val1", "key2": "key3": {"key4": "Val4"}} ==>>
* `
* |-- key1
* | |-- val1
* |
* |-- key2
* | |-- val3
* | | |-- key4
* | | | |--val4
* `
*/
function mapToTableRecursive(inp, layer = 1) {
var temp = '';
if (typeof(inp) != 'object') {
// return `?[${inp}]`;
return '';
}
Array.from(inp.keys()).forEach((key) => {
var keyTemp = ('| ').repeat(layer);
temp += `${keyTemp}- - ${key}\n`.replaceAll(' - -', '- -');
temp += mapToTable(inp.get(key), layer + 1);
});
temp += ('| ').repeat(layer - 1) + '\n';
if (layer == 1) {
var links = new Array();
//Post-processing
var l = temp.split('\n')
l = l.filter((entry, ind) => {
return entry.trim() == '|' || !((/[^A-Za-z0-9 ]+$/).test(entry.trim()) && (/[^A-Za-z0-9 ]+$/).test(l[ind + 1].trim()));
});
temp = l.join('\n')
//Get the links
Array.from(inp.keys()).forEach((key) => {
links.push(key);
});
return [temp, links];
}
return temp;
}
+9 -7
View File
@@ -84,7 +84,7 @@ let mongouritemp;
if (process.env.MONGODB_URI) {
mongouritemp = process.env.MONGODB_URI;
} else {
mongouritemp = require('./config.json');
mongouritemp = require('./config.json').mongooseURI;
}
const mongouri = mongouritemp;
bot.mongouri = mongouri;
@@ -98,7 +98,7 @@ const { connect } = require('mongoose');
// const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js')); // Obsolete?
bot.commands = new Discord.Collection();
const forbiddenFolders = ['db', 'premium', 'dev only'];
const forbiddenFolders = ['db', 'dev only']; //premium,
fs.readdirSync('./commands')
.forEach(dir => {
@@ -108,7 +108,7 @@ fs.readdirSync('./commands')
.forEach(file => {
const command = require(`./commands/${dir}/${file}`);
if (command.name && command.description) {
bot.commands.set(command.name, command);
bot.commands.set(command.name.toLowerCase(), command);
}
});
}
@@ -123,10 +123,12 @@ temp_command = require('./commands/games/game.js');
bot.commands.set('game', temp_command);
//Everything in the API should be handled by specific handler functions
const chat = require('./commands/premium/chat.js');
bot.commands.set('chat', chat);
const stripeCommands = require('./commands/premium/stripe.js');
bot.commands.set('premium', stripeCommands);
// const chat = require('./commands/premium/chat.js');
// bot.commands.set('chat', chat);
// const stripeCommands = require('./commands/premium/stripe.js');
// bot.commands.set('premium', stripeCommands);
// const
// bot.commands.set('RSS', )
//#endregion
+233 -366
View File
@@ -15,10 +15,11 @@
"apt": "^0.0.2",
"arraybuffer-to-buffer": "^0.0.7",
"axios": "^0.27.2",
"canvas": "^2.9.1",
"canvas": "^2.9.3",
"cheerio": "^1.0.0-rc.10",
"discord-reply": "^0.1.2",
"discord.js": "^13.6.0",
"feedparser": "^2.2.10",
"ffmpeg": "^0.0.4",
"ffmpeg-static": "^5.0.0",
"hastebin-gen": "^2.0.5",
@@ -31,6 +32,8 @@
"openai": "^3.0.0",
"play-dl": "^1.9.4",
"random-memes": "^3.1.0",
"request": "^2.88.2",
"rss-parser": "^3.12.0",
"sequelize": "^6.19.0",
"sqlite3": "^5.0.3",
"stripe": "^9.11.0",
@@ -109,14 +112,14 @@
}
},
"node_modules/@discordjs/node-pre-gyp": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.2.tgz",
"integrity": "sha512-V239Czn+DXFGLhhuccwEDBoTdgMGrRu30dOlzm1GzrSIjwFj01ZJerNX7x+CEX1NG1Q/1gGfOOkeZFNHjycrRA==",
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.4.tgz",
"integrity": "sha512-x569MMtdk6jdGo2S58iiZoyv4p/N2Ju8Nh6vvzZb1wyouV7IE3VuU0hg2kqUmTfD0z6r4uD6acvMTuc+iA3f8g==",
"dependencies": {
"detect-libc": "^1.0.3",
"detect-libc": "^2.0.0",
"https-proxy-agent": "^5.0.0",
"make-dir": "^3.1.0",
"node-fetch": "^2.6.5",
"node-fetch": "^2.6.7",
"nopt": "^5.0.0",
"npmlog": "^5.0.1",
"rimraf": "^3.0.2",
@@ -128,18 +131,23 @@
}
},
"node_modules/@discordjs/opus": {
"version": "0.7.0",
"resolved": "git+ssh://git@github.com/discordjs/opus.git#fbd68eeca7637559bf3141b0ae76d48873b8d18a",
"version": "0.8.0",
"resolved": "git+ssh://git@github.com/discordjs/opus.git#478484d2482c38e3a5f5c7cb8fb2cf9cf3f2c9bc",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"@discordjs/node-pre-gyp": "^0.4.2",
"node-addon-api": "^4.2.0"
"@discordjs/node-pre-gyp": "^0.4.4",
"node-addon-api": "^5.0.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/@discordjs/opus/node_modules/node-addon-api": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz",
"integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA=="
},
"node_modules/@discordjs/voice": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.8.0.tgz",
@@ -156,70 +164,6 @@
"node": ">=16.9.0"
}
},
"node_modules/@discordjs/voice/node_modules/@discordjs/opus": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.5.3.tgz",
"integrity": "sha512-IQhCwCy2WKXLe+qkOkwO1Wjgk20uqeAbqM62tCbzIqbTsXX4YAge8Me9RFnI77Lx+UTkgm4rSVM3VPVdS/GsUw==",
"hasInstallScript": true,
"optional": true,
"peer": true,
"dependencies": {
"@discordjs/node-pre-gyp": "^0.4.0",
"node-addon-api": "^3.2.1"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/@discordjs/voice/node_modules/ffmpeg-static": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.4.1.tgz",
"integrity": "sha512-gyGTIf5kgmLDmH7Rwj8vMmNK46bjXKKofHS2gY+LUqoTe/iybVuTuvnhJQR2tZHlKlDG7A/BIH7cRa2jWDKgWw==",
"hasInstallScript": true,
"optional": true,
"peer": true,
"dependencies": {
"@derhuerst/http-basic": "^8.2.0",
"env-paths": "^2.2.0",
"https-proxy-agent": "^5.0.0",
"progress": "^2.0.3"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@discordjs/voice/node_modules/node-addon-api": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"optional": true,
"peer": true
},
"node_modules/@discordjs/voice/node_modules/prism-media": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz",
"integrity": "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==",
"peerDependencies": {
"@discordjs/opus": "^0.5.0",
"ffmpeg-static": "^4.2.7 || ^3.0.0 || ^2.4.0",
"node-opus": "^0.3.3",
"opusscript": "^0.0.8"
},
"peerDependenciesMeta": {
"@discordjs/opus": {
"optional": true
},
"ffmpeg-static": {
"optional": true
},
"node-opus": {
"optional": true
},
"opusscript": {
"optional": true
}
}
},
"node_modules/@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@@ -245,14 +189,6 @@
"node-pre-gyp": "bin/node-pre-gyp"
}
},
"node_modules/@mapbox/node-pre-gyp/node_modules/detect-libc": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
"engines": {
"node": ">=8"
}
},
"node_modules/@napi-rs/canvas": {
"version": "0.1.22",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.22.tgz",
@@ -555,6 +491,11 @@
"node": ">=6.5"
}
},
"node_modules/addressparser": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz",
"integrity": "sha512-aQX7AISOMM7HFE0iZ3+YnD07oIeJqWGVnJ+ZIKaBZAk03ftmVYVqsGas/rbXKR21n4D/hKCSHypvcyOkds/xzg=="
},
"node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -657,6 +598,11 @@
"node": ">= 6"
}
},
"node_modules/array-indexofobject": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/array-indexofobject/-/array-indexofobject-0.0.1.tgz",
"integrity": "sha512-tpdPBIBm4TMNxSp8O3pZgC7mF4+wn9SmJlhE+7bi5so6x39PvzUqChQMbv93R5ilYGZ1HV+Neki4IH/i+87AoQ=="
},
"node_modules/arraybuffer-to-buffer": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/arraybuffer-to-buffer/-/arraybuffer-to-buffer-0.0.7.tgz",
@@ -845,9 +791,9 @@
}
},
"node_modules/canvas": {
"version": "2.9.1",
"resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.1.tgz",
"integrity": "sha512-vSQti1uG/2gjv3x6QLOZw7TctfufaerTWbVe+NSduHxxLGB+qf3kFgQ6n66DSnuoINtVUjrLLIK2R+lxrBG07A==",
"version": "2.9.3",
"resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.3.tgz",
"integrity": "sha512-WOUM7ghii5TV2rbhaZkh1youv/vW1/Canev6Yx6BG2W+1S07w8jKZqKkPnbiPpQEDsnJdN8ouDd7OvQEGXDcUw==",
"hasInstallScript": true,
"dependencies": {
"@mapbox/node-pre-gyp": "^1.0.0",
@@ -1060,14 +1006,11 @@
}
},
"node_modules/detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
"bin": {
"detect-libc": "bin/detect-libc.js"
},
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
"engines": {
"node": ">=0.10"
"node": ">=8"
}
},
"node_modules/discord-api-types": {
@@ -1091,21 +1034,6 @@
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz",
"integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ=="
},
"node_modules/discord-reply/node_modules/@discordjs/opus": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.5.3.tgz",
"integrity": "sha512-IQhCwCy2WKXLe+qkOkwO1Wjgk20uqeAbqM62tCbzIqbTsXX4YAge8Me9RFnI77Lx+UTkgm4rSVM3VPVdS/GsUw==",
"hasInstallScript": true,
"optional": true,
"peer": true,
"dependencies": {
"@discordjs/node-pre-gyp": "^0.4.0",
"node-addon-api": "^3.2.1"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/discord-reply/node_modules/discord.js": {
"version": "12.5.3",
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.3.tgz",
@@ -1125,55 +1053,6 @@
"node": ">=12.0.0"
}
},
"node_modules/discord-reply/node_modules/ffmpeg-static": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.4.1.tgz",
"integrity": "sha512-gyGTIf5kgmLDmH7Rwj8vMmNK46bjXKKofHS2gY+LUqoTe/iybVuTuvnhJQR2tZHlKlDG7A/BIH7cRa2jWDKgWw==",
"hasInstallScript": true,
"optional": true,
"peer": true,
"dependencies": {
"@derhuerst/http-basic": "^8.2.0",
"env-paths": "^2.2.0",
"https-proxy-agent": "^5.0.0",
"progress": "^2.0.3"
},
"engines": {
"node": ">=10"
}
},
"node_modules/discord-reply/node_modules/node-addon-api": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"optional": true,
"peer": true
},
"node_modules/discord-reply/node_modules/prism-media": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz",
"integrity": "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==",
"peerDependencies": {
"@discordjs/opus": "^0.5.0",
"ffmpeg-static": "^4.2.7 || ^3.0.0 || ^2.4.0",
"node-opus": "^0.3.3",
"opusscript": "^0.0.8"
},
"peerDependenciesMeta": {
"@discordjs/opus": {
"optional": true
},
"ffmpeg-static": {
"optional": true
},
"node-opus": {
"optional": true
},
"opusscript": {
"optional": true
}
}
},
"node_modules/discord-reply/node_modules/tweetnacl": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
@@ -1359,6 +1238,28 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
"node_modules/feedparser": {
"version": "2.2.10",
"resolved": "https://registry.npmjs.org/feedparser/-/feedparser-2.2.10.tgz",
"integrity": "sha512-WoAOooa61V8/xuKMi2pEtK86qQ3ZH/M72EEGdqlOTxxb3m6ve1NPvZcmPFs3wEDfcBbFLId2GqZ4YjsYi+h1xA==",
"dependencies": {
"addressparser": "^1.0.1",
"array-indexofobject": "~0.0.1",
"lodash.assign": "^4.2.0",
"lodash.get": "^4.4.2",
"lodash.has": "^4.5.2",
"lodash.uniq": "^4.5.0",
"mri": "^1.1.5",
"readable-stream": "^2.3.7",
"sax": "^1.2.4"
},
"bin": {
"feedparser": "bin/feedparser.js"
},
"engines": {
"node": ">= 10.18.1"
}
},
"node_modules/ffmpeg": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.4.tgz",
@@ -1368,9 +1269,9 @@
}
},
"node_modules/ffmpeg-static": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-5.0.0.tgz",
"integrity": "sha512-z96jGVa8uCVMnyrTvbDZe0d5zbvIVQnfBN+vKDZoVK+ssYpfUJGEmo2DkuY43CA9Ytlsk+5ZVTFTqzvKw1gSaA==",
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-5.0.2.tgz",
"integrity": "sha512-rYeA04AGbvxbUxov6Cn/KDKIzw2rmzwPlgHoqn837NZt0xPdOVA9mJMILz9IX27R45hhSlXS6nThk85XxDivLg==",
"hasInstallScript": true,
"dependencies": {
"@derhuerst/http-basic": "^8.2.0",
@@ -1862,6 +1763,26 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash.assign": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
"integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw=="
},
"node_modules/lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
},
"node_modules/lodash.has": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz",
"integrity": "sha512-rnYUdIo6xRCJnQmbVFEwcxF144erlD+M3YcJUVesflU9paQaE8p+fJDcIQrlMYbxoANFL+AB9hZrzSBBk5PL+g=="
},
"node_modules/lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
},
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -2122,9 +2043,9 @@
}
},
"node_modules/moment": {
"version": "2.29.3",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
"integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==",
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
"engines": {
"node": "*"
}
@@ -2211,6 +2132,14 @@
"node": ">=12.0.0"
}
},
"node_modules/mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
"integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
"engines": {
"node": ">=4"
}
},
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -4788,6 +4717,31 @@
"node": ">=16.0.0"
}
},
"node_modules/prism-media": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.4.tgz",
"integrity": "sha512-eW7LXORkTCQznZs+eqe9VjGOrLBxcBPXgNyHXMTSRVhphvd/RrxgIR7WaWt4fkLuhshcdT5KHL88LAfcvS3f5g==",
"peerDependencies": {
"@discordjs/opus": "^0.8.0",
"ffmpeg-static": "^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0",
"node-opus": "^0.3.3",
"opusscript": "^0.0.8"
},
"peerDependenciesMeta": {
"@discordjs/opus": {
"optional": true
},
"ffmpeg-static": {
"optional": true
},
"node-opus": {
"optional": true
},
"opusscript": {
"optional": true
}
}
},
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -4970,6 +4924,23 @@
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/rss-parser": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.12.0.tgz",
"integrity": "sha512-aqD3E8iavcCdkhVxNDIdg1nkBI17jgqF+9OqPS1orwNaOgySdpvq6B+DoONLhzjzwV8mWg37sb60e4bmLK117A==",
"dependencies": {
"entities": "^2.0.3",
"xml2js": "^0.4.19"
}
},
"node_modules/rss-parser/node_modules/entities": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -5685,74 +5656,10 @@
"ytdl-core": "^4.8.2"
}
},
"node_modules/ytdl-core-discord/node_modules/@discordjs/opus": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.5.3.tgz",
"integrity": "sha512-IQhCwCy2WKXLe+qkOkwO1Wjgk20uqeAbqM62tCbzIqbTsXX4YAge8Me9RFnI77Lx+UTkgm4rSVM3VPVdS/GsUw==",
"hasInstallScript": true,
"optional": true,
"peer": true,
"dependencies": {
"@discordjs/node-pre-gyp": "^0.4.0",
"node-addon-api": "^3.2.1"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/ytdl-core-discord/node_modules/@types/node": {
"version": "15.14.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
"integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A=="
},
"node_modules/ytdl-core-discord/node_modules/ffmpeg-static": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.4.1.tgz",
"integrity": "sha512-gyGTIf5kgmLDmH7Rwj8vMmNK46bjXKKofHS2gY+LUqoTe/iybVuTuvnhJQR2tZHlKlDG7A/BIH7cRa2jWDKgWw==",
"hasInstallScript": true,
"optional": true,
"peer": true,
"dependencies": {
"@derhuerst/http-basic": "^8.2.0",
"env-paths": "^2.2.0",
"https-proxy-agent": "^5.0.0",
"progress": "^2.0.3"
},
"engines": {
"node": ">=10"
}
},
"node_modules/ytdl-core-discord/node_modules/node-addon-api": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"optional": true,
"peer": true
},
"node_modules/ytdl-core-discord/node_modules/prism-media": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz",
"integrity": "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==",
"peerDependencies": {
"@discordjs/opus": "^0.5.0",
"ffmpeg-static": "^4.2.7 || ^3.0.0 || ^2.4.0",
"node-opus": "^0.3.3",
"opusscript": "^0.0.8"
},
"peerDependenciesMeta": {
"@discordjs/opus": {
"optional": true
},
"ffmpeg-static": {
"optional": true
},
"node-opus": {
"optional": true
},
"opusscript": {
"optional": true
}
}
}
},
"dependencies": {
@@ -5811,14 +5718,14 @@
}
},
"@discordjs/node-pre-gyp": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.2.tgz",
"integrity": "sha512-V239Czn+DXFGLhhuccwEDBoTdgMGrRu30dOlzm1GzrSIjwFj01ZJerNX7x+CEX1NG1Q/1gGfOOkeZFNHjycrRA==",
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.4.tgz",
"integrity": "sha512-x569MMtdk6jdGo2S58iiZoyv4p/N2Ju8Nh6vvzZb1wyouV7IE3VuU0hg2kqUmTfD0z6r4uD6acvMTuc+iA3f8g==",
"requires": {
"detect-libc": "^1.0.3",
"detect-libc": "^2.0.0",
"https-proxy-agent": "^5.0.0",
"make-dir": "^3.1.0",
"node-fetch": "^2.6.5",
"node-fetch": "^2.6.7",
"nopt": "^5.0.0",
"npmlog": "^5.0.1",
"rimraf": "^3.0.2",
@@ -5827,11 +5734,18 @@
}
},
"@discordjs/opus": {
"version": "git+ssh://git@github.com/discordjs/opus.git#fbd68eeca7637559bf3141b0ae76d48873b8d18a",
"version": "git+ssh://git@github.com/discordjs/opus.git#478484d2482c38e3a5f5c7cb8fb2cf9cf3f2c9bc",
"from": "@discordjs/opus@github:discordjs/opus",
"requires": {
"@discordjs/node-pre-gyp": "^0.4.2",
"node-addon-api": "^4.2.0"
"@discordjs/node-pre-gyp": "^0.4.4",
"node-addon-api": "^5.0.0"
},
"dependencies": {
"node-addon-api": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz",
"integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA=="
}
}
},
"@discordjs/voice": {
@@ -5845,45 +5759,6 @@
"tiny-typed-emitter": "^2.1.0",
"tslib": "^2.3.1",
"ws": "^8.4.2"
},
"dependencies": {
"@discordjs/opus": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.5.3.tgz",
"integrity": "sha512-IQhCwCy2WKXLe+qkOkwO1Wjgk20uqeAbqM62tCbzIqbTsXX4YAge8Me9RFnI77Lx+UTkgm4rSVM3VPVdS/GsUw==",
"optional": true,
"peer": true,
"requires": {
"@discordjs/node-pre-gyp": "^0.4.0",
"node-addon-api": "^3.2.1"
}
},
"ffmpeg-static": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.4.1.tgz",
"integrity": "sha512-gyGTIf5kgmLDmH7Rwj8vMmNK46bjXKKofHS2gY+LUqoTe/iybVuTuvnhJQR2tZHlKlDG7A/BIH7cRa2jWDKgWw==",
"optional": true,
"peer": true,
"requires": {
"@derhuerst/http-basic": "^8.2.0",
"env-paths": "^2.2.0",
"https-proxy-agent": "^5.0.0",
"progress": "^2.0.3"
}
},
"node-addon-api": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"optional": true,
"peer": true
},
"prism-media": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz",
"integrity": "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==",
"requires": {}
}
}
},
"@gar/promisify": {
@@ -5906,13 +5781,6 @@
"rimraf": "^3.0.2",
"semver": "^7.3.5",
"tar": "^6.1.11"
},
"dependencies": {
"detect-libc": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
}
}
},
"@napi-rs/canvas": {
@@ -6105,6 +5973,11 @@
"event-target-shim": "^5.0.0"
}
},
"addressparser": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz",
"integrity": "sha512-aQX7AISOMM7HFE0iZ3+YnD07oIeJqWGVnJ+ZIKaBZAk03ftmVYVqsGas/rbXKR21n4D/hKCSHypvcyOkds/xzg=="
},
"agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -6184,6 +6057,11 @@
}
}
},
"array-indexofobject": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/array-indexofobject/-/array-indexofobject-0.0.1.tgz",
"integrity": "sha512-tpdPBIBm4TMNxSp8O3pZgC7mF4+wn9SmJlhE+7bi5so6x39PvzUqChQMbv93R5ilYGZ1HV+Neki4IH/i+87AoQ=="
},
"arraybuffer-to-buffer": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/arraybuffer-to-buffer/-/arraybuffer-to-buffer-0.0.7.tgz",
@@ -6326,9 +6204,9 @@
}
},
"canvas": {
"version": "2.9.1",
"resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.1.tgz",
"integrity": "sha512-vSQti1uG/2gjv3x6QLOZw7TctfufaerTWbVe+NSduHxxLGB+qf3kFgQ6n66DSnuoINtVUjrLLIK2R+lxrBG07A==",
"version": "2.9.3",
"resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.3.tgz",
"integrity": "sha512-WOUM7ghii5TV2rbhaZkh1youv/vW1/Canev6Yx6BG2W+1S07w8jKZqKkPnbiPpQEDsnJdN8ouDd7OvQEGXDcUw==",
"requires": {
"@mapbox/node-pre-gyp": "^1.0.0",
"nan": "^2.15.0",
@@ -6481,9 +6359,9 @@
"optional": true
},
"detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
},
"discord-api-types": {
"version": "0.26.1",
@@ -6503,17 +6381,6 @@
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz",
"integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ=="
},
"@discordjs/opus": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.5.3.tgz",
"integrity": "sha512-IQhCwCy2WKXLe+qkOkwO1Wjgk20uqeAbqM62tCbzIqbTsXX4YAge8Me9RFnI77Lx+UTkgm4rSVM3VPVdS/GsUw==",
"optional": true,
"peer": true,
"requires": {
"@discordjs/node-pre-gyp": "^0.4.0",
"node-addon-api": "^3.2.1"
}
},
"discord.js": {
"version": "12.5.3",
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.3.tgz",
@@ -6529,32 +6396,6 @@
"ws": "^7.4.4"
}
},
"ffmpeg-static": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.4.1.tgz",
"integrity": "sha512-gyGTIf5kgmLDmH7Rwj8vMmNK46bjXKKofHS2gY+LUqoTe/iybVuTuvnhJQR2tZHlKlDG7A/BIH7cRa2jWDKgWw==",
"optional": true,
"peer": true,
"requires": {
"@derhuerst/http-basic": "^8.2.0",
"env-paths": "^2.2.0",
"https-proxy-agent": "^5.0.0",
"progress": "^2.0.3"
}
},
"node-addon-api": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"optional": true,
"peer": true
},
"prism-media": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz",
"integrity": "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==",
"requires": {}
},
"tweetnacl": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
@@ -6693,6 +6534,22 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
"feedparser": {
"version": "2.2.10",
"resolved": "https://registry.npmjs.org/feedparser/-/feedparser-2.2.10.tgz",
"integrity": "sha512-WoAOooa61V8/xuKMi2pEtK86qQ3ZH/M72EEGdqlOTxxb3m6ve1NPvZcmPFs3wEDfcBbFLId2GqZ4YjsYi+h1xA==",
"requires": {
"addressparser": "^1.0.1",
"array-indexofobject": "~0.0.1",
"lodash.assign": "^4.2.0",
"lodash.get": "^4.4.2",
"lodash.has": "^4.5.2",
"lodash.uniq": "^4.5.0",
"mri": "^1.1.5",
"readable-stream": "^2.3.7",
"sax": "^1.2.4"
}
},
"ffmpeg": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.4.tgz",
@@ -6702,9 +6559,9 @@
}
},
"ffmpeg-static": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-5.0.0.tgz",
"integrity": "sha512-z96jGVa8uCVMnyrTvbDZe0d5zbvIVQnfBN+vKDZoVK+ssYpfUJGEmo2DkuY43CA9Ytlsk+5ZVTFTqzvKw1gSaA==",
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-5.0.2.tgz",
"integrity": "sha512-rYeA04AGbvxbUxov6Cn/KDKIzw2rmzwPlgHoqn837NZt0xPdOVA9mJMILz9IX27R45hhSlXS6nThk85XxDivLg==",
"requires": {
"@derhuerst/http-basic": "^8.2.0",
"env-paths": "^2.2.0",
@@ -7087,6 +6944,26 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash.assign": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
"integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw=="
},
"lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
},
"lodash.has": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz",
"integrity": "sha512-rnYUdIo6xRCJnQmbVFEwcxF144erlD+M3YcJUVesflU9paQaE8p+fJDcIQrlMYbxoANFL+AB9hZrzSBBk5PL+g=="
},
"lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -7283,9 +7160,9 @@
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
},
"moment": {
"version": "2.29.3",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
"integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw=="
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
},
"moment-timezone": {
"version": "0.5.34",
@@ -7350,6 +7227,11 @@
"debug": "4.x"
}
},
"mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
"integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -9125,6 +9007,12 @@
"play-audio": "^0.5.2"
}
},
"prism-media": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.4.tgz",
"integrity": "sha512-eW7LXORkTCQznZs+eqe9VjGOrLBxcBPXgNyHXMTSRVhphvd/RrxgIR7WaWt4fkLuhshcdT5KHL88LAfcvS3f5g==",
"requires": {}
},
"process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -9275,6 +9163,22 @@
"glob": "^7.1.3"
}
},
"rss-parser": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.12.0.tgz",
"integrity": "sha512-aqD3E8iavcCdkhVxNDIdg1nkBI17jgqF+9OqPS1orwNaOgySdpvq6B+DoONLhzjzwV8mWg37sb60e4bmLK117A==",
"requires": {
"entities": "^2.0.3",
"xml2js": "^0.4.19"
},
"dependencies": {
"entities": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
}
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -9809,47 +9713,10 @@
"ytdl-core": "^4.8.2"
},
"dependencies": {
"@discordjs/opus": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.5.3.tgz",
"integrity": "sha512-IQhCwCy2WKXLe+qkOkwO1Wjgk20uqeAbqM62tCbzIqbTsXX4YAge8Me9RFnI77Lx+UTkgm4rSVM3VPVdS/GsUw==",
"optional": true,
"peer": true,
"requires": {
"@discordjs/node-pre-gyp": "^0.4.0",
"node-addon-api": "^3.2.1"
}
},
"@types/node": {
"version": "15.14.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
"integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A=="
},
"ffmpeg-static": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.4.1.tgz",
"integrity": "sha512-gyGTIf5kgmLDmH7Rwj8vMmNK46bjXKKofHS2gY+LUqoTe/iybVuTuvnhJQR2tZHlKlDG7A/BIH7cRa2jWDKgWw==",
"optional": true,
"peer": true,
"requires": {
"@derhuerst/http-basic": "^8.2.0",
"env-paths": "^2.2.0",
"https-proxy-agent": "^5.0.0",
"progress": "^2.0.3"
}
},
"node-addon-api": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"optional": true,
"peer": true
},
"prism-media": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz",
"integrity": "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==",
"requires": {}
}
}
}
+4 -1
View File
@@ -6,10 +6,11 @@
"apt": "^0.0.2",
"arraybuffer-to-buffer": "^0.0.7",
"axios": "^0.27.2",
"canvas": "^2.9.1",
"canvas": "^2.9.3",
"cheerio": "^1.0.0-rc.10",
"discord-reply": "^0.1.2",
"discord.js": "^13.6.0",
"feedparser": "^2.2.10",
"ffmpeg": "^0.0.4",
"ffmpeg-static": "^5.0.0",
"hastebin-gen": "^2.0.5",
@@ -22,6 +23,8 @@
"openai": "^3.0.0",
"play-dl": "^1.9.4",
"random-memes": "^3.1.0",
"request": "^2.88.2",
"rss-parser": "^3.12.0",
"sequelize": "^6.19.0",
"sqlite3": "^5.0.3",
"stripe": "^9.11.0",
+23
View File
@@ -0,0 +1,23 @@
class simpleCast {
constructor(data, url) {
this.title = data.title;
if (data['itunes:summary']) {
this.description = data['itunes:summary']['#'];
} else {
//<p>......<p>
this.description = data.description.substring(3, s.indexOf('<p>', 4));
}
var audio = data.enclosures.filter((entry) => { return (entry.type.indexOf('audio') != -1) });
if (audio.length > 0) {
this.audioLink = audio[0].url;
} else { console.log("What?"); }
this.url = url;
this.thumbnal = data.meta.image.url;
}
}
module.exports = { simpleCast }
+24
View File
@@ -0,0 +1,24 @@
{
"News": {
"NYTimes": {
"world": "https://rss.nytimes.com/services/xml/rss/nyt/World.xml",
"US": "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml",
"econ": "https://rss.nytimes.com/services/xml/rss/nyt/Economy.xml",
"business": "https://rss.nytimes.com/services/xml/rss/nyt/Business.xml",
"tech": "https://rss.nytimes.com/services/xml/rss/nyt/Technology.xml",
"obituaries": "https://rss.nytimes.com/services/xml/rss/nyt/Obituaries.xml"
},
"Fox": {
"LatestHeadlines": "https://moxie.foxnews.com/feedburner/latest.xml",
"World": "https://moxie.foxnews.com/feedburner/world.xml",
"US": "https://moxie.foxnews.com/feedburner/national.xml",
"Tech": "https://moxie.foxnews.com/feedburner/scitech.xml",
"Politics": "https://moxie.foxnews.com/feedburner/politics.xml"
},
"NPR": "https://feeds.npr.org/1001/rss.xml"
},
"Crime": {
"DateLine_NBC": "https://podcastfeeds.nbcnews.com/HL4TzgYC",
"CrimeJunkie": "https://feeds.simplecast.com/qm_9xx0g"
}
}
+319
View File
@@ -0,0 +1,319 @@
const { MessageActionRow, MessageButton, MessageEmbed, MessageSelectMenu, CommandInteractionOptionResolver } = require('discord.js');
const axios = require('axios');
const cheerio = require('cheerio');
var FeedParser = require('feedparser');
const fetch = require('node-fetch');
const { VoiceConnectionStatus, AudioPlayerStatus, createAudioPlayer, StreamType, joinVoiceChannel, createAudioResource, getVoiceConnection } = require('@discordjs/voice');
const play = require('play-dl');
const hastebin = require("hastebin-gen");
const { simpleCast } = require('./RSSHandlers/simplecast.js')
let Parser = require('rss-parser');
let parser = new Parser();
const allFeedsJSON = require('./feeds.json');
/**
* @param {JSON} inp
* @returns {Map<String, Map>}
*/
function jsonToMapRecursive(inp) {
if (typeof(inp) != 'object') {
return inp;
}
let m2 = new Map();
Object.entries(inp).forEach((key) => { m2.set(key[0], jsonToMapRecursive(inp[key[0]])); });
return m2;
}
const allFeeds = jsonToMapRecursive(allFeedsJSON);
function mapToTable(inp, layer) {
var temp = '';
if (typeof(inp) != 'object') {
// return `?[${inp}]`;
return '';
}
Array.from(inp.keys()).forEach((key) => {
var keyTemp = ('| ').repeat(layer);
temp += `${keyTemp}- - ${key}\n`.replaceAll(' - -', '- -');
temp += mapToTable(inp.get(key), layer + 1);
});
temp += ('| ').repeat(layer - 1) + '\n';
if (layer == 1) {
var links = new Array();
//Post-processing
var l = temp.split('\n')
l = l.filter((entry, ind) => {
return entry.trim() == '|' || !((/[^A-Za-z0-9 ]+$/).test(entry.trim()) && (/[^A-Za-z0-9 ]+$/).test(l[ind + 1].trim()));
});
temp = l.join('\n')
//Get the links
Array.from(inp.keys()).forEach((key) => {
links.push(key);
});
return [temp, links];
}
return temp;
}
/**
*
* @param {simpleCast} obj
* @returns
*/
function playAudio(bot, message, user, obj) {
const member = message.guild.members.cache.get(user.id);
if (!member.voice.channel) {
message.reply("Please join a voice channel before you try this!");
return;
}
const channel = bot.channels.cache.get(member.voice.channel.id);
const connection = joinVoiceChannel({
channelId: channel.id,
guildId: channel.guild.id,
adapterCreator: channel.guild.voiceAdapterCreator,
});
const resource = createAudioResource(obj.audioLink /*, { inlineVolume: true }*/ );
const data = bot.audioData.get(message.channel.guild.id);
if (data && data[1]) {
return message.reply("No podcast queue support yet!");
}
const player = createAudioPlayer();
connection.subscribe(player);
bot.audioData.set(message.guild.id, [player, new Array(), null]);
player.play(resource);
//Create the embed
const newEmbed = new MessageEmbed()
.setColor('#0F00F0')
.setTitle(`${obj.title}`)
.setAuthor({ name: "Selmer Bot", url: "", iconURL: bot.user.displayAvatarURL() })
.setDescription('IS NOW PLAYING')
.setURL(obj.url)
.setThumbnail(obj.thumbnal);
const row = new MessageActionRow()
.addComponents(
new MessageButton()
.setCustomId('PAUSE')
.setLabel('⏸️')
.setStyle('SECONDARY'),
new MessageButton()
.setCustomId('STOP')
.setLabel('⏹️')
.setStyle('SECONDARY'),
// new MessageButton()
// .setCustomId('SKIP')
// .setLabel('⏭️')
// .setStyle('SECONDARY')
);
console.log(obj.audioLink);
const m = message.reply({ embeds: [newEmbed], components: [row] });
}
async function getAndFormatRSS(bot, message, user, inp) {
var req = fetch(inp)
const feedparser = new FeedParser();
req.then(function (res) {
if (res.status !== 200) {
throw new Error('Bad status code');
}
else {
// The response `body` -- res.body -- is a stream
res.body.pipe(feedparser);
}
}, function (err) {
// handle any request errors
});
feedparser.on('error', function (error) {
// always handle errors
});
const items = new Array();
feedparser.on('readable', async function () {
// This is where the action is!
var stream = this; // `this` is `feedparser`, which is a stream
var meta = this.meta; // **NOTE** the "meta" is always available in the context of the feedparser instance
var item;
let i = 0;
while (item = stream.read()) {
items.push(item);
i ++;
if (i >= 100) { break; }
}
})
feedparser.addListener('end', () => {
const item = items[Math.round(Math.random() * items.length)];
if (inp.indexOf('simplecast') != -1) {
var s = new simpleCast(item, inp);
s.audioLink = 'https://download.samplelib.com/mp3/sample-15s.mp3';
playAudio(bot, message, user, s);
}
});
return;
//Get the feed
const feed = await parser.parseURL(inp);
// const items = feed.items;
const item = items[Math.round(Math.random() * items.length)];
var url;
try {
url = item.link || item.guid;
axios(url).then(async response => {
const html = response.data;
const $ = cheerio.load(html);
// console.log(html);
const haste = await hastebin(html, { extension: "txt" });
console.log(url, '\n', haste);
})
} catch (err) {
console.log(err);
return console.log(item);
}
// const newEmbed = new MessageEmbed()
// .setTitle(feed.title)
// .setAuthor({ name: "Selmer Bot", url: "", iconURL: bot.user.displayAvatarURL() })
// .setTimestamp()
// console.log(feed.items);
/*
creator?: 'Ben Casselman and Jeanna Smialek',
title: 'Income and Spending Rose Less Than Prices in May',
link: 'https://www.nytimes.com/2022/06/30/business/economy/income-spending-may.html',
*/
}
function presentFeeds(bot, message, commands, interaction) {
var r;
var url;
if (commands[0] == 'all') {
r = mapToTable(allFeeds, 1);
} else {
var r2 = allFeeds.get(commands[0]);
// commands = commands.slice(1);
commands.slice(1).forEach((key) => {
r2 = r2.get(key);
});
r = mapToTable(r2, 1);
if(!r[1]) { url = r2; }
//Array.from(r2.keys())
}
//Check if we have a feed (no more paths)
if (!r[1]) {
// console.log("Commands:", commands, "\nR: ", r); throw 1;
let path = ''
commands.forEach((com) => { path += `${com} --> `});
path = path.slice(0, path.length - 5);
interaction.update({ content: `You have chosen ${path}!`, components: []});
return getAndFormatRSS(bot, interaction.message, interaction.user, url);
}
var keyList = new Array();
r[1].forEach((key) => {
const listEntry = {
label: `${key}`,
description: `Choose a feed from this category!`,
value: `${key}`,
}
keyList.push(listEntry);
});
const row = new MessageActionRow()
.setComponents(
new MessageSelectMenu()
.setCustomId(`RSS|${commands.join('|')}`)
.setPlaceholder('Nothing selected')
.addOptions(keyList)
)
if (interaction) { return interaction.update({content: r[0], components: [ row ]}); }
message.reply({ content: r[0], components: [ row ] });
/*else if (commands[0].length = 1) {
const data = allFeeds.get(commands[0]).get(commands[1]).get(commands[2]);
interaction.update({ content: `You have chosen ${commands[1]} from the ${commands[0]} section!`, components: []});
return getAndFormatRSS(bot, interaction.message, data);
}*/
}
function RSSInteractionHandler(bot, interaction) {
let commands = interaction.values[0].split('|');
let temp = interaction.customId.split('|').slice(1);
if (temp[0] != 'all') { commands = temp.concat(commands); }
// console.log(interaction.customId, interaction.values);
presentFeeds(bot, null, commands, interaction);
}
// getAndFormatRSS(null, null, imp[0]);
// presentFeeds(null, ['all']);
module.exports = {
name: 'RSS',
description: 'Selmer Bot will present a list of RSS feeds to read from *EXPERAMENTAL*',
execute(message, args, Discord, Client, bot) {
if (!bot.inDebugMode) { return message.reply('Command under development!'); }
if (!args[0]) {
presentFeeds(bot, message, [ 'all' ], null);
}
},
RSSInteractionHandler
}
/*
REMOVED
"ABC": "https://abcnews.go.com/abcnews/topstories"
"FBI": "https://www.fbi.gov/feeds/national-press-releases/rss.xml" (Uhhhh......maybe I should't use this one.....)
*/