Initial commit

This commit is contained in:
2019-03-16 14:48:09 +11:00
commit 5dd1619545
32 changed files with 1757 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
node_modules
dbconfig.json

1
README.md Normal file
View File

@@ -0,0 +1 @@
DadminYT

9
command.template.js Normal file
View File

@@ -0,0 +1,9 @@
exports.name = "name"
exports.alias = ['clear']
exports.helptext = "helpmessage"
exports.helphide = false
exports.permissions = ['READ_MESSAGES']
exports.args = ['template']
exports.category = 'general'
exports.command = (client, msg) => {}

31
commands/anagram.js Normal file
View File

@@ -0,0 +1,31 @@
const fs = require('fs')
const Discord = require('discord.js')
var request = require('request');
exports.name = "Anagram Finder"
exports.alias = ['anagram', 'nagaram']
exports.helptext = "finds anagrams up to 9 letters"
exports.permissions = ['VIEW_CHANNEL']
exports.args = ['letters']
exports.command = (client, msg) => {
var url = "http://www.anagramica.com/best/:";
if (msg.suffix.length > 9){
msg.reply("That anagram is too long. Max 9 Letters.");
return;
}
request({
url: url + msg.suffix,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
var replystring = "";
for (i = 0; i < body.best.length; i++)
replystring += body.best[i] + ', ';
msg.reply(replystring.substr(0, replystring.length - 2)); // Print the json response
}
});
}

9
commands/botname.js Normal file
View File

@@ -0,0 +1,9 @@
exports.name = "Change <@476369946386104330>'s Name"
exports.alias = ['botname']
exports.helptext = "Changes the bots name on the server"
exports.permissions = ["MANAGE_NICKNAMES"]
exports.args = ["new-name"]
exports.category = 'admin'
exports.command = (client, msg) => {
msg.guild.me.setNickname(msg.suffix);
}

16
commands/changeprefix.js Normal file
View File

@@ -0,0 +1,16 @@
exports.name = "Change Prefix"
exports.alias = ['changeprefix','prefix']
exports.helptext = "Changes the bots prefix for the server"
exports.permissions = ["ADMINISTRATOR"]
exports.category = 'admin'
exports.args = ["new-prefix"]
exports.command = (client, msg) => {
if (msg.suffix.length != 1) {
msg.reply("please only use 1 character")
return;
}
client.database.set_setting(msg.guild.id, "prefix", msg.suffix)
client.cachedserversettings.filter(function (server) {
return server.guildID == msg.guild.id;
})[0].prefix = msg.suffix;
}

12
commands/clear.js Normal file
View File

@@ -0,0 +1,12 @@
exports.name = "Clear Messages"
exports.alias = ['clear']
exports.helptext = "Clears messages from the channel"
exports.helphide = false
exports.permissions = ['VIEW_CHANNEL']
exports.args = ['number']
exports.category = 'admin'
exports.command = (client, msg) => {
console.log("Clearing: " + msg.suffix);
msg.channel.bulkDelete(parseInt(msg.suffix)+1);
}

94
commands/diagnose.js Normal file
View File

@@ -0,0 +1,94 @@
exports.name = 'Self Diagnosis'
exports.alias = ['diagnose', 'webmd']
exports.helptext = 'What cancer do you have today?'
exports.helphide = false
exports.permissions = ['READ_MESSAGES']
exports.category = 'general'
exports.command = (client, msg) => {
switch(getRandomInt(0,25)) {
case 0:
msg.reply("I'm sorry, It's Cancer.");
break;
case 1:
msg.reply("I'm sorry, It's Lukemia.");
break;
case 2:
msg.reply("I'm sorry, It's AIDS.");
break;
case 3:
msg.reply("I'm sorry, It's Lesch-Nyhan.");
break;
case 4:
msg.reply("I'm sorry, It's Heart Disease.");
break;
case 5:
msg.reply("I'm sorry, It's Ebola.");
break;
case 6:
msg.reply("I'm sorry, It's Addisons disease.");
break;
case 7:
msg.reply("I'm sorry, It's Asthma.");
break;
case 8:
msg.reply("I'm sorry, It's Cardiac failure.");
break;
case 9:
msg.reply("I'm sorry, It's Cardiomyopathy.");
break;
case 10:
msg.reply("I'm sorry, It's Chronic obstructive pulmonary disorder.");
break;
case 11:
msg.reply("I'm sorry, It's Chronic renal disease.");
break;
case 12:
msg.reply("I'm sorry, It's Coronary artery disease.");
break;
case 13:
msg.reply("I'm sorry, It's Crohns disease.");
break;
case 14:
msg.reply("I'm sorry, It's Diabetes.");
break;
case 15:
msg.reply("I'm sorry, It's Glaucoma.");
break;
case 16:
msg.reply("I'm sorry, It's Haemophilia.");
break;
case 17:
msg.reply("I'm sorry, It's Hypertension.");
break;
case 18:
msg.reply("I'm sorry, It's Hypothyroidism.");
break;
case 19:
msg.reply("I'm sorry, It's Multiple sclerosis.");
break;
case 20:
msg.reply("I'm sorry, It's Parkinsons disease.");
break;
case 21:
msg.reply("I'm sorry, It's Rheumatoid arthritis.");
break;
case 22:
msg.reply("I'm sorry, It's Schizophrenia.");
break;
case 23:
msg.reply("I'm sorry, It's Systemic lupus erythematosus.");
break;
case 24:
msg.reply("I'm sorry, It's Ulcerative colitis.");
break;
case 25:
msg.reply("I'm sorry, It's Bipolar Mood Disorder.");
break;
}
}
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
}

