fuck node
This commit is contained in:
parent
9ad8081971
commit
304d0ccb96
49 changed files with 1305 additions and 403 deletions
0
.gitattributes
vendored
Normal file → Executable file
0
.gitattributes
vendored
Normal file → Executable file
0
.gitignore
vendored
Normal file → Executable file
0
.gitignore
vendored
Normal file → Executable file
0
.vscode/Snippets.code-snippets
vendored
Normal file → Executable file
0
.vscode/Snippets.code-snippets
vendored
Normal file → Executable file
3
.vscode/settings.json
vendored
Executable file
3
.vscode/settings.json
vendored
Executable file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"editor.lineNumbers": "off"
|
||||
}
|
21
DiscordEvents/ShortlinkMessage.js
Executable file
21
DiscordEvents/ShortlinkMessage.js
Executable file
|
@ -0,0 +1,21 @@
|
|||
const { log, db } = require("../utils/index");
|
||||
const { ShortLinks } = require("../utils");
|
||||
const { table } = require("quick.db");
|
||||
const Servers = new table("servers");
|
||||
const Users = new table("users");
|
||||
const Backend = new table("backend");
|
||||
|
||||
module.exports = {
|
||||
name: "message",
|
||||
run: async (client, Message) => {
|
||||
if (Message.author.bot) return;
|
||||
let Server = Servers.get(Message.guild.id);
|
||||
let Enabled;
|
||||
if (Server === null) {
|
||||
Enabled = db.defaults.server.Shortlinks;
|
||||
} else {
|
||||
Enabled = Server.Shortlinks;
|
||||
}
|
||||
ShortLinks(Enabled, Message);
|
||||
}
|
||||
};
|
21
DiscordEvents/SourceFynnderMessage.js
Executable file
21
DiscordEvents/SourceFynnderMessage.js
Executable file
|
@ -0,0 +1,21 @@
|
|||
const { log, db } = require("../utils/index");
|
||||
const { SourceFynnder } = require("../utils");
|
||||
const { table } = require("quick.db");
|
||||
const Servers = new table("servers");
|
||||
const Users = new table("users");
|
||||
const Backend = new table("backend");
|
||||
|
||||
module.exports = {
|
||||
name: "message",
|
||||
run: async (client, Message) => {
|
||||
if (Message.author.bot) return;
|
||||
let Server = Servers.get(Message.guild.id);
|
||||
let Enabled;
|
||||
if (Server === null) {
|
||||
Enabled = db.defaults.server.SourceFynnder;
|
||||
} else {
|
||||
Enabled = Server.SourceFynnder;
|
||||
}
|
||||
SourceFynnder(Enabled, Message);
|
||||
}
|
||||
};
|
33
DiscordEvents/guildCreate.js
Executable file
33
DiscordEvents/guildCreate.js
Executable file
|
@ -0,0 +1,33 @@
|
|||
const { logChannel } = require("../config");
|
||||
const util = require("../utils");
|
||||
|
||||
module.exports = {
|
||||
name: "guildCreate",
|
||||
run: async (client, guild) => {
|
||||
const logs = client.channels.get(logChannel);
|
||||
const members = await guild.members.fetch();
|
||||
guild.utils = util;
|
||||
guild.guild = guild;
|
||||
|
||||
const total = guild.members.size;
|
||||
const users = guild.members.filter(m => !m.user.bot).size;
|
||||
const bots = guild.members.filter(m => m.user.bot).size;
|
||||
|
||||
if (logs)
|
||||
logs.send(
|
||||
`Added to ${guild.name} (owned by: ${guild.owner.user.tag ||
|
||||
"uncached"} ${guild.ownerID}) on shard ${client.options.shards[
|
||||
client.options.shards.length - 1
|
||||
] + 1}/${client.options.shards.length}\nServer has ${parseInt(
|
||||
total
|
||||
).toLocaleString()} member${total > 1 ? "s" : ""}: ${parseInt(
|
||||
users
|
||||
).toLocaleString()} user${users > 1 ? "s" : ""}, ${parseInt(
|
||||
bots
|
||||
).toLocaleString()} bot${bots > 1 ? "s" : ""}, in region ${
|
||||
guild.region
|
||||
}`
|
||||
);
|
||||
await util.db.setupServer(guild);
|
||||
}
|
||||
};
|
24
events/message.js → DiscordEvents/message.js
Normal file → Executable file
24
events/message.js → DiscordEvents/message.js
Normal file → Executable file
|
@ -1,6 +1,11 @@
|
|||
const { Collection } = require("discord.js");
|
||||
const ShortLinks = require("../utils/shortlinks");
|
||||
let enabled = true;
|
||||
const { ShortLinks, SourceFynnder } = require("../utils");
|
||||
let ShortLinksEnabled = true;
|
||||
let SourceFynnderEnabled = true;
|
||||
const { table } = require("quick.db");
|
||||
const Servers = new table("servers");
|
||||
const Users = new table("users");
|
||||
const Backend = new table("backend");
|
||||
module.exports = {
|
||||
name: "message",
|
||||
run: async (client, msg) => {
|
||||
|
@ -8,9 +13,18 @@ module.exports = {
|
|||
msg.content.toLowerCase().startsWith(p)
|
||||
);
|
||||
|
||||
if (!prefix && enabled) return ShortLinks(enabled, msg);
|
||||
if (!prefix) return;
|
||||
if (msg.author.bot) return;
|
||||
if (msg.author.id !== "318044130796109825") return;
|
||||
let Server = Servers.get(msg.guild.id);
|
||||
let enabled;
|
||||
if (Server === null) {
|
||||
enabled = require("../utils").db.defaults.server;
|
||||
} else {
|
||||
enabled = Server;
|
||||
}
|
||||
|
||||
ShortLinks(enabled.Shortlinks, msg);
|
||||
if (!prefix) return;
|
||||
const args = msg.content.slice(prefix.length).split(/ +/g);
|
||||
const command = args.shift().toLowerCase();
|
||||
const cmd = client.commands.find(
|
||||
|
@ -28,6 +42,8 @@ module.exports = {
|
|||
channel: msg.channel,
|
||||
author: msg.author,
|
||||
member: msg.member,
|
||||
db: { users: Users, servers: Servers, backend: Backend },
|
||||
utils: require("../utils"),
|
||||
isDeveloper: client.config.developers.find(id => msg.author.id == id)
|
||||
};
|
||||
if (!cmd) return;
|
0
events/messageReactionAdd.js → DiscordEvents/messageReactionAdd.js
Normal file → Executable file
0
events/messageReactionAdd.js → DiscordEvents/messageReactionAdd.js
Normal file → Executable file
9
DiscordEvents/ready.js
Executable file
9
DiscordEvents/ready.js
Executable file
|
@ -0,0 +1,9 @@
|
|||
const { log } = require("../utils/index");
|
||||
|
||||
module.exports = {
|
||||
name: "ready",
|
||||
run: async client => {
|
||||
log.hasStarted();
|
||||
client.user.setActivity(`@${client.user.username} help to get started`);
|
||||
}
|
||||
};
|
16
DiscordEvents/shardReady.js
Executable file
16
DiscordEvents/shardReady.js
Executable file
|
@ -0,0 +1,16 @@
|
|||
const { logChannel } = require("../config");
|
||||
const util = require("../utils");
|
||||
|
||||
module.exports = {
|
||||
name: "shardReady",
|
||||
run: async client => {
|
||||
const logs = client.channels.get(logChannel);
|
||||
const message = `Shard ${client.options.shards[
|
||||
client.options.shards.length - 1
|
||||
] + 1}/${client.options.shards.length} is ready`;
|
||||
|
||||
await util.log.shardReady(message);
|
||||
await util.log.shardSpinnerStarted(message);
|
||||
// if (logs !== undefined) logs.send(message);
|
||||
}
|
||||
};
|
0
events/shardReconnecting.js → DiscordEvents/shardReconnecting.js
Normal file → Executable file
0
events/shardReconnecting.js → DiscordEvents/shardReconnecting.js
Normal file → Executable file
0
events/shardResume.js → DiscordEvents/shardResume.js
Normal file → Executable file
0
events/shardResume.js → DiscordEvents/shardResume.js
Normal file → Executable file
90
DiscordModules/Developers/eval.js
Executable file
90
DiscordModules/Developers/eval.js
Executable file
|
@ -0,0 +1,90 @@
|
|||
const Command = require("../../src/structures/Command");
|
||||
const { table } = require("quick.db");
|
||||
const Servers = new table("servers");
|
||||
const Users = new table("users");
|
||||
|
||||
const clean = text => {
|
||||
if (typeof text == "string")
|
||||
return text
|
||||
.replace(/`/g, "`" + String.fromCharCode(8203))
|
||||
.replace(/@/g, "@" + String.fromCharCode(8203));
|
||||
else return text;
|
||||
};
|
||||
|
||||
module.exports = class Eval extends Command {
|
||||
constructor() {
|
||||
super({
|
||||
name: "eval",
|
||||
description: "Run JavaScript code directly from the process.",
|
||||
aliases: ["ev", "e"],
|
||||
module: "Developers",
|
||||
cooldown: 0,
|
||||
guildOnly: false,
|
||||
developerOnly: true
|
||||
});
|
||||
}
|
||||
|
||||
async command(ctx) {
|
||||
if (!ctx.args.length) return;
|
||||
|
||||
const client = ctx.client;
|
||||
|
||||
let code = ctx.args.join(" ");
|
||||
let silent = false;
|
||||
|
||||
if (code.endsWith("-s")) (code = code.split("-s")[0]), (silent = true);
|
||||
if (code.endsWith("--silent"))
|
||||
(code = code.split("--silent")[0]), (silent = true);
|
||||
|
||||
try {
|
||||
let evaled = await eval(code);
|
||||
|
||||
if (typeof evaled != "string") evaled = require("util").inspect(evaled);
|
||||
|
||||
evaled.replace(
|
||||
new RegExp(client.token.replace(/\./g, "\\.", "g")),
|
||||
"uwu"
|
||||
);
|
||||
|
||||
if (!silent) {
|
||||
ctx
|
||||
.send(`\`\`\`js\n${clean(evaled)}\n\`\`\``)
|
||||
.then(async m => {
|
||||
await m.react("📥");
|
||||
await m.react("🗑");
|
||||
})
|
||||
.catch(err => {
|
||||
ctx
|
||||
.send(
|
||||
`\`Content is over 2,000 characters: react to upload to Hastebin\``
|
||||
)
|
||||
.then(async m => {
|
||||
client.lastEval = clean(evaled);
|
||||
|
||||
await m.react("📥");
|
||||
await m.react("🗑");
|
||||
});
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
ctx
|
||||
.send(`\`\`\`js\n${clean(error)}\n\`\`\``)
|
||||
.then(async m => {
|
||||
await m.react("📥");
|
||||
await m.react("🗑");
|
||||
})
|
||||
.catch(err => {
|
||||
ctx
|
||||
.send(
|
||||
`\`Content is over 2,000 characters: react to upload to Hastebin\``
|
||||
)
|
||||
.then(async m => {
|
||||
client.lastEval = clean(error);
|
||||
|
||||
await m.react("📥");
|
||||
await m.react("🗑");
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
0
modules/Developers/reload.js → DiscordModules/Developers/reload.js
Normal file → Executable file
0
modules/Developers/reload.js → DiscordModules/Developers/reload.js
Normal file → Executable file
21
DiscordModules/Developers/setup.js
Executable file
21
DiscordModules/Developers/setup.js
Executable file
|
@ -0,0 +1,21 @@
|
|||
const Command = require("../../src/structures/Command");
|
||||
module.exports = class Setup extends Command {
|
||||
constructor() {
|
||||
super({
|
||||
name: "setup",
|
||||
description: "x",
|
||||
aliases: ["s"],
|
||||
module: "Developers",
|
||||
cooldown: 0,
|
||||
guildOnly: false,
|
||||
developerOnly: true
|
||||
});
|
||||
}
|
||||
|
||||
async command(ctx) {
|
||||
let x = await ctx.utils.db.prefix
|
||||
.remove(ctx)
|
||||
.catch(err => console.error(err));
|
||||
//' console.log(x);
|
||||
}
|
||||
};
|
18
DiscordModules/Developers/stop.js
Executable file
18
DiscordModules/Developers/stop.js
Executable file
|
@ -0,0 +1,18 @@
|
|||
const Command = require("../../src/structures/Command");
|
||||
module.exports = class Stop extends Command {
|
||||
constructor() {
|
||||
super({
|
||||
name: "stop",
|
||||
description: "Stops the bot",
|
||||
aliases: [],
|
||||
module: "Developers",
|
||||
cooldown: 0,
|
||||
guildOnly: false,
|
||||
developerOnly: true
|
||||
});
|
||||
}
|
||||
|
||||
async command(ctx) {
|
||||
process.exit();
|
||||
}
|
||||
};
|
104
DiscordModules/General/help.js
Executable file
104
DiscordModules/General/help.js
Executable file
|
@ -0,0 +1,104 @@
|
|||
const Command = require("../../src/structures/Command");
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
|
||||
module.exports = class Help extends Command {
|
||||
constructor() {
|
||||
super({
|
||||
name: "help",
|
||||
description:
|
||||
"View a list of available commands, or view information on a specific command.",
|
||||
aliases: ["h"],
|
||||
module: "General",
|
||||
cooldown: 0,
|
||||
guildOnly: false,
|
||||
developerOnly: false
|
||||
});
|
||||
}
|
||||
|
||||
async command(ctx) {
|
||||
if (!ctx.args.length) {
|
||||
const commands = [
|
||||
[
|
||||
"General",
|
||||
ctx.client.commands
|
||||
.filter(command => command.module == "General")
|
||||
.map(command => `**${command.name}** - ${command.description}`)
|
||||
.join("\n")
|
||||
]
|
||||
];
|
||||
|
||||
if (ctx.isDeveloper)
|
||||
commands.push([
|
||||
"Developers",
|
||||
ctx.client.commands
|
||||
.filter(command => command.module == "Developers")
|
||||
.map(command => command.name)
|
||||
.join(", ")
|
||||
]);
|
||||
|
||||
return ctx.send({
|
||||
embed: {
|
||||
fields: commands.map(group => {
|
||||
return new Object({
|
||||
name: group[0],
|
||||
value: group[1]
|
||||
});
|
||||
}),
|
||||
color: 0xff873f
|
||||
}
|
||||
});
|
||||
} else {
|
||||
const command = ctx.client.commands.find(
|
||||
c =>
|
||||
c.name == ctx.args[0].toLowerCase() ||
|
||||
(c.aliases && c.aliases.includes(ctx.args[0].toLowerCase()))
|
||||
);
|
||||
|
||||
let fields = [
|
||||
{
|
||||
name: "Module",
|
||||
value: command.module,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: "Aliases",
|
||||
value:
|
||||
command.aliases.length == 0
|
||||
? "No aliases"
|
||||
: command.aliases.join(", "),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: "Cooldown",
|
||||
value: command.cooldown == 0 ? "No cooldown" : `${command.cooldown}s`,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: "Server only?",
|
||||
value: command.guildOnly ? "Yes" : "No",
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: "Developers only?",
|
||||
value: command.developerOnly ? "Yes" : "No",
|
||||
inline: true
|
||||
}
|
||||
];
|
||||
|
||||
if (!command)
|
||||
return ctx.send(
|
||||
`That command couldn't be found. See the \`help\` command for valid commands.`
|
||||
);
|
||||
|
||||
let embed = new MessageEmbed()
|
||||
.setTitle(command.name)
|
||||
.setDescription(command.description)
|
||||
.setColor(0xff873f);
|
||||
fields.forEach(i => {
|
||||
embed.addField(i.name, i.value, i.inline);
|
||||
});
|
||||
|
||||
return ctx.send(embed);
|
||||
}
|
||||
}
|
||||
};
|
27
modules/General/info.js → DiscordModules/General/info.js
Normal file → Executable file
27
modules/General/info.js → DiscordModules/General/info.js
Normal file → Executable file
|
@ -1,25 +1,7 @@
|
|||
const Command = require("../../src/structures/Command");
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
const { developers, contributors } = require("../../config");
|
||||
const { bold } = require("../../utils/format");
|
||||
const { developers, contributors, source } = require("../../config");
|
||||
const { version: DiscordVersion } = require("discord.js");
|
||||
const usage = require("usage");
|
||||
|
||||
const options = {
|
||||
keepHistory: true
|
||||
};
|
||||
|
||||
const format = sec => {
|
||||
const pad = s => {
|
||||
return (s < 10 ? "0" : "") + s;
|
||||
};
|
||||
|
||||
let hours = Math.floor(sec / (60 * 60));
|
||||
let minutes = Math.floor((sec % (60 * 60)) / 60);
|
||||
let seconds = Math.floor(sec % 60);
|
||||
|
||||
return hours + ":" + pad(minutes) + ":" + pad(seconds);
|
||||
};
|
||||
|
||||
module.exports = class Info extends Command {
|
||||
constructor() {
|
||||
|
@ -35,24 +17,25 @@ module.exports = class Info extends Command {
|
|||
}
|
||||
|
||||
async command(ctx) {
|
||||
let result;
|
||||
const contribs = [];
|
||||
for (const { id, nick, reason } of contributors) {
|
||||
const user = await ctx.client.users.fetch(id);
|
||||
contribs.push(`${user} (${nick}) - ${reason}`);
|
||||
}
|
||||
|
||||
const Contributors = contribs.join("\n");
|
||||
let CreditEmbed = new MessageEmbed()
|
||||
.setTitle(`Thaldrin, a Random Image and Utility Bot`)
|
||||
.setDescription(
|
||||
`Made by ${bold(
|
||||
`Made by ${ctx.utils.format.bold(
|
||||
ctx.client.users.find(user => user.id === "318044130796109825").tag
|
||||
)}`
|
||||
)
|
||||
.addField("Language", "Javascript", true)
|
||||
.addField("Library", `d.js - v${DiscordVersion}`, true)
|
||||
.addField("Node", `${process.version}`, true)
|
||||
.addField("Contributors", Contributors);
|
||||
.addField("Contributors", Contributors)
|
||||
.addField("Source", `[gitdab.com/r/thaldrin](${source})`);
|
||||
|
||||
ctx.send(CreditEmbed);
|
||||
}
|
0
modules/General/ping.js → DiscordModules/General/ping.js
Normal file → Executable file
0
modules/General/ping.js → DiscordModules/General/ping.js
Normal file → Executable file
58
DiscordModules/Images/e621.js
Executable file
58
DiscordModules/Images/e621.js
Executable file
|
@ -0,0 +1,58 @@
|
|||
const Command = require("../../src/structures/Command");
|
||||
const yiff = require("yiff");
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
let Icon =
|
||||
"https://cdn6.aptoide.com/imgs/0/7/f/07f23fe390d6d20f47839932ea23c678_icon.png?w=240";
|
||||
|
||||
module.exports = class E621 extends Command {
|
||||
constructor() {
|
||||
super({
|
||||
name: "e621",
|
||||
description: "Get Images from e621",
|
||||
aliases: ["e6"],
|
||||
module: "Images",
|
||||
cooldown: 5,
|
||||
guildOnly: false,
|
||||
developerOnly: false
|
||||
});
|
||||
}
|
||||
|
||||
async command(ctx) {
|
||||
let Embed = new MessageEmbed().setColor("RED");
|
||||
if (!ctx.channel.nsfw) {
|
||||
Embed.setTitle("NSFW").setDescription(
|
||||
`This channel is not marked as NSFW, please mark it as such and rerun this command.`
|
||||
);
|
||||
return ctx.send(Embed);
|
||||
}
|
||||
if (ctx.args < 1) {
|
||||
Embed.setTitle("Search Terms").setDescription(
|
||||
"I need more tags than that to search for an Image."
|
||||
);
|
||||
return ctx.send(Embed);
|
||||
}
|
||||
|
||||
const Server = await ctx.db.servers.get(ctx.guild.id);
|
||||
let Settings;
|
||||
if (Server === null) {
|
||||
Settings = ctx.utils.db.defaults.server;
|
||||
} else {
|
||||
Settings = Server;
|
||||
}
|
||||
|
||||
let message = await ctx.send(`Searching...`);
|
||||
|
||||
let req;
|
||||
let Message;
|
||||
await yiff.e621.CubFilter(ctx.args.join(" ")).then(E => (req = E));
|
||||
if (Settings.embeds) {
|
||||
Message = new MessageEmbed().setImage(req.image);
|
||||
|
||||
message.delete();
|
||||
} else {
|
||||
Message = `${req.image}`;
|
||||
message.delete();
|
||||
}
|
||||
ctx.send(Message);
|
||||
}
|
||||
};
|
62
DiscordModules/Settings/settings.js
Executable file
62
DiscordModules/Settings/settings.js
Executable file
|
@ -0,0 +1,62 @@
|
|||
const Command = require("../../src/structures/Command");
|
||||
module.exports = class Settings extends Command {
|
||||
constructor() {
|
||||
super({
|
||||
name: "settings",
|
||||
description: "Show the Settings of this Server",
|
||||
aliases: ["config"],
|
||||
module: "Settings",
|
||||
cooldown: 5,
|
||||
guildOnly: true,
|
||||
developerOnly: false
|
||||
});
|
||||
}
|
||||
|
||||
async command(ctx) {
|
||||
const SettingsEmbed = new ctx.utils.discord.MessageEmbed();
|
||||
const Server = await ctx.db.servers.get(ctx.guild.id);
|
||||
// console.log(Server);
|
||||
if (Server !== null) {
|
||||
SettingsEmbed.setTitle(`Settings for ${ctx.guild.name}`)
|
||||
.addField("Prefixes", Server.prefix.join(", "), false)
|
||||
.addField(
|
||||
"SourceFynnder",
|
||||
Server.SourceFynnder
|
||||
? ctx.utils.emotes.settings.on
|
||||
: ctx.utils.emotes.settings.off,
|
||||
true
|
||||
)
|
||||
.addField(
|
||||
"Shortlinks",
|
||||
Server.Shortlinks
|
||||
? ctx.utils.emotes.settings.on
|
||||
: ctx.utils.emotes.settings.off,
|
||||
true
|
||||
)
|
||||
.addBlankField(true)
|
||||
.addField(
|
||||
"Image Embeds",
|
||||
Server.embeds
|
||||
? ctx.utils.emotes.settings.on
|
||||
: ctx.utils.emotes.settings.off,
|
||||
true
|
||||
)
|
||||
.addField(
|
||||
"Image Text",
|
||||
Server.rp_text
|
||||
? ctx.utils.emotes.settings.on
|
||||
: ctx.utils.emotes.settings.off,
|
||||
true
|
||||
)
|
||||
.addField("Default Yiff", Server.default_yiff, true);
|
||||
ctx.send(SettingsEmbed);
|
||||
} else {
|
||||
SettingsEmbed.setTitle(
|
||||
`No Settings for ${ctx.guild.name}`
|
||||
).setDescription(
|
||||
`You shouldn't see this.\n Your Server might not have been set up Properly when you invited me.\n\nPlease [join my support server](https://discord.gg/xNAcF8m) and notify my Developer`
|
||||
);
|
||||
ctx.send(SettingsEmbed);
|
||||
}
|
||||
}
|
||||
};
|
0
LICENSE
Normal file → Executable file
0
LICENSE
Normal file → Executable file
0
README.md
Normal file → Executable file
0
README.md
Normal file → Executable file
|
@ -1,15 +0,0 @@
|
|||
const { logChannel } = require('../config');
|
||||
|
||||
module.exports = {
|
||||
name: 'guildCreate',
|
||||
run: async (client, guild) => {
|
||||
const logs = client.channels.get(logChannel);
|
||||
const members = await guild.members.fetch();
|
||||
|
||||
const total = guild.members.size;
|
||||
const users = guild.members.filter((m)=>!m.user.bot).size;
|
||||
const bots = guild.members.filter((m)=>m.user.bot).size;
|
||||
|
||||
if (logs) logs.send(`Added to ${guild.name} (owned by: ${guild.owner.user.tag || 'uncached'} ${guild.ownerID}) on shard ${client.options.shards[client.options.shards.length - 1] + 1}/${client.options.shards.length}\nServer has ${parseInt(total).toLocaleString()} member${total > 1 ? 's' : ''}: ${parseInt(users).toLocaleString()} user${users > 1 ? 's' : ''}, ${parseInt(bots).toLocaleString()} bot${bots > 1 ? 's' : ''}, in region ${guild.region}`);
|
||||
}
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
module.exports = {
|
||||
name: 'ready',
|
||||
run: async (client) => {
|
||||
client.user.setActivity(`@Musik help to get started`);
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
const { logChannel } = require('../config');
|
||||
|
||||
module.exports = {
|
||||
name: 'shardReady',
|
||||
run: async (client) => {
|
||||
const logs = client.channels.get(logChannel);
|
||||
const message = `Shard ${client.options.shards[client.options.shards.length - 1] + 1}/${client.options.shards.length} changed status to ready`;
|
||||
|
||||
if (logs !== undefined) logs.send(message);
|
||||
console.log(message);
|
||||
}
|
||||
}
|
14
index.js
Normal file → Executable file
14
index.js
Normal file → Executable file
|
@ -1,8 +1,10 @@
|
|||
const Client = require('./src/index');
|
||||
const config = require('./config');
|
||||
const Client = require("./src/index");
|
||||
const config = require("./config");
|
||||
const { log } = require("./utils/index");
|
||||
|
||||
const { util } = require('discord.js');
|
||||
const { util } = require("discord.js");
|
||||
|
||||
util.fetchRecommendedShards(config.token).then((count) => {
|
||||
new Client(config, count);
|
||||
});
|
||||
util.fetchRecommendedShards(config.token).then(async count => {
|
||||
await log.starting();
|
||||
new Client(config, count);
|
||||
});
|
||||
|
|
BIN
json.sqlite
Executable file
BIN
json.sqlite
Executable file
Binary file not shown.
|
@ -1,67 +0,0 @@
|
|||
const Command = require('../../src/structures/Command');
|
||||
|
||||
const clean = text => {
|
||||
if (typeof (text) == 'string')
|
||||
return text.replace(/`/g, "`" + String.fromCharCode(8203)).replace(/@/g, "@" + String.fromCharCode(8203));
|
||||
else return text;
|
||||
}
|
||||
|
||||
module.exports = class Eval extends Command {
|
||||
constructor() {
|
||||
super({
|
||||
name: 'eval',
|
||||
description: 'Run JavaScript code directly from the process.',
|
||||
aliases: ['ev', 'e'],
|
||||
module: 'Developers',
|
||||
cooldown: 0,
|
||||
guildOnly: false,
|
||||
developerOnly: true
|
||||
});
|
||||
}
|
||||
|
||||
async command(ctx) {
|
||||
if (!ctx.args.length) return;
|
||||
|
||||
const client = ctx.client;
|
||||
|
||||
let code = ctx.args.join(' ');
|
||||
let silent = false;
|
||||
|
||||
if (code.endsWith('-s')) code = code.split('-s')[0], silent = true;
|
||||
if (code.endsWith('--silent')) code = code.split('--silent')[0], silent = true;
|
||||
|
||||
try {
|
||||
let evaled = await eval(code);
|
||||
|
||||
if (typeof (evaled) != 'string') evaled = require('util').inspect(evaled);
|
||||
|
||||
evaled.replace(new RegExp(client.token.replace(/\./g, '\\.', 'g')), 'uwu');
|
||||
|
||||
if (!silent) {
|
||||
ctx.send(`\`\`\`js\n${clean(evaled)}\n\`\`\``).then(async (m) => {
|
||||
await m.react('📥');
|
||||
await m.react('🗑');
|
||||
}).catch((err) => {
|
||||
ctx.send(`\`Content is over 2,000 characters: react to upload to Hastebin\``).then(async (m) => {
|
||||
client.lastEval = clean(evaled);
|
||||
|
||||
await m.react('📥');
|
||||
await m.react('🗑');
|
||||
});
|
||||
});
|
||||
}
|
||||
} catch(error) {
|
||||
ctx.send(`\`\`\`js\n${clean(error)}\n\`\`\``).then(async (m) => {
|
||||
await m.react('📥');
|
||||
await m.react('🗑');
|
||||
}).catch((err) => {
|
||||
ctx.send(`\`Content is over 2,000 characters: react to upload to Hastebin\``).then(async (m) => {
|
||||
client.lastEval = clean(error);
|
||||
|
||||
await m.react('📥');
|
||||
await m.react('🗑');
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,85 +0,0 @@
|
|||
const Command = require("../../src/structures/Command");
|
||||
|
||||
// {
|
||||
// name: 'Voice Connections',
|
||||
// value: parseInt(ctx.client.voice.connections.size).toLocaleString(),
|
||||
// inline: true
|
||||
// },
|
||||
|
||||
module.exports = class Botinfo extends Command {
|
||||
constructor() {
|
||||
super({
|
||||
name: "botinfo",
|
||||
description:
|
||||
"Bot information and live statistics, such as memory usage and servers.",
|
||||
// aliases: ['stats', 'statistics', 'about'],
|
||||
module: "General",
|
||||
cooldown: 0,
|
||||
guildOnly: false,
|
||||
developerOnly: false
|
||||
});
|
||||
}
|
||||
|
||||
async command(ctx) {
|
||||
usage.lookup(process.pid, options, (err, result) => {
|
||||
if (err)
|
||||
return ctx.send(`There was an error measuring CPU usage.\n\`${err}\``);
|
||||
return ctx.send({
|
||||
embed: {
|
||||
title: `Musik`,
|
||||
description: `Using discord.js **${
|
||||
require("discord.js").version
|
||||
}**, node.js **${process.version.replace(
|
||||
"v",
|
||||
""
|
||||
)}** and Linux **${require("os").release()}**.\nYou are on shard ${ctx
|
||||
.guild.shard.id + 1}/${ctx.client.options.shards.length} in the "${
|
||||
ctx.guild.region
|
||||
}" region.`,
|
||||
fields: [
|
||||
{
|
||||
name: "Servers",
|
||||
value: parseInt(ctx.client.guilds.size).toLocaleString(),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: "Users",
|
||||
value: parseInt(
|
||||
ctx.client.guilds
|
||||
.map(guild => guild.memberCount)
|
||||
.reduce((g1, g2) => g1 + g2)
|
||||
).toLocaleString(),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: "Shards",
|
||||
value: parseInt(
|
||||
ctx.client.options.shards.length
|
||||
).toLocaleString(),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: "Memory Usage",
|
||||
value:
|
||||
result.memory < 1024000000
|
||||
? `${Math.round(result.memory / 1024 / 1024)} MB`
|
||||
: `${(result.memory / 1024 / 1024 / 1024).toFixed(1)} GB`,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: "CPU Usage",
|
||||
value: `${result.cpu.toFixed(1)}%`,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: "Uptime",
|
||||
value: format(ctx.client.uptime / 1000),
|
||||
inline: true
|
||||
}
|
||||
],
|
||||
color: 0xff873f
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
|
@ -1,77 +0,0 @@
|
|||
const Command = require('../../src/structures/Command');
|
||||
const {MessageEmbed} = require('discord.js')
|
||||
|
||||
module.exports = class Help extends Command {
|
||||
constructor() {
|
||||
super({
|
||||
name: 'help',
|
||||
description: 'View a list of available commands, or view information on a specific command.',
|
||||
aliases: ['h'],
|
||||
module: 'General',
|
||||
cooldown: 0,
|
||||
guildOnly: false,
|
||||
developerOnly: false
|
||||
});
|
||||
}
|
||||
|
||||
async command(ctx) {
|
||||
if (!ctx.args.length) {
|
||||
const commands = [
|
||||
['General', ctx.client.commands.filter((command) => command.module == 'General').map((command) => `**${command.name}** - ${command.description}`).join('\n')] ]
|
||||
|
||||
if (ctx.isDeveloper) commands.push(['Developers', ctx.client.commands.filter((command) => command.module == 'Developers').map((command) => command.name).join(', ')]);
|
||||
|
||||
return ctx.send({ embed: {
|
||||
fields: commands.map((group) => {
|
||||
return new Object({
|
||||
name: group[0],
|
||||
value: group[1]
|
||||
});
|
||||
}),
|
||||
color: 0xFF873F
|
||||
} });
|
||||
} else {
|
||||
const command = ctx.client.commands.find(c => c.name == ctx.args[0].toLowerCase() || c.aliases && c.aliases.includes(ctx.args[0].toLowerCase()));
|
||||
|
||||
let fields = [
|
||||
{
|
||||
name: 'Module',
|
||||
value: command.module,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: 'Aliases',
|
||||
value: command.aliases.length == 0 ? 'No aliases' : command.aliases.join(', '),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: 'Cooldown',
|
||||
value: command.cooldown == 0 ? 'No cooldown' : `${command.cooldown}s`,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: 'Server only?',
|
||||
value: command.guildOnly ? 'Yes' : 'No',
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: 'Developers only?',
|
||||
value: command.developerOnly ? 'Yes' : 'No',
|
||||
inline: true
|
||||
},
|
||||
]
|
||||
|
||||
if (!command) return ctx.send(`That command couldn't be found. See the \`help\` command for valid commands.`);
|
||||
|
||||
let embed = new MessageEmbed()
|
||||
.setTitle(command.name)
|
||||
.setDescription(command.description)
|
||||
.setColor(0xFF873F)
|
||||
fields.forEach(i => {
|
||||
embed.addField(i.name, i.value, i.inline)
|
||||
});
|
||||
|
||||
return ctx.send(embed);
|
||||
}
|
||||
}
|
||||
}
|
414
package-lock.json
generated
Normal file → Executable file
414
package-lock.json
generated
Normal file → Executable file
|
@ -26,6 +26,11 @@
|
|||
"negotiator": "0.6.2"
|
||||
}
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
||||
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
|
@ -58,10 +63,22 @@
|
|||
"is-buffer": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"better-sqlite3": {
|
||||
"version": "5.4.3",
|
||||
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-5.4.3.tgz",
|
||||
"integrity": "sha512-fPp+8f363qQIhuhLyjI4bu657J/FfMtgiiHKfaTsj3RWDkHlWC1yT7c6kHZDnBxzQVoAINuzg553qKmZ4F1rEw==",
|
||||
"requires": {
|
||||
"integer": "^2.1.0",
|
||||
"tar": "^4.4.10"
|
||||
}
|
||||
},
|
||||
"bindings": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
|
||||
"integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
|
||||
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
|
||||
"requires": {
|
||||
"file-uri-to-path": "1.0.0"
|
||||
}
|
||||
},
|
||||
"body-parser": {
|
||||
"version": "1.19.0",
|
||||
|
@ -92,6 +109,16 @@
|
|||
"resolved": "https://registry.npmjs.org/bowser/-/bowser-2.7.0.tgz",
|
||||
"integrity": "sha512-aIlMvstvu8x+34KEiOHD3AsBgdrzg6sxALYiukOWhFvGMbQI6TRP/iY0LMhUrHs56aD6P1G0Z7h45PUJaa5m9w=="
|
||||
},
|
||||
"bson": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmjs.org/bson/-/bson-1.0.9.tgz",
|
||||
"integrity": "sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg=="
|
||||
},
|
||||
"buffer-shims": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
|
||||
"integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
|
||||
},
|
||||
"bytes": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
|
||||
|
@ -117,6 +144,29 @@
|
|||
"supports-color": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"chownr": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz",
|
||||
"integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw=="
|
||||
},
|
||||
"cli-cursor": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
||||
"integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
|
||||
"requires": {
|
||||
"restore-cursor": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"cli-spinners": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz",
|
||||
"integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ=="
|
||||
},
|
||||
"clone": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
||||
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
|
@ -188,6 +238,11 @@
|
|||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"cors": {
|
||||
"version": "2.8.5",
|
||||
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
||||
|
@ -210,6 +265,14 @@
|
|||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"defaults": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
|
||||
"integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
|
||||
"requires": {
|
||||
"clone": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
|
@ -250,6 +313,11 @@
|
|||
"resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.1.0.tgz",
|
||||
"integrity": "sha512-ZjI4zqTaxveH2/tTlzS1wFp+7ncxNZaIEWYg3lzZRHkKf5zPT/MnEG6WL0BhHMJUabkh8GeU5NL5j+rEUCb7Ug=="
|
||||
},
|
||||
"each-series": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/each-series/-/each-series-1.0.0.tgz",
|
||||
"integrity": "sha1-+Ibmxm39sl7x/nNWQUbuXLR4r8s="
|
||||
},
|
||||
"ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
|
@ -261,9 +329,13 @@
|
|||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
|
||||
},
|
||||
"endb": {
|
||||
"version": "0.16.1",
|
||||
"resolved": "https://registry.npmjs.org/endb/-/endb-0.16.1.tgz",
|
||||
"integrity": "sha512-R0UT6TtYWWhHrS3hNDzPvjdBoAuU/y2v9BCrAUsEcXjeYg9rXeIUIlzAbJtELgzlAB2ECob7MFIFKCmnBNvz9Q=="
|
||||
"version": "github:chroventer/endb#f58be3e9830157664ea34f0d548a544353f0254a",
|
||||
"from": "github:chroventer/endb"
|
||||
},
|
||||
"es6-promise": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz",
|
||||
"integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q="
|
||||
},
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
|
@ -332,6 +404,11 @@
|
|||
"resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.3.0.tgz",
|
||||
"integrity": "sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ=="
|
||||
},
|
||||
"file-uri-to-path": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
|
||||
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
|
||||
},
|
||||
"finalhandler": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
|
||||
|
@ -389,6 +466,14 @@
|
|||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
|
||||
},
|
||||
"fs-minipass": {
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
|
||||
"integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
|
||||
"requires": {
|
||||
"minipass": "^2.6.0"
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
|
@ -494,6 +579,11 @@
|
|||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"integer": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/integer/-/integer-2.1.0.tgz",
|
||||
"integrity": "sha512-vBtiSgrEiNocWvvZX1RVfeOKa2mCHLZQ2p9nkQkQZ/BvEiY+6CcUz0eyjvIiewjJoeNidzg2I+tpPJvpyspL1w=="
|
||||
},
|
||||
"ipaddr.js": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
|
||||
|
@ -504,6 +594,44 @@
|
|||
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
|
||||
"integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
|
||||
},
|
||||
"is-interactive": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
|
||||
"integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
},
|
||||
"lodash.get": {
|
||||
"version": "4.4.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
|
||||
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
|
||||
},
|
||||
"lodash.set": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
|
||||
"integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM="
|
||||
},
|
||||
"lodash.toarray": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
|
||||
"integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE="
|
||||
},
|
||||
"lodash.unset": {
|
||||
"version": "4.5.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.unset/-/lodash.unset-4.5.2.tgz",
|
||||
"integrity": "sha1-Nw0dPoW3Kn4bDN8tJyEhMG8j5O0="
|
||||
},
|
||||
"log-symbols": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
|
||||
"integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
|
||||
"requires": {
|
||||
"chalk": "^2.4.2"
|
||||
}
|
||||
},
|
||||
"media-typer": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||
|
@ -537,11 +665,96 @@
|
|||
"mime-db": "1.40.0"
|
||||
}
|
||||
},
|
||||
"mimic-fn": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
|
||||
},
|
||||
"minipass": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
|
||||
"integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.2",
|
||||
"yallist": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"minizlib": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
|
||||
"integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
|
||||
"requires": {
|
||||
"minipass": "^2.9.0"
|
||||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
}
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.24.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
|
||||
"integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
|
||||
},
|
||||
"mongodb": {
|
||||
"version": "2.2.36",
|
||||
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.36.tgz",
|
||||
"integrity": "sha512-P2SBLQ8Z0PVx71ngoXwo12+FiSfbNfGOClAao03/bant5DgLNkOPAck5IaJcEk4gKlQhDEURzfR3xuBG1/B+IA==",
|
||||
"requires": {
|
||||
"es6-promise": "3.2.1",
|
||||
"mongodb-core": "2.1.20",
|
||||
"readable-stream": "2.2.7"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "2.2.7",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz",
|
||||
"integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=",
|
||||
"requires": {
|
||||
"buffer-shims": "~1.0.0",
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
"isarray": "~1.0.0",
|
||||
"process-nextick-args": "~1.0.6",
|
||||
"string_decoder": "~1.0.0",
|
||||
"util-deprecate": "~1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mongodb-core": {
|
||||
"version": "2.1.20",
|
||||
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.20.tgz",
|
||||
"integrity": "sha512-IN57CX5/Q1bhDq6ShAR6gIv4koFsZP7L8WOK1S0lR0pVDQaScffSMV5jxubLsmZ7J+UdqmykKw4r9hG3XQEGgQ==",
|
||||
"requires": {
|
||||
"bson": "~1.0.4",
|
||||
"require_optional": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"mongojs": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mongojs/-/mongojs-2.6.0.tgz",
|
||||
"integrity": "sha512-r6tj71DjYcaRTi2jpa+CA6Iq72cTZclB2JKy+Zub+0JPTEq/l2plsAYfF2eHqSYBtZbKNcObvhGYk9E9UKZWJg==",
|
||||
"requires": {
|
||||
"each-series": "^1.0.0",
|
||||
"mongodb": "^2.2.31",
|
||||
"once": "^1.4.0",
|
||||
"parse-mongo-url": "^1.1.1",
|
||||
"readable-stream": "^2.3.3",
|
||||
"thunky": "^1.0.2",
|
||||
"to-mongodb-core": "^2.0.0",
|
||||
"xtend": "^4.0.1"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
|
@ -562,6 +775,14 @@
|
|||
"resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz",
|
||||
"integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q=="
|
||||
},
|
||||
"node-emoji": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz",
|
||||
"integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==",
|
||||
"requires": {
|
||||
"lodash.toarray": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
|
||||
|
@ -585,11 +806,46 @@
|
|||
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
|
||||
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"onetime": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
|
||||
"integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
|
||||
"requires": {
|
||||
"mimic-fn": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"ora": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz",
|
||||
"integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==",
|
||||
"requires": {
|
||||
"chalk": "^2.4.2",
|
||||
"cli-cursor": "^3.1.0",
|
||||
"cli-spinners": "^2.2.0",
|
||||
"is-interactive": "^1.0.0",
|
||||
"log-symbols": "^3.0.0",
|
||||
"strip-ansi": "^5.2.0",
|
||||
"wcwidth": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"pako": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
|
||||
"integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw=="
|
||||
},
|
||||
"parse-mongo-url": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/parse-mongo-url/-/parse-mongo-url-1.1.1.tgz",
|
||||
"integrity": "sha1-ZiON9fjnwMjKTNlw1KtqE3PrdbU="
|
||||
},
|
||||
"parseurl": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
|
||||
|
@ -613,6 +869,11 @@
|
|||
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.1.0.tgz",
|
||||
"integrity": "sha512-W+oxjRyjtd7hw3pefNZuc7YEZ6VICORJvVNfCPs0+7CsJ43CqMjGAYGjPL3hQ82vw03EVra+CiX4zisqOBUUGw=="
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
|
||||
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
|
||||
|
@ -627,6 +888,17 @@
|
|||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
|
||||
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
|
||||
},
|
||||
"quick.db": {
|
||||
"version": "7.0.0-b22",
|
||||
"resolved": "https://registry.npmjs.org/quick.db/-/quick.db-7.0.0-b22.tgz",
|
||||
"integrity": "sha512-Qi3Mx2ho1M0rWzVwrjh5zqmlNVTLqO6WgaI1suZ4qOxhjD3CFcH2nvOnL7o3kan5C0taCrs9/n4EIvq6CgpCaQ==",
|
||||
"requires": {
|
||||
"better-sqlite3": "^5.0.1",
|
||||
"lodash.get": "^4.4.2",
|
||||
"lodash.set": "^4.3.2",
|
||||
"lodash.unset": "^4.5.2"
|
||||
}
|
||||
},
|
||||
"range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
|
@ -650,11 +922,63 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.3",
|
||||
"isarray": "~1.0.0",
|
||||
"process-nextick-args": "~2.0.0",
|
||||
"safe-buffer": "~5.1.1",
|
||||
"string_decoder": "~1.1.1",
|
||||
"util-deprecate": "~1.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||
"requires": {
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"referrer-policy": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.2.0.tgz",
|
||||
"integrity": "sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA=="
|
||||
},
|
||||
"require_optional": {
|
||||
"version": "1.0.1",
|
||||
|