summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2021-07-29 16:00:22 -0400
committerAndrew Lee <alee14498@protonmail.com>2021-07-29 16:00:22 -0400
commit06dd6383d7a239817c2a9724465896ef7da70bc2 (patch)
tree8c5f63e6adc1a5cd47737d88e44fd7c76f325ea2
parentffc85798c04897d1ddaed61a9be40e5bb0a8792f (diff)
downloadAleeBot-06dd6383d7a239817c2a9724465896ef7da70bc2.tar.gz
AleeBot-06dd6383d7a239817c2a9724465896ef7da70bc2.tar.bz2
AleeBot-06dd6383d7a239817c2a9724465896ef7da70bc2.zip
Big changes
-rw-r--r--CONTRIBUTING.md8
-rw-r--r--To be worked on/leave.js2
-rw-r--r--To be worked on/play.js2
-rw-r--r--To be worked on/queue.js2
-rw-r--r--To be worked on/skip.js2
-rw-r--r--bot_discord.js59
-rw-r--r--commands/about.js4
-rw-r--r--commands/addquote.js82
-rw-r--r--commands/ask.js2
-rw-r--r--commands/avatarurl.js12
-rw-r--r--commands/ban.js4
-rw-r--r--commands/eval.js2
-rw-r--r--commands/git.js2
-rw-r--r--commands/help.js4
-rw-r--r--commands/info.js6
-rw-r--r--commands/interrogate.js2
-rw-r--r--commands/invite.js12
-rw-r--r--commands/jail.js2
-rw-r--r--commands/kick.js4
-rw-r--r--commands/leaveguild.js2
-rw-r--r--commands/nick.js2
-rw-r--r--commands/ping.js2
-rw-r--r--commands/poweroff.js2
-rw-r--r--commands/purge.js2
-rw-r--r--commands/quote.js44
-rw-r--r--commands/say.js2
-rw-r--r--commands/serverinfo.js51
-rw-r--r--commands/setlogchannel.js63
-rw-r--r--commands/setprefix.js2
-rw-r--r--commands/slowdown.js2
-rw-r--r--commands/suggest.js2
-rw-r--r--commands/suggestfeature.js2
-rw-r--r--commands/uptime.js2
-rw-r--r--commands/userinfo.js2
-rw-r--r--deprecated/balance.js2
-rw-r--r--deprecated/buy.js2
-rw-r--r--deprecated/daily.js2
-rw-r--r--deprecated/pay.js2
-rw-r--r--deprecated/setup.js (renamed from commands/setup.js)2
-rw-r--r--package.json7
-rw-r--r--plugins/mongo.js10
-rw-r--r--schema/logging-schema.js13
-rw-r--r--schema/quote-schema.js17
-rw-r--r--storage/quotes.json260
-rw-r--r--storage/quotes.json.bak260
-rw-r--r--storage/vtquotes.json60
46 files changed, 358 insertions, 674 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 473704a..aa79553 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -5,7 +5,7 @@ Include the GPL-3.0 license too and follow the following format when you create
/****************************************
*
* [Command/Plugin]: (Command or Plugin) for AleeBot
- * Copyright (C) 2017-2020 Alee Productions & (your name here)
+ * Copyright (C) 2017-2021 Alee Productions & (your name here)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -43,7 +43,9 @@ exports.help = {
First get NodeJS then clone this repo then do `npm install` or `yarn install` in the AleeBot folder. Now add a file called `tokens.json` then copy and paste this follow code.
```json
{
- "abtoken": "token"
+ "abtoken": "token",
+ "mongoPath": "mongodb://127.0.0.1:27017/aleebot",
+ "port": 3000
}
```
-Then get your token from discord and replace `token` with your token and finally run this in linux `./run_linux.sh` or for windows `run_win.bat` or `npm/yarn start`.
+Then get your token from discord and replace `token` with your token. After that, install MongoDB and run it. Finally, run this in linux `./run_linux.sh` or for windows `run_win.bat` or `npm/yarn start`.
diff --git a/To be worked on/leave.js b/To be worked on/leave.js
index da0b4cc..78410e2 100644
--- a/To be worked on/leave.js
+++ b/To be worked on/leave.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Leave: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/To be worked on/play.js b/To be worked on/play.js
index abebc8b..f14d3c5 100644
--- a/To be worked on/play.js
+++ b/To be worked on/play.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Play: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/To be worked on/queue.js b/To be worked on/queue.js
index 1208ddf..2b6d31a 100644
--- a/To be worked on/queue.js
+++ b/To be worked on/queue.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Queue: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/To be worked on/skip.js b/To be worked on/skip.js
index 371e7e7..bda040b 100644
--- a/To be worked on/skip.js
+++ b/To be worked on/skip.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Skip: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/bot_discord.js b/bot_discord.js
index 991a294..79e9643 100644
--- a/bot_discord.js
+++ b/bot_discord.js
@@ -1,7 +1,7 @@
/** **************************************
*
* AleeBot: Made for discord servers
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -18,16 +18,19 @@
*
* *************************************/
const Discord = require('discord.js');
+const client = new Discord.Client({
+ disableEveryone: true,
+});
const moment = require('moment');
+const express = require('express');
+const fs = require('fs');
const readline = require('readline');
const colors = require('colors');
const DBL = require('dblapi.js');
//const i18next = require('i18next');
-const client = new Discord.Client({
- disableEveryone: true,
-});
+const web = express();
const settings = require('./storage/settings.json');
-const fs = require('fs');
+const mongo = require('./plugins/mongo');
const api = require('./tokens.json');
const dbl = new DBL(api.dbltoken, client);
const active = new Map();
@@ -35,13 +38,16 @@ const ownerID = '242775871059001344';
let autoRole = true;
let logChannel = '318874545593384970';
let statusChannelID = '606602551634296968';
-let readyEmbedMessage = true;
+let readyEmbedMessage = false;
+
const activities = [
'AleeBot ' + settings.abVersion + ' | ' + settings.prefix + 'help',
'Coding bytes',
'Drawing shapes',
'Fighting Quad',
- 'Ultra Jump Mania!'
+ 'Ultra Jump Mania!',
+ 'Exposing TAS-Corp',
+ 'Fighting Evelyn Claythorne'
];
const log = (message) => {
@@ -54,7 +60,7 @@ const rl = readline.createInterface({
prompt: '> '.gray,
});
-console.log(`AleeBot ${settings.abVersion}: Copyright (C) 2017-2020 Alee Productions`.gray);
+console.log(`AleeBot ${settings.abVersion}: Copyright (C) 2017-2021 Alee Productions`.gray);
console.log('This program comes with ABSOLUTELY NO WARRANTY; for details type `show w\'.'.gray);
console.log('This is free software, and you are welcome to redistribute it'.gray);
console.log('under certain conditions; type `show c\' for details.\n'.gray);
@@ -103,8 +109,7 @@ fs.readdir('./commands', (err, files) => {
console.log(err.stack);
}
});
- log('[>] Command Loading complete!'.green);
- console.log('\n');
+ log('[>] Command loading complete!\n'.green);
});
rl.on('line', function(cmd) {
@@ -114,7 +119,7 @@ rl.on('line', function(cmd) {
if (client.guilds.size === 0) {
console.log(('[!] No guilds found.'.yellow));
} else {
- console.log('[i] Here\'s the servers that AleeBot is connected to:');
+ console.log('[i] These are the servers that AleeBot is connected to:');
for ([id, guild] of client.guilds) {
console.log(` Guild Name: ${guild.name} - ID: ${guild.id}`.blue);
}
@@ -124,8 +129,8 @@ rl.on('line', function(cmd) {
if (!args[1]) {
console.log('[!] Please insert the guild\'s ID.'.yellow);
} else {
- var guild = client.guilds.get(args[1]);
- console.log('[i] Here\'s the channels that this guild have:'.blue);
+ let guild = client.guilds.get(args[1]);
+ console.log('[i] These are the channels that this guild have:'.blue);
for ([id, channel, guild] of guild && client.channels) {
console.log(` Channel: #${channel.name} - ID: ${channel.id}`.blue);
}
@@ -135,7 +140,7 @@ rl.on('line', function(cmd) {
if (!args[1]) {
console.log('[!] Please insert the guild\'s ID.'.yellow);
} else {
- var guild = client.guilds.get(args[1]);
+ let guild = client.guilds.get(args[1]);
guild.leave();
}
break;
@@ -144,9 +149,9 @@ rl.on('line', function(cmd) {
console.log('[!] Usage: broadcast [guildID] [channelID].'.yellow);
} else {
const broadcast = args.join(' ').slice(48);
- var guild = null;
+ let guild = null;
guild = client.guilds.get(args[1]);
- var channel = null;
+ let channel = null;
channel = guild.channels.get(args[2]);
if (channel != null) {
channel.send(broadcast);
@@ -198,14 +203,29 @@ rl.on('line', function(cmd) {
rl.prompt();
});
-client.on('ready', () => {
+client.on('ready', async () => {
log('[>] AleeBot is now ready!'.green);
log(`[i] Logged in as ${client.user.tag}`.green);
log(`[i] Default Prefix: ${settings.prefix}`.green);
log(`[i] Bot ID: ${client.user.id}`.green);
- log(`[i] Token: ${api.abtoken}`.green);
log(`[i] Running version ${settings.abVersion} and in ${client.guilds.cache.size} guilds`.green);
+ await mongo().then(mongoose => {
+ try {
+ log('[>] Connected to MongoDB!'.green);
+ } finally {
+ mongoose.connection.close();
+ }
+ })
+
+ web.get('/', (req, res) => {
+ res.send("Hello World! This is going to become the AleeBot dashboard...");
+ });
+
+ web.listen(api.port, () => {
+ console.log(`Listening at https://localhost:${api.port}`)
+ })
+
client.setInterval(function() {
/*
setInterval(() => {
@@ -223,6 +243,7 @@ client.on('ready', () => {
const readyEmbed = new Discord.MessageEmbed()
.setAuthor('AleeBot Status', client.user.avatarURL())
.setDescription('AleeBot has started')
+ .addField('Version', settings.abVersion, true)
.addField('Prefix', `\`${settings.prefix}\``, true)
.setColor('#5cd65c');
let statusChannel = client.channels.cache.get(statusChannelID);
@@ -410,7 +431,7 @@ client.on('message', (msg) => {
if (cmd) {
if (cmd.conf.guildOnly === true) {
if (!msg.channel.guild) {
- return msg.channel.createMessage('This command can only be ran in a guild.');
+ return msg.channel.send('This command can only be ran in a guild.');
}
}
try {
diff --git a/commands/about.js b/commands/about.js
index a455faa..e22d0f8 100644
--- a/commands/about.js
+++ b/commands/about.js
@@ -1,7 +1,7 @@
/** **************************************
*
* About: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,7 +24,7 @@ module.exports.run = async (client, message) => {
.setAuthor(`AleeBot ${require('../storage/settings.json').abVersion}`, client.user.avatarURL())
.addField('About AleeBot', 'AleeBot is an all-in-one bot that\'s made from the Discord.JS api!')
.addField('Contributors', 'Andrew Lee (Founder of this project)\nOfficialRain (Raina) (Uptime Command)\njtsshieh (Command Handler)')
- .setFooter('© Copyright 2017-2020 Alee Productions, Licensed with GPL-3.0')
+ .setFooter('© Copyright 2017-2021 Alee Productions, Licensed with GPL-3.0')
.setColor('#1fd619');
await message.channel.send({embed});
};
diff --git a/commands/addquote.js b/commands/addquote.js
index 7b7221e..6334470 100644
--- a/commands/addquote.js
+++ b/commands/addquote.js
@@ -1,7 +1,7 @@
/** **************************************
*
* AddQuote: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,34 +17,74 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* *************************************/
+const mongo = require('../plugins/mongo');
+const quoteSchema = require('../schema/quote-schema');
module.exports.run = async (client, message, args) => {
- /*
- const moment = require('moment');
- const log = message => {
+/*
+ let authorMessage;
+ let authorImageMessage;
+ let quoteMessage;
+ let yearMessage;*/
- console.log(`[${moment().format('YYYY-MM-DD HH:mm:ss')}] ${message}`);
+ if (!['242775871059001344'].includes(message.author.id)) return message.reply('**This command is disabled due to a new system being implemented.**');
+ //await message.author.send('Welcome to AleeBot\'s quoting system!\nThis process will be easy.');
- };
- const fs = require('fs');
- if(!args[0]) return message.reply(`Usage: ab:addquote [author] [authorImage] [quote] [year]`);
+ if (!args.length) return message.reply("Error: Did not provide more context (message will be replaced eventually)");
- let quotes = JSON.parse(fs.readFileSync("./storage/quotes.json", "utf8"));
+ await mongo().then(async (mongoose) => {
+ try {
+ await new quoteSchema({
+ author: args[0],
+ authorImage: args[1],
+ quote: args[2],
+ year: args[3]
- quotes = {
- author: args[0],
- authorImage: args[1],
- quote: args[2],
- year: args[3]
- };
+ }).save()
+ } finally {
+ await mongoose.connection.close();
+ message.reply('Added this quote to the database...');
+ }
+ })
- fs.writeFile("./storage/quotes.json", JSON.stringify(quotes), (err) =>{
- if (err) log(err)
- })
+/*
+ let quoteState = {};
+ let state = quoteState[message.author.id];
- message.reply(`You just added a new quote!`);
- log(`[i] A quote has been added to quotes.json...`)
+ if (message.content.toLowerCase() === "q"){
+ await message.author.send("Process has been cancelled");
+ state = null;
+ } else {
+ switch (state) {
+ case 1:
+ await message.author.send('Enter the author\'s name');
+ authorMessage = message.content;
+ console.log(authorMessage);
+ state = 2;
+ break;
+ case 2:
+ await message.author.send('author url here');
+ authorImageMessage = message.content;
+ console.log(authorImageMessage);
+ state = 3;
+ break;
+ case 3:
+ await message.author.send('quote here');
+ quoteMessage = message.content;
+ console.log(quoteMessage);
+ state = 4;
+ break;
+ case 4:
+ await message.author.send('year here');
+ yearMessage = message.content;
+ console.log(yearMessage);
+ state = 5;
+ break;
+ case 5:
+ await message.author.send('process complete');
+ state = null;
+ break;
+ }
*/
- message.reply('Command is broken for now');
};
exports.conf = {
diff --git a/commands/ask.js b/commands/ask.js
index 3b1efd5..1dd5edd 100644
--- a/commands/ask.js
+++ b/commands/ask.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Ask: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/avatarurl.js b/commands/avatarurl.js
index 7c50e2c..2c796f4 100644
--- a/commands/avatarurl.js
+++ b/commands/avatarurl.js
@@ -1,7 +1,7 @@
/** **************************************
*
* avatarurl: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -18,11 +18,17 @@
*
* *************************************/
module.exports.run = async (client, message) => {
- message.reply(message.author.avatarURL({ dynamic: true, format: 'png', size: 1024 }));
+ if(!message.mentions.users.first()) {
+ message.reply(message.author.avatarURL({ dynamic: true, format: 'png', size: 1024 }));
+ } else {
+ let targetMember;
+ targetMember = message.mentions.users.first();
+ message.reply(targetMember.avatarURL({ dynamic: true, format: 'png', size: 1024 }))
+ }
};
exports.conf = {
- aliases: [],
+ aliases: ['pic'],
guildOnly: false,
};
exports.help = {
diff --git a/commands/ban.js b/commands/ban.js
index 3c8a809..2c4950a 100644
--- a/commands/ban.js
+++ b/commands/ban.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Ban: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,7 +24,7 @@ module.exports.run = async (client, message, args) => {
if (!message.guild.member(client.user).hasPermission('BAN_MEMBERS')) return message.reply('Uhh... I don\'t have permission to ban members.');
const member = message.mentions.members.first();
if (!member) return message.reply('Uhh... Please mention a member first.');
- await member.ban(`Banned by ${message.author.tag} Reason: ` + mreason);
+ await member.ban(`Banned by ${message.author.tag}. Reason: ${mreason}.`);
const embed = new Discord.MessageEmbed()
.setTitle('User Banned!')
.setColor('#1fd619')
diff --git a/commands/eval.js b/commands/eval.js
index ef8fc97..9ace7bf 100644
--- a/commands/eval.js
+++ b/commands/eval.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Eval: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions & jtsshieh + PokeWorld
+ * Copyright (C) 2017-2021 Alee Productions & jtsshieh + PokeWorld
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/git.js b/commands/git.js
index ed98ebf..4f44edb 100644
--- a/commands/git.js
+++ b/commands/git.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Git: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/help.js b/commands/help.js
index 36d4630..2dafe0c 100644
--- a/commands/help.js
+++ b/commands/help.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Help: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -43,7 +43,7 @@ module.exports.run = async (client, message) => {
.setAuthor('AleeBot ' + require('../storage/settings.json').abVersion + ` Help and on ${client.guilds.cache.size} servers`, client.user.avatarURL())
.setDescription('Every command you input into AleeBot is `' + prefix + '`')
.setColor('#1fd619')
- .setFooter('© Copyright 2017-2020 Alee Productions, Licensed with GPL-3.0');
+ .setFooter('© Copyright 2017-2021 Alee Productions, Licensed with GPL-3.0');
categories.forEach(function(x) {
let cat = '';
diff --git a/commands/info.js b/commands/info.js
index 3de7ecd..4476ac0 100644
--- a/commands/info.js
+++ b/commands/info.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Info: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,14 +20,16 @@
module.exports.run = async (client, message) => {
const Discord = require('discord.js');
const os = require('os');
+ const mongoose = require('mongoose');
const embed = new Discord.MessageEmbed()
.setTitle('Information on AleeBot\'s Host')
.addField('OS Hostname: ', os.hostname(), true)
.addField('NodeJS Version: ', process.versions.node, true)
.addField('OS Platform: ', os.platform(), true)
.addField('OS Version: ', os.release(), true)
+ .addField('Mongoose Version:', mongoose.version, true)
.setColor('#1fd619');
- message.channel.send({embed});
+ await message.channel.send({embed});
};
exports.conf = {
diff --git a/commands/interrogate.js b/commands/interrogate.js
index 54e8cb2..1b9b97b 100644
--- a/commands/interrogate.js
+++ b/commands/interrogate.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Interrogate: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/invite.js b/commands/invite.js
index e6f538f..a12cff4 100644
--- a/commands/invite.js
+++ b/commands/invite.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Invite: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,7 +17,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* *************************************/
-module.exports.run = async (client, message) => {
+module.exports.run = (client, message) => {
+ const disbut = require('discord-buttons')(client);
+ let button = new disbut.MessageButton()
+ .setLabel('My First Button!') //default: NO_LABEL_PROVIDED
+ .setID('click_to_function') //note: if you use the style "url" you must provide url using .setURL('https://example.com')
+ .setDisabled(); //disables the button | default: false
+
message.channel.send({embed: {
color: 2086425,
title: 'Invite Command',
@@ -31,7 +37,7 @@ module.exports.run = async (client, message) => {
},
],
},
- });
+ }, button);
// message.channel.send('Want AleeBot in your server? Here\'s the link: https://discordapp.com/api/oauth2/authorize?client_id=282547024547545109&permissions=2080375863&scope=bot');
};
diff --git a/commands/jail.js b/commands/jail.js
index 432f60a..a82e1b2 100644
--- a/commands/jail.js
+++ b/commands/jail.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Jail: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/kick.js b/commands/kick.js
index 3cbaaf8..79cd964 100644
--- a/commands/kick.js
+++ b/commands/kick.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Kick: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,7 +24,7 @@ module.exports.run = async (client, message, args) => {
if (!message.guild.member(client.user).hasPermission('KICK_MEMBERS')) return message.reply('Uhh... I don\'t have permission to kick members.');
const member = message.mentions.members.first();
if (!member) return message.reply('Uhh... Please mention a member first.');
- member.kick(`Kicked by: ${message.author.tag} Reason: ` + mreason);
+ await member.kick(`Kicked by: ${message.author.tag}. Reason: ${mreason}.`);
const embed = new Discord.MessageEmbed()
.setTitle('User Kicked!')
.setColor('#1fd619')
diff --git a/commands/leaveguild.js b/commands/leaveguild.js
index 5108436..146512c 100644
--- a/commands/leaveguild.js
+++ b/commands/leaveguild.js
@@ -1,7 +1,7 @@
/** **************************************
*
* LeaveGuild: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/nick.js b/commands/nick.js
index f65bf74..d87d57e 100644
--- a/commands/nick.js
+++ b/commands/nick.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Nick: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/ping.js b/commands/ping.js
index b8d2779..d66330d 100644
--- a/commands/ping.js
+++ b/commands/ping.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Ping: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/poweroff.js b/commands/poweroff.js
index 8067c5f..700005a 100644
--- a/commands/poweroff.js
+++ b/commands/poweroff.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Poweroff: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/purge.js b/commands/purge.js
index 97c1be6..bc6e727 100644
--- a/commands/purge.js
+++ b/commands/purge.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Purge: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/quote.js b/commands/quote.js
index 149fe37..69e810a 100644
--- a/commands/quote.js
+++ b/commands/quote.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Quote: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,17 +17,49 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* *************************************/
-module.exports.run = async (client, message) => {
+const mongo = require('../plugins/mongo');
+const quoteSchema = require('../schema/quote-schema');
+module.exports.run = async (client, message, args) => {
+ if (!['242775871059001344'].includes(message.author.id)) return message.reply('**This command is disabled due to a new system being implemented.**');
const Discord = require('discord.js');
let NewQuote;
+ let quo;
+
+ let quoId;
+ let quoAuthor;
+ let quoAuthorImage;
+ let quoQuote;
+ let quoYear;
+
+ if (args) {
+ await mongo().then(async (mongoose) => {
+ try {
+ const quote = await quoteSchema.findOne({quoteID: "1", author: quoAuthor, authorImage: quoAuthorImage, quote: quoQuote, year: quoYear})
+ /*const embed = new Discord.MessageEmbed()
+ .setAuthor(quoAuthor, quoAuthorImage)
+ .setDescription(quoQuote)
+ .setColor('#1fd619')
+ .setFooter('- ' + quoYear);
+
+ await message.channel.send({embed});*/
+ console.log(quote);
+ } finally {
+ await mongoose.connection.close();
+ }
+ })
+ } else {
+
+ }
+
+ /*
function GetNewQuote(quoteNum = -1) {
NewQuote = new Discord.MessageEmbed();
- let quo = require('../storage/quotes.json').quotes;
+ let quo = require('../storage/quotes.json').quotes
- if (quoteNum == -1) {
+ if (quoteNum === -1) {
quoteNum = Math.floor(Math.random() * 1000) % quo.length;
quo=quo[quoteNum];
}
@@ -42,14 +74,14 @@ module.exports.run = async (client, message) => {
NewQuote.setColor('#1fd619');
NewQuote.setDescription(quote);
NewQuote.setFooter('- ' + year);
- NewQuote.setURL(url);
+ //NewQuote.setURL(url);
return NewQuote;
}
const newquote = GetNewQuote();
message.reply('Alright, here\'s your quote.');
- message.channel.send(newquote);
+ await message.channel.send(newquote);*/
};
exports.conf = {
diff --git a/commands/say.js b/commands/say.js
index fe17b42..9ef9707 100644
--- a/commands/say.js
+++ b/commands/say.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Say: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/serverinfo.js b/commands/serverinfo.js
new file mode 100644
index 0000000..9ccb7c2
--- /dev/null
+++ b/commands/serverinfo.js
@@ -0,0 +1,51 @@
+/** **************************************
+ *
+ * ServerInfo: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+module.exports.run = async (client, message) => {
+ const Discord = require('discord.js');
+ const listedChannels = [];
+ let memberCountNoBots = message.guild.members.cache.filter(member => !member.user.bot).size;
+ const embed = new Discord.MessageEmbed()
+ .setAuthor(message.guild.name, message.guild.iconURL())
+ .setDescription('Server Information')
+ .setThumbnail(message.guild.iconURL())
+ .addField('Server Name:', message.guild.name)
+ .addField('Server ID:', message.guild.id)
+ .addField('Create At:', message.guild.createdAt.toUTCString())
+ /*message.guild.channels.cacheType.forEach(channel => {
+ listedChannels.push(channel)
+ })*/
+ //.addField('Channels', `${listedChannels.join('\n')}`)
+ //.addField('Total Channels', message.guild.channelCountMode)
+ .addField('Total Members (with bots)', message.guild.memberCount)
+ .addField('Total Members (without bots)', memberCountNoBots)
+ .setColor('#1fd619');
+ await message.channel.send({embed});
+};
+
+exports.conf = {
+ aliases: ['sinfo'],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'serverinfo',
+ description: 'Tells your info.',
+ usage: 'serverinfo',
+ category: '- Information Commands',
+};
diff --git a/commands/setlogchannel.js b/commands/setlogchannel.js
new file mode 100644
index 0000000..902a210
--- /dev/null
+++ b/commands/setlogchannel.js
@@ -0,0 +1,63 @@
+/** **************************************
+ *
+ * SetLogChannel: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+const mongo = require('../plugins/mongo');
+const logSchema = require('../schema/logging-schema');
+module.exports.run = async (client, message) => {
+ //This will be replaced in the future possibly
+ if (!message.member.permissions.has('MANAGE_GUILD')) return message.reply('It looks like that you can\'t manage this server.');
+ const channel = await message.mentions.channels.first().id;
+ const cache = {}
+
+ if (!channel) return message.reply('I cannot find that channel, please specify...');
+
+ cache[message.guild.id] = channel
+
+ await mongo().then(async (mongoose) => {
+ try {
+ await logSchema.findOneAndUpdate(
+ {
+ _id: message.guild.id,
+ },
+ {
+ _id: message.guild.id,
+ logChannel: channel
+ },
+ {
+ upsert: true
+ }
+ )
+ } finally {
+ await mongoose.connection.close();
+ }
+ })
+
+ await message.reply(`Logging channel has been set to <#${channel}>`);
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'setlogchannel',
+ description: 'Set the log channel.',
+ usage: 'setlogchannel [channel id]',
+ category: '- Moderation Commands',
+};
diff --git a/commands/setprefix.js b/commands/setprefix.js
index edb42c9..2bea4bc 100644
--- a/commands/setprefix.js
+++ b/commands/setprefix.js
@@ -1,7 +1,7 @@
/** **************************************
*
* SetPrefix: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/slowdown.js b/commands/slowdown.js
index c9fc611..008ceb6 100644
--- a/commands/slowdown.js
+++ b/commands/slowdown.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Slowdown: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/suggest.js b/commands/suggest.js
index 3adaa31..3a8e34a 100644
--- a/commands/suggest.js
+++ b/commands/suggest.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Suggest: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/suggestfeature.js b/commands/suggestfeature.js
index 8b8b3c7..28fc01a 100644
--- a/commands/suggestfeature.js
+++ b/commands/suggestfeature.js
@@ -1,7 +1,7 @@
/****************************************
*
* SuggestFeature: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/uptime.js b/commands/uptime.js
index 90afc81..4753f70 100644
--- a/commands/uptime.js
+++ b/commands/uptime.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Uptime: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions & OfficialRain
+ * Copyright (C) 2017-2021 Alee Productions & OfficialRain
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/userinfo.js b/commands/userinfo.js
index f12454a..d90f7bf 100644
--- a/commands/userinfo.js
+++ b/commands/userinfo.js
@@ -1,7 +1,7 @@
/** **************************************
*
* UserInfo: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/deprecated/balance.js b/deprecated/balance.js
index ca32081..bf7618c 100644
--- a/deprecated/balance.js
+++ b/deprecated/balance.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Balance: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/deprecated/buy.js b/deprecated/buy.js
index 25f2589..98d4fcf 100644
--- a/deprecated/buy.js
+++ b/deprecated/buy.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Buy: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/deprecated/daily.js b/deprecated/daily.js
index c0f04f9..4a38f26 100644
--- a/deprecated/daily.js
+++ b/deprecated/daily.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Daily: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/deprecated/pay.js b/deprecated/pay.js
index bc27a4b..42e0f28 100644
--- a/deprecated/pay.js
+++ b/deprecated/pay.js
@@ -1,7 +1,7 @@
/** **************************************
*
* Pay: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/commands/setup.js b/deprecated/setup.js
index bf6a14c..a86f850 100644
--- a/commands/setup.js
+++ b/deprecated/setup.js
@@ -1,7 +1,7 @@
/****************************************
*
* Setup: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/package.json b/package.json
index 7d8ac45..5071221 100644
--- a/package.json
+++ b/package.json
@@ -21,18 +21,19 @@
"blessed": "^0.1.81",
"colors": "^1.3.0",
"dblapi.js": "^2.0.0",
- "discord.js": "^12.2.0",
+ "discord-buttons": "^2.4.1",
+ "discord.js": "^12.5.3",
"eslint": "^7.1.0",
+ "express": "^4.17.1",
"fs": "0.0.1-security",
"git-last-commit": "^0.3.0",
"i18next": "^19.4.4",
"moment": "^2.21.0",
+ "mongoose": "^5.11.8",
"node-opus": "^0.3.0",
"os": "^0.1.1",
"parse-ms": "^1.0.1",
"readline": "^1.3.0",
- "sequelize": "^6.2.3",
- "sqlite3": "^5.0.0",
"ytdl-core": "^0.20.4"
},
"devDependencies": {
diff --git a/plugins/mongo.js b/plugins/mongo.js
new file mode 100644
index 0000000..0102aab
--- /dev/null
+++ b/plugins/mongo.js
@@ -0,0 +1,10 @@
+const mongoose = require('mongoose');
+const { mongoPath } = require('../tokens.json');
+
+module.exports = async () => {
+ await mongoose.connect(mongoPath, {
+ useNewUrlParser: true,
+ useUnifiedTopology: true,
+ });
+ return mongoose;
+} \ No newline at end of file
diff --git a/schema/logging-schema.js b/schema/logging-schema.js
new file mode 100644
index 0000000..339c7f7
--- /dev/null
+++ b/schema/logging-schema.js
@@ -0,0 +1,13 @@
+const mongoose = require('mongoose')
+
+const reqString = {
+ type: String,
+ required: true
+}
+
+const loggingSchema = mongoose.Schema({
+ _id: reqString,
+ logChannel: reqString
+})
+
+module.exports = mongoose.model('logging', loggingSchema) \ No newline at end of file
diff --git a/schema/quote-schema.js b/schema/quote-schema.js
new file mode 100644
index 0000000..d1c7db8
--- /dev/null
+++ b/schema/quote-schema.js
@@ -0,0 +1,17 @@
+const mongoose = require('mongoose');
+
+const reqString = {
+ type: String,
+ required: true
+}
+
+const quoteSchema = mongoose.Schema({
+ quoteID: reqString,
+ author: reqString,
+ authorImage: reqString,
+ quote: reqString,
+ year: reqString
+
+})
+
+module.exports = mongoose.model('quote', quoteSchema) \ No newline at end of file
diff --git a/storage/quotes.json b/storage/quotes.json
deleted file mode 100644
index 78c76a4..0000000
--- a/storage/quotes.json
+++ /dev/null
@@ -1,260 +0,0 @@
-{
- "quotes" :[
- {
- "id": 0,
- "author": "Victor Tran",
- "authorImage": "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote": "A letter says a whole video!",
- "year": "2017",
- "url": "https://cdn.discordapp.com/attachments/278874966542385152/280566273992032258/Screenshot_20170213-160944.png"
- },
- {
- "id": 1,
- "author" : "Prince Hamlet: William Shakespeare",
- "authorImage" : "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Shakespeare.jpg/468px-Shakespeare.jpg",
- "quote" : "To be, or not to be, that is the question",
- "year" : "circa. 1600",
- "url" : "https://en.wikipedia.org/wiki/To_be,_or_not_to_be"
- },
- {
- "id": 2,
- "author" : "Diana Adams / Mitsubishi Mirage",
- "authorImage" : "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "Dialing 000...\nNOOO!!!",
- "year" : "2017",
- "url" : "https://youtu.be/jDy57c7Y-4A?t:11m52s"
- },
- {
- "id": 3,
- "author" : "Diana Adams / Mitsubishi Mirage",
- "authorImage" : "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "You'd have a crash by now!\nPardon?",
- "year" : "2017",
- "url" : "https://youtu.be/jDy57c7Y-4A?t:15m5s"
- },
- {
- "id": 4,
- "author" : "Ivoponop Pena",
- "authorImage" : "https://yt3.ggpht.com/-hZJxXIFsfB8/AAAAAAAAAAI/AAAAAAAAAAA/c_mjVjQWvTw/s48-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "i buy tablets for the bubble plastic",
- "year" : "2016",
- "url" : "https://www.youtube.com/watch?v:AqFDn0TxwH4"
- },
- {
- "id": 5,
- "author" : "The Mill on the Floss: George Eliot",
- "authorImage" : "https://upload.wikimedia.org/wikipedia/commons/8/81/George_Eliot_at_30_by_François_D%27Albert_Durade.jpg",
- "quote" : "Don't judge a book by its cover",
- "year" : "1860",
- "url" : "https://en.wikipedia.org/wiki/Don't_judge_a_book_by_its_cover"
- },
- {
- "id": 6,
- "author" : "tostoday",
- "authorImage" : "https://yt3.ggpht.com/-gNRclMiHzN4/AAAAAAAAAAI/AAAAAAAAAAA/BNEDEUakd4A/s48-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "I don't know why but Visopsys sounds like a medical condition",
- "year" : "circa. 2015",
- "url" : "https://www.youtube.com/watch?v:5T-vEZeY2v0"
- },
- {
- "id": 7,
- "author" : "Diana Adams",
- "authorImage" : "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "4 × 1 000 000!? 4 000 000! It's not that hard...",
- "year" : "2014",
- "url" : "https://youtu.be/5T-vEZeY2v0?t:9m28s"
- },
- {
- "id": 8,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "Yes! I'm not *just* a blue happy face!",
- "year" : "2016",
- "url" : "https://youtu.be/2E21oad5pWQ"
- },
- {
- "id": 9,
- "author" : "ItsDeckyah",
- "authorImage" : "https://yt3.ggpht.com/-t70ZI-25A1k/AAAAAAAAAAI/AAAAAAAAAAA/uGrVakleFIM/s48-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "Always remember, don't let those who are bullying you ruin your life, they are out to do just that. And that's probably all they'll do their whole lives",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 10,
- "author" : "Mighty_Eagle073",
- "authorImage" : "https://yt3.ggpht.com/-Q5IvX3eEGl8/AAAAAAAAAAI/AAAAAAAAAAA/LspLd8v-PR8/s100-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "Spamming : Damning",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 11,
- "author" : "Nibble",
- "authorImage" : "https://yt3.ggpht.com/-SUPNlJ8a7qA/AAAAAAAAAAI/AAAAAAAAAAA/R_I4z7057_w/s100-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "AUTO CORRECF!!!",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 12,
- "author" : "Alee",
- "authorImage" : "https://cdn.discordapp.com/avatars/242775871059001344/b8a995d836bbb8529ae35dc12c2289de.png?size:2048",
- "quote" : "IS THERE A GOOOOOGALIE HERE!!!!",
- "year" : "2014",
- "url" : "https://youtu.be/Ap6fUlMx90A?t:2m30s"
- },
- {
- "id": 13,
- "author" : "143malliw",
- "authorImage" : "https://yt3.ggpht.com/-SUPNlJ8a7qA/AAAAAAAAAAI/AAAAAAAAAAA/R_I4z7057_w/s100-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "but i can't write a quote, for I am the quote",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 14,
- "author" : "AstralMod",
- "authorImage" : "https://cdn.discordapp.com/avatars/282048599574052864/56d2d99bf763df5a05f5d157108edbdc.png?size:2048",
- "quote" : "Welcome to the weekly chat chat!",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 15,
- "author" : "AstralPhaser",
- "authorImage" : "https://cdn.discordapp.com/avatars/230480971084988417/32f46a9671c6ceedc54b369ea73be178.png?size:2048",
- "quote" : "Ok the shrimp is now on the barbie",
- "year" : "2017",
- "url" : "https://media.discordapp.net/attachments/277922530973581312/355882401546764289/d300-123-6379-orton-wp.png"
- },
- {
- "id": 16,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : ":joy: It's Cameron's Birthday!\nJoy!!!11!!111!!!!",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 17,
- "author" : "Steve Jobs",
- "authorImage" : "http://media.syracuse.com/news/photo/2011/01/9177328-large.jpg",
- "quote" : "It's really hard to design products by focus groups. A lot of times, people don't know what they want until you show it to them.",
- "year" : "1998",
- "url" : "https://www.huffingtonpost.com/gregory-ciotti/why-steve-jobs-didnt-list_b_5628355.html"
- },
- {
- "id": 18,
- "author" : "arencllc",
- "authorImage" : "https://cdn.discordapp.com/avatars/191290329985581069/e4d6ee5c8836f5c79c51611d0ba536eb.png?size:2048",
- "quote" : "Coding for uwp is as hard as using a UWP program.",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 19,
- "author" : "FloppyDiskDrive",
- "authorImage" : "https://cdn.discordapp.com/avatars/228271067821506560/a_0122b441972a6edfa6201ee871fad2a7.gif?size:2048",
- "quote" : "Victor would be a champ at synchronized thinking.",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 20,
- "author" : "Tembot",
- "authorImage" : "https://cdn.discordapp.com/avatars/361202413165608962/fba99664eb0aeec8a47db3a74a2029d5.png?size:2048",
- "quote" : "Why are u stocking me",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 21,
- "author" : "PieLover12",
- "authorImage" : "https://cdn.discordapp.com/avatars/344630031303311371/d84ae603ee53a5b54f7b78bcb4f733f2.png?size:2048",
- "quote" : "DIE YOU LOOK LIKE TINY GIRL",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 22,
- "author" : "AstralPhaser",
- "authorImage" : "https://cdn.discordapp.com/avatars/230480971084988417/32f46a9671c6ceedc54b369ea73be178.png?size:2048",
- "quote" : "anyway, I've gotta go now, I'll be back in 3 \"year\"s",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 23,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "Zero electric cars means they don't sell electric cards here",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 24,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "Unless you're living in like Denland or something",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 25,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "[goes and cries in a corner]\nWAAA\nWAAAAAAAAAA\nWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
- "year" : "2017",
- "url" : "https://cdn.discordapp.com/attachments/373884824034869249/374564169678061568/unknown.png"
- },
- {
- "id": 26,
- "author" : "OSFirstTimer",
- "authorImage" : "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "The most popular version of Linux ever called Abuncho. Abuncho 12.10.",
- "year" : "2012",
- "url" : "https://youtu.be/PgGbZfR6Vec?t:6s"
- },
- {
- "id": 27,
- "author" : "Vat19",
- "authorImage" : "https://s3.amazonaws.com/images1.vat19.com/branding/vat19-mobile-logo-2x.png",
- "quote" : "VAAAAT NINETEEEEEEN! dot com ._.",
- "year" : "2017",
- "url" : "https://youtu.be/tnvcxBns_uQ?t:3m17s"
- },
- {
- "id": 28,
- "author" : "Steve Jobs",
- "authorImage" : "http://media.syracuse.com/news/photo/2011/01/9177328-large.jpg",
- "quote" : "Sometimes life is going to hit you in the head with a brick. Don't lose faith.",
- "year" : "circa. 2000",
- "url" : "https://www.example.com/"
- },
- {
- "id": 29,
- "author" : "Alee",
- "authorImage" : "https://cdn.discordapp.com/avatars/242775871059001344/b9814f1117027993d46cd5ae9ce2dd48.png?size=2048",
- "quote" : "Victor finally swore\nAnd I was like \"HOLY SHIT\"",
- "year" : "2018",
- "url" : "https://www.example.com/"
- },
- {
- "id": 30,
- "author" : "Zac Bowden",
- "authorImage" : "https://pbs.twimg.com/profile_images/963331874503430144/NTv0Dlaj_400x400.jpg",
- "quote" : "We can happily move on to Windows 11, Windows 10 is now done and dusted",
- "year" : "2018",
- "url" : "https://www.example.com/"
- },
- {
- "id": 31,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "WHAT THE - IS THAT\nMAN I JUST CAME BACK TO MY ROOM\nAND THEN I SEE YOU WITH A GUY IN IT",
- "year" : "2018",
- "url" : "https://www.example.com/"
- }
- ]
-}
diff --git a/storage/quotes.json.bak b/storage/quotes.json.bak
deleted file mode 100644
index 78c76a4..0000000
--- a/storage/quotes.json.bak
+++ /dev/null
@@ -1,260 +0,0 @@
-{
- "quotes" :[
- {
- "id": 0,
- "author": "Victor Tran",
- "authorImage": "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote": "A letter says a whole video!",
- "year": "2017",
- "url": "https://cdn.discordapp.com/attachments/278874966542385152/280566273992032258/Screenshot_20170213-160944.png"
- },
- {
- "id": 1,
- "author" : "Prince Hamlet: William Shakespeare",
- "authorImage" : "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Shakespeare.jpg/468px-Shakespeare.jpg",
- "quote" : "To be, or not to be, that is the question",
- "year" : "circa. 1600",
- "url" : "https://en.wikipedia.org/wiki/To_be,_or_not_to_be"
- },
- {
- "id": 2,
- "author" : "Diana Adams / Mitsubishi Mirage",
- "authorImage" : "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "Dialing 000...\nNOOO!!!",
- "year" : "2017",
- "url" : "https://youtu.be/jDy57c7Y-4A?t:11m52s"
- },
- {
- "id": 3,
- "author" : "Diana Adams / Mitsubishi Mirage",
- "authorImage" : "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "You'd have a crash by now!\nPardon?",
- "year" : "2017",
- "url" : "https://youtu.be/jDy57c7Y-4A?t:15m5s"
- },
- {
- "id": 4,
- "author" : "Ivoponop Pena",
- "authorImage" : "https://yt3.ggpht.com/-hZJxXIFsfB8/AAAAAAAAAAI/AAAAAAAAAAA/c_mjVjQWvTw/s48-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "i buy tablets for the bubble plastic",
- "year" : "2016",
- "url" : "https://www.youtube.com/watch?v:AqFDn0TxwH4"
- },
- {
- "id": 5,
- "author" : "The Mill on the Floss: George Eliot",
- "authorImage" : "https://upload.wikimedia.org/wikipedia/commons/8/81/George_Eliot_at_30_by_François_D%27Albert_Durade.jpg",
- "quote" : "Don't judge a book by its cover",
- "year" : "1860",
- "url" : "https://en.wikipedia.org/wiki/Don't_judge_a_book_by_its_cover"
- },
- {
- "id": 6,
- "author" : "tostoday",
- "authorImage" : "https://yt3.ggpht.com/-gNRclMiHzN4/AAAAAAAAAAI/AAAAAAAAAAA/BNEDEUakd4A/s48-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "I don't know why but Visopsys sounds like a medical condition",
- "year" : "circa. 2015",
- "url" : "https://www.youtube.com/watch?v:5T-vEZeY2v0"
- },
- {
- "id": 7,
- "author" : "Diana Adams",
- "authorImage" : "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "4 × 1 000 000!? 4 000 000! It's not that hard...",
- "year" : "2014",
- "url" : "https://youtu.be/5T-vEZeY2v0?t:9m28s"
- },
- {
- "id": 8,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "Yes! I'm not *just* a blue happy face!",
- "year" : "2016",
- "url" : "https://youtu.be/2E21oad5pWQ"
- },
- {
- "id": 9,
- "author" : "ItsDeckyah",
- "authorImage" : "https://yt3.ggpht.com/-t70ZI-25A1k/AAAAAAAAAAI/AAAAAAAAAAA/uGrVakleFIM/s48-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "Always remember, don't let those who are bullying you ruin your life, they are out to do just that. And that's probably all they'll do their whole lives",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 10,
- "author" : "Mighty_Eagle073",
- "authorImage" : "https://yt3.ggpht.com/-Q5IvX3eEGl8/AAAAAAAAAAI/AAAAAAAAAAA/LspLd8v-PR8/s100-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "Spamming : Damning",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 11,
- "author" : "Nibble",
- "authorImage" : "https://yt3.ggpht.com/-SUPNlJ8a7qA/AAAAAAAAAAI/AAAAAAAAAAA/R_I4z7057_w/s100-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "AUTO CORRECF!!!",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 12,
- "author" : "Alee",
- "authorImage" : "https://cdn.discordapp.com/avatars/242775871059001344/b8a995d836bbb8529ae35dc12c2289de.png?size:2048",
- "quote" : "IS THERE A GOOOOOGALIE HERE!!!!",
- "year" : "2014",
- "url" : "https://youtu.be/Ap6fUlMx90A?t:2m30s"
- },
- {
- "id": 13,
- "author" : "143malliw",
- "authorImage" : "https://yt3.ggpht.com/-SUPNlJ8a7qA/AAAAAAAAAAI/AAAAAAAAAAA/R_I4z7057_w/s100-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "but i can't write a quote, for I am the quote",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 14,
- "author" : "AstralMod",
- "authorImage" : "https://cdn.discordapp.com/avatars/282048599574052864/56d2d99bf763df5a05f5d157108edbdc.png?size:2048",
- "quote" : "Welcome to the weekly chat chat!",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 15,
- "author" : "AstralPhaser",
- "authorImage" : "https://cdn.discordapp.com/avatars/230480971084988417/32f46a9671c6ceedc54b369ea73be178.png?size:2048",
- "quote" : "Ok the shrimp is now on the barbie",
- "year" : "2017",
- "url" : "https://media.discordapp.net/attachments/277922530973581312/355882401546764289/d300-123-6379-orton-wp.png"
- },
- {
- "id": 16,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : ":joy: It's Cameron's Birthday!\nJoy!!!11!!111!!!!",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 17,
- "author" : "Steve Jobs",
- "authorImage" : "http://media.syracuse.com/news/photo/2011/01/9177328-large.jpg",
- "quote" : "It's really hard to design products by focus groups. A lot of times, people don't know what they want until you show it to them.",
- "year" : "1998",
- "url" : "https://www.huffingtonpost.com/gregory-ciotti/why-steve-jobs-didnt-list_b_5628355.html"
- },
- {
- "id": 18,
- "author" : "arencllc",
- "authorImage" : "https://cdn.discordapp.com/avatars/191290329985581069/e4d6ee5c8836f5c79c51611d0ba536eb.png?size:2048",
- "quote" : "Coding for uwp is as hard as using a UWP program.",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 19,
- "author" : "FloppyDiskDrive",
- "authorImage" : "https://cdn.discordapp.com/avatars/228271067821506560/a_0122b441972a6edfa6201ee871fad2a7.gif?size:2048",
- "quote" : "Victor would be a champ at synchronized thinking.",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 20,
- "author" : "Tembot",
- "authorImage" : "https://cdn.discordapp.com/avatars/361202413165608962/fba99664eb0aeec8a47db3a74a2029d5.png?size:2048",
- "quote" : "Why are u stocking me",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 21,
- "author" : "PieLover12",
- "authorImage" : "https://cdn.discordapp.com/avatars/344630031303311371/d84ae603ee53a5b54f7b78bcb4f733f2.png?size:2048",
- "quote" : "DIE YOU LOOK LIKE TINY GIRL",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 22,
- "author" : "AstralPhaser",
- "authorImage" : "https://cdn.discordapp.com/avatars/230480971084988417/32f46a9671c6ceedc54b369ea73be178.png?size:2048",
- "quote" : "anyway, I've gotta go now, I'll be back in 3 \"year\"s",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 23,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "Zero electric cars means they don't sell electric cards here",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 24,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "Unless you're living in like Denland or something",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "id": 25,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "[goes and cries in a corner]\nWAAA\nWAAAAAAAAAA\nWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
- "year" : "2017",
- "url" : "https://cdn.discordapp.com/attachments/373884824034869249/374564169678061568/unknown.png"
- },
- {
- "id": 26,
- "author" : "OSFirstTimer",
- "authorImage" : "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg",
- "quote" : "The most popular version of Linux ever called Abuncho. Abuncho 12.10.",
- "year" : "2012",
- "url" : "https://youtu.be/PgGbZfR6Vec?t:6s"
- },
- {
- "id": 27,
- "author" : "Vat19",
- "authorImage" : "https://s3.amazonaws.com/images1.vat19.com/branding/vat19-mobile-logo-2x.png",
- "quote" : "VAAAAT NINETEEEEEEN! dot com ._.",
- "year" : "2017",
- "url" : "https://youtu.be/tnvcxBns_uQ?t:3m17s"
- },
- {
- "id": 28,
- "author" : "Steve Jobs",
- "authorImage" : "http://media.syracuse.com/news/photo/2011/01/9177328-large.jpg",
- "quote" : "Sometimes life is going to hit you in the head with a brick. Don't lose faith.",
- "year" : "circa. 2000",
- "url" : "https://www.example.com/"
- },
- {
- "id": 29,
- "author" : "Alee",
- "authorImage" : "https://cdn.discordapp.com/avatars/242775871059001344/b9814f1117027993d46cd5ae9ce2dd48.png?size=2048",
- "quote" : "Victor finally swore\nAnd I was like \"HOLY SHIT\"",
- "year" : "2018",
- "url" : "https://www.example.com/"
- },
- {
- "id": 30,
- "author" : "Zac Bowden",
- "authorImage" : "https://pbs.twimg.com/profile_images/963331874503430144/NTv0Dlaj_400x400.jpg",
- "quote" : "We can happily move on to Windows 11, Windows 10 is now done and dusted",
- "year" : "2018",
- "url" : "https://www.example.com/"
- },
- {
- "id": 31,
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "WHAT THE - IS THAT\nMAN I JUST CAME BACK TO MY ROOM\nAND THEN I SEE YOU WITH A GUY IN IT",
- "year" : "2018",
- "url" : "https://www.example.com/"
- }
- ]
-}
diff --git a/storage/vtquotes.json b/storage/vtquotes.json
deleted file mode 100644
index 79781cd..0000000
--- a/storage/vtquotes.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "quotes" :[
- {
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "@Derpy ♀ For your own fucking good, learn what political correctness is.",
- "year" : "2017",
- "url" : "https://cdn.discordapp.com/attachments/371830028381454337/372263065472729088/2017-10-24_01.58.19.png"
- },
- {
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "But couldn't you at least put the mounted disks on the dick or on Dinder?\nDOCK",
- "year" : "2017",
- "url" : "https://www.example.com"
- },
- {
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "Just happened one gay?\nDAY\nOH BOY\nI BLAME SWIPE TYPING",
- "year" : "2017",
- "url" : "https://www.example.com"
- },
- {
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "(there is a :middle_finger: emoji sitting in Gboard now after my brother sent that to Google assistant)",
- "year" : "2017",
- "url" : "https://www.example.com/"
- },
- {
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "Who needs to say fuck when you can say - instead\nI blame that on my secretary :sob:",
- "year" : "2018",
- "url" : "https://www.example.com/"
- },
- {
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "Dire Dire DICKS\nWAIT\nNO\nDOCKS",
- "year" : "2018",
- "url" : "https://www.example.com/"
- },
- {
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "I need to find a new sexretary ASAP\n.....\nHELP\nAHHHHHHHHHHHH\nSECRETARY",
- "year" : "2018",
- "url" : "https://www.example.com/"
- },
- {
- "author" : "Victor Tran",
- "authorImage" : "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg",
- "quote" : "are you serious blake LMAO",
- "year" : "2018",
- "url" : "https://www.example.com/"
- }
- ]
-}