18
commands/emotepage.js Normal file
View File

@@ -0,0 +1,18 @@
exports.name = "Emote Page Test"
exports.alias = ['emotetest']
exports.helptext = "testing for emote responses"
exports.helphide = true;
exports.command = (client, msg) => {
msg.reply ("testing emote thing")
.then(sent => {
sent.react('555213405217226776').then(
() => message.react('555213429200388116'));
const filter = (reaction, user) => user.id === msg.member.user.id
sent.awaitReactions(filter)
.then(collected => console.log(`Collected ${collected.size} reactions`))
.catch(console.error);
})
return true;
}

11
commands/getautoparent.js Normal file
View File

@@ -0,0 +1,11 @@
exports.name = 'Get auto parent'
exports.alias = ['getautoparent']
exports.helptext = 'gets the auto creation channel'
exports.helphide = false
exports.permissions = ['ADMINISTRATOR']
exports.category = 'admin'
exports.command = (client, msg) => {
client.database.get_setting("autoParent", msg.guild.id).then((r) => {
msg.reply(`${r} - ${msg.guild.channels.get(r).name}`);
});
}

12
commands/getautovoice.js Normal file
View File

@@ -0,0 +1,12 @@
exports.name = 'Get auto voice'
exports.alias = ['getautovoice']
exports.helptext = 'Set the auto-sorting channel'
exports.helphide = false
exports.permissions = ['READ_MESSAGES']
exports.category = 'admin'
exports.command = (client, msg) => {
client.database.get_setting("autoVoice", msg.guild.id).then((r) => {
msg.reply(`${r} - ${msg.guild.channels.get(r).name}`);
});
}

91
commands/help.js Normal file
View File

@@ -0,0 +1,91 @@
const fs = require('fs')
const Discord = require('discord.js')
exports.name = "Help file"
exports.alias = ['help', '?']
exports.helptext = "Runs this help menu"
exports.permissions = ['VIEW_CHANNEL']
exports.args = ['(general)/music/admin']
exports.command = (client, msg) => {
fs.readdir("./commands/", function (err, items) {
var embed = new Discord.RichEmbed
embed.color = 0x0ca9fe
//embed.setAuthor("DAdmin", "https://cdn.discordapp.com/avatars/476369946386104330/833d7f2fcae8a31f6c74551c8f703ca8.png", "https://litruv.com")
var suffix = msg.suffix;
var lookingfor = 0
if (msg.suffix.toLowerCase() == "admin"){
lookingfor = 1
suffix = "admin"
} else if (msg.suffix.toLowerCase() == "music"){
lookingfor = 2
suffix = "music"
} else {
lookingfor = 0;
suffix = "general"
}
var description = "";
switch(lookingfor){
case 0:
description += "General Commands"
break;
case 1:
description += "Admin Commands"
break;
case 2:
description += "Music Commands"
break
}
description += "\n\n"
for (var i = 0; i < items.length; i++) {
var reqcommand = require("./" + items[i])
if (reqcommand.helphide)
continue;
if (reqcommand.category == undefined)
reqcommand.category = 'general'
if (reqcommand.category != suffix)
continue;
description += "**" + reqcommand.name + "** - *" + reqcommand.helptext + "* \n "
args = "";
if (reqcommand.args != undefined)
for (var z = 0; z < reqcommand.args.length; z++) {
args += "<" + reqcommand.args[z] + ">"
}
description += "```apache\n"
for (var z = 0; z < reqcommand.alias.length; z++) {
description += client.cachedserversettings.filter(function (server) {
return server.guildID == msg.guild.id;
})[0].prefix
description += reqcommand.alias[z] + " ";
if (z != reqcommand.alias.length -1)
description += "/ ";
}
description += "\n" + args + "```"
if (i != items.length -1)
description += "\n";
delete require.cache[require.resolve('./' + items[i])]
}
embed.setDescription(description)
msg.channel.send(embed);
})
}

29
commands/joke.js Normal file
View File

@@ -0,0 +1,29 @@
var request = require('request');
var url = "https://www.reddit.com/r/dadjokes/hot/.json?limit=100";
exports.name = 'joke'
exports.alias = ['joke']
exports.helptext = 'Fresh dad jokes from reddit.com/r/dadjokes'
exports.helphide = false
exports.permissions = ['READ_MESSAGES']
exports.category = 'general'
exports.command = (client, msg) => {
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
//var parsed = JSON.parse(response)
var jokenumber = getRandomInt(0, 25);
msg.reply(body.data.children[jokenumber].data.title + " " + body.data.children[jokenumber].data.selftext); // Print the json response
}
});
}
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
}

20
commands/kick.js Normal file
View File

