Skip to content
This repository has been archived by the owner on Jan 27, 2021. It is now read-only.

Commit

Permalink
Music Update
Browse files Browse the repository at this point in the history
  • Loading branch information
Glitch (cytrusbot) committed Jan 28, 2019
1 parent 340dc91 commit 92aa61d
Show file tree
Hide file tree
Showing 50 changed files with 406 additions and 124 deletions.
5 changes: 0 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ cy.cat: Returns a random cat
cy.dog: Returns a random Dog
cy.duck: Returns a random duck
cy.reverse: Returns the string you input reversed
cy.oofception: Returns "Oofception"
cy.ree: Returns "REEEEE"
```
### General Commands
Expand Down Expand Up @@ -67,9 +65,6 @@ cy.unmute: Unmutes a member.
### Music Commands
```markdown
cy.spotify: Returns a spotify playlist based on the type you choose
cy.leave: Leaves your voice channel
cy.play: Plays music in your voice channel
cy.spotify: Returns a spotify playlist based on the type you choose
```
### System Commands
Expand Down
3 changes: 2 additions & 1 deletion app.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const client = new Discord.Client();
const promisify = util.promisify;
const readdir = (fs.readdir);
client.levelCache = {};
client.music = {};

//Define databases
client.commands = new Enmap();
Expand Down Expand Up @@ -47,7 +48,7 @@ readdir("./commands/", (err, files) => {
client.commands.set(commandName, props);
props.conf.aliases.forEach((al) => {
//Set the aliases of the command the file objects
client.aliases.set(al, props);
client.aliases.set(al, client.commands.get(commandName));
});

});
Expand Down
2 changes: 1 addition & 1 deletion cnf.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const config = {
'developers': [],
'mods': [],
'support': [],
'helpers': [],
'helpers': ['339903300994596884', '277872422760349696'],

'globalBan': [],
'token': 'mfa.n0-t.r_e-a1-t0-k_e.n',
Expand Down
31 changes: 31 additions & 0 deletions commands/add.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
const Discord = require('discord.js');
const ytdl = require('ytdl-core');

exports.run = async (client, message, args, level) => { // eslint-disable-line no-unused-vars

if (!client.music[message.guild.id]) {
client.music[message.guild.id] = {queue: []};
}

var server = client.music[message.guild.id];

if(ytdl.validateURL(args[0])) {
server.queue.push(args[0]);
message.channel.send('The song is in the queue!');
} else {
message.reply('Thats not a valid YouTube link!');
}
};

exports.conf = {
enabled: true,
aliases: [],
permLevel: 'User'
};

exports.help = {
name: 'add',
category: 'Music',
description: 'Adds a song to the server\'s queue',
usage: 'add <youtube video URL>'
};
44 changes: 44 additions & 0 deletions commands/addRole.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
const Discord = require('discord.js');

exports.run = async (client, message, args, level) => {
const user = message.mentions.users.first();
const settings = client.getSettings(message.guild.id);

if (user) {
const member = message.guild.member(user);
if (member) {
member.ban(args.slice(1).join(' ')).then(() => {
message.reply(`Successfully banned ${user.tag}`);

const modLogChannel = settings.modLogChannel;
if (modLogChannel) {
let embed = new Discord.RichEmbed()
.setTitle('User Ban')
.setColor('#eeeeee')
.setDescription(`Name: ${user.username}\nID: ${user.id}\nReason: ${args.slice(1).join(' ')}`);

message.guild.channels.find(c => c.name === settings.modLogChannel).send(embed);
}
}).catch(err => {
message.reply('I was unable to ban the member');
});
} else {
message.reply('That user isn\'t in this guild!');
}
} else {
message.reply('You didn\'t mention the user to ban!');
}
};

exports.conf = {
enabled: true,
aliases: [],
permLevel: 'Administrator'
};

exports.help = {
name: 'addrole',
category: 'Moderation',
description: 'Adds the specifyed role to your role list',
usage: 'addrole <name/id> <role name/id>'
};
3 changes: 1 addition & 2 deletions commands/ban.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ exports.run = async (client, message, args, level) => {
message.reply(`Successfully banned ${user.tag}`);

const modLogChannel = settings.modLogChannel;
if (modLogChannel) {
if (modLogChannel && message.guild.channels.find(c => c.name === settings.modLogChannel)) {
let embed = new Discord.RichEmbed()
.setTitle('User Ban')
.setColor('#eeeeee')
Expand All @@ -32,7 +32,6 @@ exports.run = async (client, message, args, level) => {

exports.conf = {
enabled: true,
guildOnly: true,
aliases: ['b'],
permLevel: 'Moderator'
};
Expand Down
1 change: 0 additions & 1 deletion commands/cat.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ exports.run = async (client, message, args, level) => {

exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: 'User'
};
Expand Down
49 changes: 23 additions & 26 deletions commands/configure.js
Original file line number Diff line number Diff line change
@@ -1,51 +1,49 @@
const Discord = require('discord.js');

exports.run = async (client, message, [action, key, value], level) => { // eslint-disable-line no-unused-vars
exports.run = async (client, message, args, level) => { // eslint-disable-line no-unused-vars
const settings = message.settings;
const defaults = client.config.defaultSettings;
const overrides = client.settings.get(message.guild.id);
if (!client.settings.has(message.guild.id)) client.settings.set(message.guild.id, {});

if (action === 'edit') {
if (!key) return message.reply('Please specify a key to edit');
if (!defaults[key]) return message.reply('This key does not exist in the settings');
const joinedValue = value;
if (args[0] === 'edit') {
if (!args[1]) return message.reply('Please specify a key to edit');
if (!defaults[args[1]]) return message.reply('This key does not exist in the settings');
const joinedValue = args.join(' ');
if (joinedValue.length < 1) return message.reply('Please specify a new value');
if (joinedValue === settings[key]) return message.reply('This setting already has that value!');
if (joinedValue === settings[args[1].slice(2)]) return message.reply('This setting already has that value!');

if (!client.settings.has(message.guild.id)) client.settings.set(message.guild.id, {});

client.settings.set(message.guild.id, joinedValue, key);
client.settings.set(message.guild.id, args.slice(2).join(' '), args[1]);

message.reply(`${key} successfully edited to ${joinedValue}`);
message.reply(`${args[1]} successfully edited to ${args.slice(2).join(' ')}`);
} else

if (action === 'del' || action === 'reset') {
if (!key) return message.reply('Please specify a key to reset.');
if (!defaults[key]) return message.reply('This key does not exist in the settings');
if (!overrides[key]) return message.reply('This key does not have an override and is already using defaults.');
if (args[0] === 'del' || args[0] === 'reset') {
if (!args[1]) return message.reply('Please specify a key to reset.');
if (!defaults[args[1]]) return message.reply('This key does not exist in the settings');
if (!overrides[args[1]]) return message.reply('This key does not have an override and is already using defaults.');

const response = await client.awaitReply(message, `Are you sure you want to reset ${key} to the default value?`);
const response = await client.awaitReply(message, `Are you sure you want to reset ${args[1]} to the default value?`);

if (['y', 'yes'].includes(response.toLowerCase())) {
client.settings.delete(message.guild.id, key);
message.reply(`${key} was successfully reset to default.`);
client.settings.delete(message.guild.id, args[1]);
message.reply(`${args[1]} was successfully reset to default.`);
} else
if (['n','no','cancel'].includes(response)) {
message.reply(`Your setting for \`${key}\` remains at \`${settings[key]}\``);
message.reply(`Your setting for \`${args[1]}\` remains at \`${settings[args[1]]}\``);
}
} else