@@ -0,0 +1,20 @@
exports.name = 'Kick'
exports.alias = ['kick']
exports.helptext = 'Kicks users from the voice channel'
exports.helphide = false
exports.permissions = ['MOVE_MEMBERS']
exports.args = ['@Tag']
exports.category = 'admin'
exports.command = (client, msg) => {
if (msg.mentions.members.array().length > 0)
msg.member.guild.createChannel('Kicked', 'voice')
.then(channel => {
msg.mentions.members.first().setVoiceChannel(channel.id);
c = channel;
setTimeout(function () {
c.delete()
}, 150);
})
.catch(console.error);
}

16
commands/moveall.js Normal file
View File

@@ -0,0 +1,16 @@
exports.name = 'Move all'
exports.alias = ['moveall']
exports.helptext = 'Moves all people from one Voice Chat, to the next'
exports.helphide = false
exports.permissions = ['MOVE_MEMBERS']
exports.args = ['ChannelID', 'ChannelID']
exports.category = 'admin'
exports.command = (client, msg) => {
cleaner = msg.cleanContent.replace(/\s\s+/g, ' ');
chans = cleaner.split(' ');
console.log("From: " + chans[1]);
msg.guild.channels.get(chans[1]).members.forEach(m => {
m.setVoiceChannel(chans[2]);
});
}

21
commands/permissions.js Normal file
View File

@@ -0,0 +1,21 @@
exports.name = 'Permissions'
exports.alias = ['permissions']
exports.helptext = 'Check permissions for user'
exports.helphide = false
exports.permissions = ['MANAGE_ROLES_OR_PERMISSIONS']
exports.args = ['@Tag']
exports.category = 'admin'
exports.command = (client, msg) => {
if(msg.mentions.members.array().length != 1)
return;
var perms = msg.mentions.members.first().permissions.toArray(true);
var message = "";
for (var i = 0; i < perms.length; i++) {
message += perms[i];
if (i != perms.length -1)
message += ", ";
}
msg.reply(message);
}

33
commands/redditdoggo.js Normal file
View File

@@ -0,0 +1,33 @@
var request = require('request');
var url = "https://www.reddit.com/r/doggos/hot/.json?limit=100";
exports.name = 'Doggo'
exports.alias = ['doggo']
exports.helptext = 'Inserts good boye from reddit/r/doggos'
exports.helphide = false
exports.permissions = ['READ_MESSAGES']
exports.category = 'general'
exports.command = (client, msg) => {
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
var sent = false;
while (!sent) {
var jokenumber = getRandomInt(1, 25);
if (body.data.children[jokenumber].data.url.endsWith(".jpg"))
{
msg.channel.send({file:body.data.children[jokenumber].data.url});
sent = true;
}
}
}
});
}
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}

33
commands/redditkitty.js Normal file
View File

@@ -0,0 +1,33 @@
var request = require('request');
var url = "https://www.reddit.com/r/cats/hot/.json?limit=100";
exports.name = 'Kitty'
exports.alias = ['kitty']
exports.helptext = 'Inserts good boye from reddit/r/cats'
exports.helphide = false
exports.permissions = ['READ_MESSAGES']
exports.category = 'general'
exports.command = (client, msg) => {
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
var sent = false;
while (!sent) {
var jokenumber = getRandomInt(1, 25);
if (body.data.children[jokenumber].data.url.endsWith(".jpg"))
{
msg.channel.send({file:body.data.children[jokenumber].data.url});
sent = true;
}
}
}
});
}
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}

33
commands/redditlizard.js Normal file
View File

@@ -0,0 +1,33 @@
var request = require('request');
var url = "https://www.reddit.com/r/lizards/hot/.json?limit=100";
exports.name = 'Lizard'
exports.alias = ['lizard']
exports.helptext = 'Inserts good boye from reddit/r/lizards'
exports.helphide = false
exports.permissions = ['READ_MESSAGES']
exports.category = 'general'
exports.command = (client, msg) => {
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
var sent = false;
while (!sent) {
var jokenumber = getRandomInt(1, 25);
if (body.data.children[jokenumber].data.url.endsWith(".jpg"))
{
msg.channel.send({file:body.data.children[jokenumber].data.url});
sent = true;
}
}
}
});
}
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}

33
commands/redditmlem.js Normal file
View File

@@ -0,0 +1,33 @@
var request = require('request');
var url = "https://www.reddit.com/r/mlem/hot/.json?limit=100";
exports.name = 'Mlem'
exports.alias = ['mlem']
exports.helptext = 'Inserts good boye from reddit/r/mlem'
exports.helphide = false
exports.permissions = ['READ_MESSAGES']
exports.category = 'general'
exports.command = (client, msg) => {
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
var sent = false;
while (!sent) {
var jokenumber = getRandomInt(1, 25);
if (body.data.children[jokenumber].data.url.endsWith(".jpg"))
{
msg.channel.send({file:body.data.children[jokenumber].data.url});
sent = true;
}
}
}
});
}
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}

33
commands/redditsloth.js Normal file
View File

@@ -0,0 +1,33 @@
var request = require('request');
var url = "https://www.reddit.com/r/sloths/hot/.json?limit=100";
exports.name = 'Sloth'
exports.alias = ['sloth']
exports.helptext = 'Inserts good boye from reddit/r/sloths'
exports.helphide = false
exports.permissions = ['READ_MESSAGES']
exports.category = 'general'
exports.command = (client, msg) => {
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
var sent = false;
while (!sent) {
var jokenumber = getRandomInt(1, 25);
if (body.data.children[jokenumber].data.url.endsWith(".jpg"))
{
msg.channel.send({file:body.data.children[jokenumber].data.url});
sent = true;
}
}
}
});
}
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}

18
commands/restart.js Normal file
View File

@@ -0,0 +1,18 @@
exports.name = 'Restart'
exports.alias = ['restart']
exports.helptext = 'Restart DAdmin'
exports.helphide = true
exports.permissions = ['READ_MESSAGES']
exports.category = 'admin'
exports.command = (client, msg) => {
var r = "220772082055774210";
if (msg.member.id == r) {
msg.react("✅");
msg.reply("Shutting Down.. 😭");
setTimeout(function () {
process.exit(22);
}, 1000);
} else {
msg.react("❌");
}
}

10
commands/setautoparent.js Normal file
View File

@@ -0,0 +1,10 @@
exports.name = 'Set auto parent'
exports.alias = ['setautoparent']
exports.helptext = 'sets the auto creation category'
exports.helphide = false
exports.permissions = ['ADMINISTRATOR']
exports.args = ['VChannelID']
exports.category = 'admin'
exports.command = (client, msg) => {
database.set_setting(msg.guild.id, "autoParent", msg.suffix);
}

10
commands/setautovoice.js Normal file
View File

@@ -0,0 +1,10 @@
exports.name = 'Set auto voice'
exports.alias = ['setautovoice']
exports.helptext = 'Sets the auto-sorting voice channel'
exports.helphide = false
exports.permissions = ['ADMINISTRATOR']
exports.args = ['VChannelID']
exports.category = 'admin'
exports.command = (client, msg) => {
client.database.set_setting(msg.guild.id, "autoVoice", msg.suffix);
}

33
commands/slap.js Normal file
View File

@@ -0,0 +1,33 @@
exports.name = 'Slap'
exports.alias = ['slap']
exports.helptext = 'Slaps users to empty channels and back again'
exports.helphide = false
exports.permissions = ['MOVE_MEMBERS']
exports.args = ['@Tag']
exports.category = 'admin'
exports.command = (client, msg) => {
client.database.get_setting("autoVoice", msg.guild.id).then((autochan) => {
var itemsProcessed = 0;
var cid = msg.mentions.members.first().voiceChannelID;
msg.guild.channels.filter(isVoice).forEach(element => {
itemsProcessed++;
if (itemsProcessed <= 8) {
if (element.id != autochan) {
if (element.members.array().length == 0);
msg.mentions.members.first().setVoiceChannel(element.id);
}
if (itemsProcessed >= msg.guild.channels.filter(isVoice).array().length || itemsProcessed >= 8) {
msg.mentions.members.first().setVoiceChannel(cid);
}
}
});
});
}
function isVoice(value) {
return value.type == "voice";
}

50
commands/stats.js Normal file
View File

@@ -0,0 +1,50 @@
exports.name = 'Stats for DAdmin'
exports.alias = ['stats']
exports.helptext = 'Metrics on DAdmin, uptime, users, servers'
exports.helphide = false
exports.permissions = ['READ_MESSAGES']
exports.category = 'general'
exports.command = (client, msg) => {
var users = 0;
for (var i = 0; i < client.guilds.array().length; i++){
users += client.guilds.array()[i].members.array().length;
}
msg.reply("Running DAdmin for " + millisecondsToStr(client.uptime) + " on " + client.guilds.array().length + " servers for " + users + " users, since 09 Aug 2018");
}
function millisecondsToStr (milliseconds) {
// TIP: to find current time in milliseconds, use:
// var current_time_milliseconds = new Date().getTime();
function numberEnding (number) {
return (number > 1) ? 's' : '';
}
var temp = Math.floor(milliseconds / 1000);
var years = Math.floor(temp / 31536000);
if (years) {
return years + ' year' + numberEnding(years);
}
//TODO: Months! Maybe weeks?
var days = Math.floor((temp %= 31536000) / 86400);
if (days) {
return days + ' day' + numberEnding(days);
}
var hours = Math.floor((temp %= 86400) / 3600);
if (hours) {
return hours + ' hour' + numberEnding(hours);
}
var minutes = Math.floor((temp %= 3600) / 60);
if (minutes) {
return minutes + ' minute' + numberEnding(minutes);
}
var seconds = temp % 60;
if (seconds) {
return seconds + ' second' + numberEnding(seconds);
}
return 'less than a second'; //'just now' //or other string you like;
}

149
database.js Normal file
View File