if (action === 'get') {
if (!key) return message.reply('Please specify a key to view');
if (!defaults[key]) return message.reply('This key does not exist in the settings');
const isDefault = !overrides[key] ? '\nThis is the default global default value.' : '';
message.reply(`The value of ${key} is currently ${settings[key]}${isDefault}`);
if (args[0] === 'get') {
if (!args[1]) return message.reply('Please specify a args[1] to view');
if (!defaults[args[1]]) return message.reply('This args[1] does not exist in the settings');
const isDefault = !overrides[args[1]] ? '\nThis is the default global default value.' : '';
message.reply(`The value of ${args[1]} is currently ${settings[args[1]]}${isDefault}`);
} else {
const array = [];
Object.entries(settings).forEach(([key, value]) => {
array.push(`${key}: \`${value}\``);
});
Object.keys(client.getSettings(message.guild.id)).forEach((setting) => array.push(setting + ': ' + settings[setting]));

const embed = new Discord.RichEmbed()
.setTitle('Server Settings')
Expand All @@ -57,7 +55,6 @@ exports.run = async (client, message, [action, key, value], level) => { // eslin

exports.conf = {
enabled: true,
guildOnly: true,
aliases: ['setting', 'settings', 'conf', 'set', 'config'],
permLevel: 'Administrator'
};
Expand All @@ -66,5 +63,5 @@ exports.help = {
name: 'configure',
category: 'Moderation',
description: 'View or change settings for your server.',
usage: 'configure <view/get/edit> <key> <value>'
usage: 'configure <view/get/edit> <args[1]> <value>'
};
1 change: 0 additions & 1 deletion commands/create.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ exports.run = async (client, message, args, level) => { // eslint-disable-line n

exports.conf = {
enabled: true,
guildOnly: false,
aliases: ['cr'],
permLevel: 'Administrator'
};
Expand Down
1 change: 0 additions & 1 deletion commands/dog.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ exports.run = async (client, message, args, level) => {

exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: 'User'
};
Expand Down
1 change: 0 additions & 1 deletion commands/duck.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ exports.run = async (client, message, args, level) => {

exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: 'User'
};
Expand Down
1 change: 0 additions & 1 deletion commands/emojis.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ exports.run = async (client, message, args, level) => {

exports.conf = {
enabled: true,
guildOnly: true,
aliases: ['emoji'],
permLevel: 'User'
};
Expand Down
3 changes: 1 addition & 2 deletions commands/eval.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
exports.run = async (client, message, args, level) => { // eslint-disable-line no-unused-vars
const code = args.join(' ');
try {
const evaled = eval(code);
const evaled = eval(code.replace('process.env.BOT_TOKEN', 'client.config.token'));
const clean = await client.clean(client, evaled);
message.author.send(`\`\`\`js\n${clean}\n\`\`\``);
} catch (err) {
Expand All @@ -11,7 +11,6 @@ exports.run = async (client, message, args, level) => { // eslint-disable-line n

exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: 'Bot Developer'
};
Expand Down
27 changes: 27 additions & 0 deletions commands/execute.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
*/
exports.run = async (client, message, args, level) => { // eslint-disable-line no-unused-vars
const execute = (command) => {
const exec = require('child_process').exec

exec(command, (err, stdout, stderr) => {
message.author.send(stdout)
})
}

execute(args.join(' '));
};

exports.conf = {
enabled: true,
aliases: ['exec'],
permLevel: 'Bot Manager'
};

exports.help = {
name: 'execute',
category: 'System',
description: 'Executes a command in the shell',
usage: 'execute <shell command>'
};
1 change: 0 additions & 1 deletion commands/help.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ exports.run = (client, message, args, level) => {

exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["h"],
permLevel: "User"
};
Expand Down
1 change: 0 additions & 1 deletion commands/info.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ exports.run = async (client, message, args, level) => { // eslint-disable-line n

exports.conf = {
enabled: true,
guildOnly: false,
aliases: ['i'],
permLevel: 'User'
};
Expand Down
42 changes: 33 additions & 9 deletions commands/join.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,45 @@
const Discord = require('discord.js');
const ytdl = require('ytdl-core');

exports.run = async (client, message, args, level) => { // eslint-disable-line no-unused-vars
const Play = (connection, message, client) => {
const server = client.music[message.guild.id];
let queue = server.queue;
let audioStream;

if (queue[0]) {
audioStream = ytdl(queue[0], {format: 'audioonly'});

server.dispatcher = connection.playStream(audioStream, {passes: 7});
queue.shift();
} else {
return message.channel.send('There is no music in the queue!');
}

server.dispatcher.on('end', () => {
if (queue[0]) {
Play(connection, message, client);
} else {
connection.disconnect();
server.dispatcher = null;
}
});
};

exports.run = async (client, message, args, level) => {
if (message.member.voiceChannel) {
message.member.voiceChannel.join()
.then(connection => { // Connection is an instance of VoiceConnection
message.reply('I have successfully connected to the channel!');
})
.catch('Their was an error!');
if (!message.guild.voiceConnection) {
message.member.voiceChannel.join().then(message.channel.send('Ive joined the voice channel!')).catch(message.reply('Their was an error!'));
} else {
message.reply('Im already in a voice channel!');
}
} else {
message.reply('You need to join a voice channel first!');
}
};

exports.conf = {
enabled: true,
guildOnly: false,
aliases: ['j'],
aliases: [],
permLevel: 'User'
};

Expand All @@ -24,4 +48,4 @@ exports.help = {
category: 'Music',
description: 'Joins your voice channel',
usage: 'join'
};
};
Loading

0 comments on commit 92aa61d

Please sign in to comment.