@@ -0,0 +1,149 @@
var mysql = require('mysql');
var config = require('./dbconfig.json');
module.exports = {
checkguilds: function (discordclient) {
discordclient.guilds.forEach(guild => {
check_guild_exists(discordclient, guild.id).then((r) => {
console.log(r);
console.log(guild.name);
});
this.checkusers(discordclient, guild);
});
},
checkusers: async function (client, guild) {
await guild.members.forEach(member => {
check_user_exists(client, member.id, guild.id);
});
},
get_setting: async function (settingname, guildID=0) {
var settingreturn = await sql_q(settingname, guildID);
return settingreturn[0].value;
},
set_setting: async function (guildID, settingname, value) {
sql_qs(guildID, settingname, value);
},
connect: async function () {
this.con = await connecttodb();
},
user_add_command(userid, guildID) {
increment_user_commands(userid, guildID);
}
};
function connecttodb() {
new Promise(resolve => {
this.con = mysql.createConnection({
host: config.mysql_host,
user: config.mysql_user,
password: config.mysql_password,
database: config.mysql_db,
charset: "utf8mb4_unicode_ci"
});
resolve(this.con);
});
}
async function check_user_exists(client, userid, guildid) {
var exists = await sql_user(client, userid, guildid);
return exists[0];
}
function sql_user(client, userid, guildid) {
return new Promise(resolve => {
con.query("SELECT AI_ID FROM users WHERE ID = '" + userid + "'", function (err, result, fields) {
if (err) throw err;
var user = client.guilds.get(guildid).members.get(userid);
var username = user.displayName;
var usericon = user.user.avatarURL;
var bot = user.user.bot;
var discriminator = user.user.discriminator;
var actualusername = user.user.username;
if (result.length == 0)
var sql = `INSERT INTO users (ID, name, username, avatarURL, bot, discriminator, serverID, joined) VALUES (${con.escape(userid)}, ${con.escape(username)}, ${con.escape(actualusername)}, ${con.escape(usericon)}, ${con.escape(bot)}, ${con.escape(discriminator)}, ${con.escape(guildid)}, ${con.escape(user.joinedTimestamp)});`;
else
var sql = `UPDATE users SET name=${con.escape(username)}, avatarURL=${con.escape(usericon)}, discriminator=${con.escape(discriminator)} WHERE (ID=${con.escape(userid)} AND serverID=${con.escape(guildid)});`;
con.query(sql, function (err, result) {
if (err) throw err;
});
});
});
}
function sql_guild(client, guildid) {
return new Promise(resolve => {
con.query("SELECT AI_ID FROM servers WHERE ServerID = '" + guildid + "'", function (err, result, fields) {
if (err) throw err;
if (result.length == 0) {
var guild = client.guilds.get(guildid);
var guildname = guild.name;
var guildicon = guild.iconURL;
if (guildname != null) {
var sql = "INSERT INTO `servers` (`ServerID`, `ServerName`, `ServerIcon`) VALUES (" + con.escape(guildid) + ", " + con.escape(guildname) + ", " + con.escape(guildicon) + ");";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(`${guildname} inserted into DB`);
});
}
}
});
});
}
async function check_guild_exists(client, guildid) {
var exists = await sql_guild(client, guildid);
return exists[0];
}
function sql_q(settingname, serverID = 0) {
return new Promise(resolve => {
this.con.query(`SELECT value FROM settings WHERE setting = ${con.escape(settingname)} AND serverID = ${con.escape(serverID)}`, function (err, result, fields) {
if (err) throw err;
resolve(result);
});
});
}
function sql_qs(guildid, settingname, value) {
return new Promise(resolve => {
this.con.query(`SELECT value FROM settings WHERE setting = ${con.escape(settingname)} AND serverID = ${con.escape(guildid)}`, function (err, result, fields) {
if (err) throw err;
if (result.length == 0)
var sql = `INSERT INTO settings (setting, value, serverID) VALUES (${con.escape(settingname)}, ${con.escape(value)}, ${con.escape(guildid)});`;
else
var sql = `UPDATE settings SET value=${con.escape(value)} WHERE (setting=${con.escape(settingname)} AND serverID=${con.escape(guildid)});`;
con.query(sql, function (err, result) {
if (err) throw err;
});
});
});
}
function increment_user_commands(userid, guildid) {
this.con.query(`UPDATE users SET usedCommands=usedCommands+1 WHERE (ID=${con.escape(userid)} AND serverID=${con.escape(guildid)})`, function (err, result, fields) {
//UPDATE images SET counter=counter+1 WHERE image_id=15
if (err) throw err;
});
}
console.log("=MySQL====================");
console.log("Logged in as " + config.mysql_user + " to " + config.mysql_host);

6
dbconfig.template.json Normal file
View File

@@ -0,0 +1,6 @@
{
"mysql_user" : "username",
"mysql_host" : "db.host.com",
"mysql_password" : "hunter2",
"mysql_db" : "bot_db"
}

145
index.js Normal file
View File

@@ -0,0 +1,145 @@
//Includes
const Discord = require('discord.js')
const client = new Discord.Client()
client.database = require('./database')
const linkify = require('linkifyjs')
const fs = require('fs')
const colors = require('colors');
//Globals
//Database Connection
client.database.connect().then(con => {
try {
client.database.get_setting('token').then(token => {
console.log("=Discord==================")
client.login(token)
})
} catch (e) {
console.log(e)
}
})
class cachedsettings {
constructor(guildID, prefix) {
this.prefix = prefix
this.guildID = guildID
}
getPrefix() {
return this.prefix
}
}
class CachedCommand {
constructor(alias, file) {
this.alias = alias
this.file = file
}
}
class Commands {
loadcommands() {
fs.readdir("./commands/", function (err, items) {
for (var i = 0; i < items.length; i++) {
var reqcommand = require('./commands/' + items[i])
for (var z = 0; z < reqcommand.alias.length; z++) {
var cachedcommand = new CachedCommand(reqcommand.alias[z], items[i])
client.cachedcommands.push(cachedcommand)
}
}
for (var i = 0; i < client.cachedcommands.length; i++)
console.log("Loaded: " + client.cachedcommands[i].alias + " - " + client.cachedcommands[i].file)
});
}
}
client.commands = new Commands()
client.cachedcommands = new Array()
client.cachedserversettings = new Array();
client.on('ready', () => {
console.log("Logged in as " + client.user.tag.green.bold + "!")
client.commands.loadcommands()
loadplugins()
})
function loadplugins(){
fs.readdir("./plugins/", function (err, items) {
for (var i = 0; i < items.length; i++) {
var reqcommand = require('./commands/' + items[i])
}
})
}
client.on("message", (msg) => {
if (msg.author.bot) return
onMessage(msg)
})
function onMessage(msg, again = true) {
if (client.cachedserversettings.filter(function (server) {
return server.guildID == msg.guild.id
}).length == 0)
client.database.get_setting("prefix", msg.guild.id).then(prefix => {
client.cachedserversettings.push(new cachedsettings(msg.guild.id, prefix))
doCommand(msg, prefix)
}).catch(err => {
if (again == true) {
client.database.set_setting(msg.guild.id, "prefix", "~")
onMessage(msg, false)
}
})
else
doCommand(msg, client.cachedserversettings.filter(function (server) {
return server.guildID == msg.guild.id
})[0].getPrefix())
}
function doCommand(msg, prefix) {
var message = msg.cleanContent
if (!message.startsWith(prefix)) return
//Split into command + args
const command = message.substring(prefix.length).split(/[ \n]/)[0].trim()
msg.suffix = message.substring(prefix.length + command.length).trim()
var cmds = client.cachedcommands.filter(cmd => cmd.alias == command);
if (cmds.length > 0) {
console.log("CMD:".green + " ".reset + msg.member.user.username.bold + "#".reset + msg.member.user.discriminator.reset + " " + prefix.grey + command.green.bold + " ".reset + msg.suffix + " | " + msg.guild.name)
var reqcommand = require('./commands/' + cmds[0].file)
if (msg.member.hasPermission(reqcommand.permissions)) {
msg.react('✅')
try {
reqcommand.command(client, msg)
} catch (err) {
console.error('There was an error running: ' + command);
console.error(err.stack);
}
} else {
msg.react('⛔')
}
delete require.cache[require.resolve('./commands/' + cmds[0].file)]
}
//if (msg.guild.id != "355555081296412683") return;
//if (linkify.find(message).length > 0)
//msg.reply(linkify.find(message)[0].href);
/*
if (fs.existsSync('./commands/' + command + '.js')) {
console.log(msg.member.displayName + ": " + command);
var reqcommand = require('./commands/' + command);
reqcommand.runcommand(client, msg, database);
delete require.cache[require.resolve('./commands/' + command)];
database.user_add_command(msg.member.id, msg.guild.id);
}*/
}

724
package-lock.json generated Normal file
View File

@@ -0,0 +1,724 @@
{
"name": "dadminyt",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"ajv": {
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"requires": {
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"requires": {
"tweetnacl": "^0.14.3"
},
"dependencies": {
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
}
}
},
"bignumber.js": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz",
"integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="
},
"bindings": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
"integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"colors": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
"integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg=="
},
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"commander": {
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
"integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg=="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"optional": true,
"requires": {
"ms": "2.0.0"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"discord.js": {
"version": "11.4.2",
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-11.4.2.tgz",
"integrity": "sha512-MDwpu0lMFTjqomijDl1Ed9miMQe6kB4ifKdP28QZllmLv/HVOJXhatRgjS8urp/wBlOfx+qAYSXcdI5cKGYsfg==",
"requires": {
"long": "^4.0.0",
"prism-media": "^0.0.3",
"snekfetch": "^3.6.4",
"tweetnacl": "^1.0.0",
"ws": "^4.0.0"
}
},
"discord.js-musicbot-addon": {
"version": "13.4.5",
"resolved": "https://registry.npmjs.org/discord.js-musicbot-addon/-/discord.js-musicbot-addon-13.4.5.tgz",
"integrity": "sha512-FEHvXPZxA+s+rMjm5DyiPO10JrKILmnyBFDitMHCiz65Bz5BdN1aKt4AaRc1dnma0BERAhC/vnqCYR3fTCcoRA==",
"requires": {
"ytdl-core": "^0.29.1",
"ytpl": "^0.1.14",
"ytsearcher": "^1.2.2"
}
},
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"get-urls": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/get-urls/-/get-urls-9.0.0.tgz",
"integrity": "sha512-5S10Ya9GeUuiiCZ7M47oqznuC00WJEYpO5m5VgjAi07LoIf6GEk4y1FYPBiG1CXMFdNXDa/awszuipUX5JVTFg==",
"requires": {
"normalize-url": "^4.1.0",
"url-regex": "^4.0.0"
}
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"requires": {
"ajv": "^6.5.5",
"har-schema": "^2.0.0"
}
},
"html-entities": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
"integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8="
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ip-regex": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz",
"integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0="
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
"jquery": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
"integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==",
"optional": true
},
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"optional": true
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"linkifyjs": {
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-2.1.8.tgz",
"integrity": "sha512-j3QpiEr4UYzN5foKhrr9Sr06VI9vSlI4HisDWt+7Mq+TWDwpJ6H/LLpogYsXcyUIJLVhGblXXdUnblHsVNMPpg==",
"requires": {
"jquery": "^3.3.1",
"react": "^16.4.2",
"react-dom": "^16.4.2"
}
},
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"optional": true,
"requires": {
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
"m3u8stream": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.6.2.tgz",
"integrity": "sha512-WsuM2bd5pPN80xvfrB+1DZqr4M7+kJl8byi6+ZCy6cmVjEiHhmr/desN53Ngsa6Hs13kYumeVgT4wL0oIJ+v6g==",
"requires": {
"miniget": "^1.4.0",
"sax": "^1.2.4"
}
},
"mime-db": {
"version": "1.38.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
"integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg=="
},
"mime-types": {
"version": "2.1.22",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
"integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
"requires": {
"mime-db": "~1.38.0"
}
},
"miniget": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/miniget/-/miniget-1.5.1.tgz",
"integrity": "sha512-KJ3AyIVZ76QuWAq43BWjkK+jLdhxhy3s4tsdg9Je91+cIFkeOSW2VEj2lSeKw50CPu1eCCkSbiQEBKL36mpA5w=="
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"optional": true
},
"mysql": {
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/mysql/-/mysql-2.16.0.tgz",
"integrity": "sha512-dPbN2LHonQp7D5ja5DJXNbCLe/HRdu+f3v61aguzNRQIrmZLOeRoymBYyeThrR6ug+FqzDL95Gc9maqZUJS+Gw==",
"requires": {
"bignumber.js": "4.1.0",
"readable-stream": "2.3.6",
"safe-buffer": "5.1.2",
"sqlstring": "2.3.1"
}
},
"nan": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
"integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw=="
},
"node-opus": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/node-opus/-/node-opus-0.3.1.tgz",
"integrity": "sha512-1Cb8OvHhdDspVfeKMjEgbedJabyE1Ib6OcN2BMEsRCU7FIsciuBpOErcie3y0qTf83nclPAY+kBU3Oj+U+oRlQ==",
"requires": {
"bindings": "~1.2.1",
"commander": "^2.9.0",
"nan": "^2.10.0",
"ogg-packet": "^1.0.0"
}
},
"normalize-url": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.2.0.tgz",
"integrity": "sha512-n69+KXI+kZApR+sPwSkoAXpGlNkaiYyoHHqKOFPjJWvwZpew/EjKvuPE4+tStNgb42z5yLtdakgZCQI+LalSPg=="
},
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"optional": true
},
"ogg-packet": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/ogg-packet/-/ogg-packet-1.0.0.tgz",
"integrity": "sha1-RbiFchrI991c8iOR1CEGrlM6xng=",
"optional": true,
"requires": {
"ref-struct": "*"
}
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"prism-media": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.3.tgz",
"integrity": "sha512-c9KkNifSMU/iXT8FFTaBwBMr+rdVcN+H/uNv1o+CuFeTThNZNTOrQ+RgXA1yL/DeLk098duAeRPP3QNPNbhxYQ=="
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
},
"prop-types": {
"version": "15.7.2",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
"integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
"optional": true,
"requires": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
"react-is": "^16.8.1"
}
},
"psl": {
"version": "1.1.31",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
"integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw=="
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
},
"react": {
"version": "16.8.4",
"resolved": "https://registry.npmjs.org/react/-/react-16.8.4.tgz",
"integrity": "sha512-0GQ6gFXfUH7aZcjGVymlPOASTuSjlQL4ZtVC5YKH+3JL6bBLCVO21DknzmaPlI90LN253ojj02nsapy+j7wIjg==",
"optional": true,
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
"scheduler": "^0.13.4"
}
},
"react-dom": {
"version": "16.8.4",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.4.tgz",
"integrity": "sha512-Ob2wK7XG2tUDt7ps7LtLzGYYB6DXMCLj0G5fO6WeEICtT4/HdpOi7W/xLzZnR6RCG1tYza60nMdqtxzA8FaPJQ==",
"optional": true,
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
"scheduler": "^0.13.4"
}
},
"react-is": {
"version": "16.8.4",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.4.tgz",
"integrity": "sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==",
"optional": true
},
"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"
}
},
"ref": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ref/-/ref-1.3.5.tgz",
"integrity": "sha512-2cBCniTtxcGUjDpvFfVpw323a83/0RLSGJJY5l5lcomZWhYpU2cuLdsvYqMixvsdLJ9+sTdzEkju8J8ZHDM2nA==",
"optional": true,
"requires": {
"bindings": "1",
"debug": "2",
"nan": "2"
}
},
"ref-struct": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ref-struct/-/ref-struct-1.1.0.tgz",
"integrity": "sha1-XV7mWtQc78Olxf60BYcmHkee3BM=",
"optional": true,
"requires": {
"debug": "2",
"ref": "1"
}
},
"request": {
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"scheduler": {
"version": "0.13.4",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.4.tgz",
"integrity": "sha512-cvSOlRPxOHs5dAhP9yiS/6IDmVAVxmk33f0CtTJRkmUWcb1Us+t7b1wqdzoC0REw2muC9V5f1L/w5R5uKGaepA==",
"optional": true,
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1"
}
},
"snekfetch": {
"version": "3.6.4",
"resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz",
"integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw=="
},
"sqlstring": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
"integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
},
"sshpk": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
},
"dependencies": {
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
}
}
},
"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"
}
},
"tlds": {
"version": "1.203.1",
"resolved": "https://registry.npmjs.org/tlds/-/tlds-1.203.1.tgz",
"integrity": "sha512-7MUlYyGJ6rSitEZ3r1Q1QNV8uSIzapS8SmmhSusBuIc7uIxPPwsKllEP0GRp1NS6Ik6F+fRZvnjDWm3ecv2hDw=="
},
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
},
"dependencies": {
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
}
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.1.tgz",
"integrity": "sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A=="
},
"twitch-m3u8": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/twitch-m3u8/-/twitch-m3u8-1.0.5.tgz",
"integrity": "sha512-2m9Ukv0PoAwrt5mCucffVNCfWKbaYknVWLVte+EPsBFiOtq+JqY68iWCRwvgF8cIQuPa7zaFBnLhDk41xIS4RA=="
},
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"requires": {
"punycode": "^2.1.0"
}
},
"url-regex": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/url-regex/-/url-regex-4.1.1.tgz",
"integrity": "sha512-ViSDgDPNKkrQHI81GLCjdDN+Rsk3tAW/uLXlBOJxtcHzWZjta58Z0APXhfXzS89YszsheMnEvXeDXsWUB53wwA==",
"requires": {
"ip-regex": "^1.0.1",
"tlds": "^1.187.0"
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"ws": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz",
"integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==",
"requires": {
"async-limiter": "~1.0.0",
"safe-buffer": "~5.1.0"
}
},
"ytdl-core": {
"version": "0.29.1",
"resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-0.29.1.tgz",
"integrity": "sha512-J/TW3rupqE6y+TczHTTFjuwf23tweA9fasmnbU/5yYH0O2IRFLcwgHbbvEPt3t8mtXWGX207+TWH7uuJpB1FKQ==",
"requires": {
"html-entities": "^1.1.3",
"m3u8stream": "^0.6.2",
"miniget": "^1.4.0",
"sax": "^1.1.3"
}
},
"ytpl": {
"version": "0.1.14",
"resolved": "https://registry.npmjs.org/ytpl/-/ytpl-0.1.14.tgz",
"integrity": "sha512-e5GZDAakgu7EC0ooPAtvuiUz0gugivU8ZkyNen5hwfnl4NAo4HuoDeYODGYso9T8/M7thEW9VZTlCedjXmL/mQ==",
"requires": {
"html-entities": "^1.1.3"
}
},
"ytsearcher": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/ytsearcher/-/ytsearcher-1.2.2.tgz",
"integrity": "sha512-nQ38akKe3O2OGfQba0aTetMx25U/V+jD+MN1v26/lR497KyzpPIolQuNEf5x4O0ANvLLIS9iPSc91Zle1OP+ww=="
}
}
}

23
package.json Normal file
View File

@@ -0,0 +1,23 @@
{
"name": "dadminyt",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"colors": "^1.3.3",
"discord.js": "^11.4.2",
"discord.js-musicbot-addon": "^13.4.5",
"get-urls": "^9.0.0",
"linkifyjs": "^2.1.8",
"mysql": "^2.16.0",
"node-opus": "^0.3.1",
"request": "^2.88.0",
"twitch-m3u8": "^1.0.5"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

32
permissions.txt Normal file
View File

@@ -0,0 +1,32 @@
ADMINISTRATOR
CREATE_INSTANT_INVITE
KICK_MEMBERS
BAN_MEMBERS
MANAGE_CHANNELS
MANAGE_GUILD
ADD_REACTIONS
VIEW_AUDIT_LOG
PRIORITY_SPEAKER
VIEW_CHANNEL
READ_MESSAGES
SEND_MESSAGES
SEND_TTS_MESSAGES
MANAGE_MESSAGES
EMBED_LINKS
ATTACH_FILES
READ_MESSAGE_HISTORY
MENTION_EVERYONE
USE_EXTERNAL_EMOJIS
EXTERNAL_EMOJIS
CONNECT
SPEAK
MUTE_MEMBERS
DEAFEN_MEMBERS
MOVE_MEMBERS
USE_VAD
CHANGE_NICKNAME
MANAGE_NICKNAMES
MANAGE_ROLES
MANAGE_ROLES_OR_PERMISSIONS
MANAGE_WEBHOOKS
MANAGE_EMOJIS