From 300080d295f75bd01e365cde25f5d5ca7cbd848a Mon Sep 17 00:00:00 2001 From: Alee Date: Wed, 4 Jul 2018 16:48:56 -0400 Subject: Release 2.11.0 --- .vscode/launch.json | 6 ++- README.md | 2 +- To be worked on/leave.js | 43 ++++++++++++++++ To be worked on/play.js | 122 +++++++++++++++++++++++++++++++++++++++++++++ To be worked on/queue.js | 49 ++++++++++++++++++ To be worked on/skip.js | 62 +++++++++++++++++++++++ bot_discord.js | 40 +++++++++++++-- commands/leave.js | 43 ---------------- commands/play.js | 122 --------------------------------------------- commands/queue.js | 49 ------------------ commands/skip.js | 62 ----------------------- commands/suggestfeature.js | 2 +- 12 files changed, 319 insertions(+), 283 deletions(-) create mode 100644 To be worked on/leave.js create mode 100644 To be worked on/play.js create mode 100644 To be worked on/queue.js create mode 100644 To be worked on/skip.js delete mode 100644 commands/leave.js delete mode 100644 commands/play.js delete mode 100644 commands/queue.js delete mode 100644 commands/skip.js diff --git a/.vscode/launch.json b/.vscode/launch.json index b82378f..4058c57 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,13 +4,16 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { "type": "node", "request": "launch", "name": "Launch Bot", "program": "${workspaceFolder}/bot_discord.js", "console": "integratedTerminal", - + "args": [ + "--beta" + ] }, { "type": "node", @@ -19,6 +22,7 @@ "program": "${workspaceFolder}/bot_discord.js", "console": "integratedTerminal", "args": [ + "--beta", "--debug" ] } diff --git a/README.md b/README.md index 6158123..61c14b5 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ AleeBot Status Widget Discord Badge Travis CI Build Status -

Welcome to the AleeBot github repository! This bot is crafted for discord servers.

+

AleeBot: A bot that's made for the discord app


What features does AleeBot have?

diff --git a/To be worked on/leave.js b/To be worked on/leave.js new file mode 100644 index 0000000..e1584f0 --- /dev/null +++ b/To be worked on/leave.js @@ -0,0 +1,43 @@ +/**************************************** + * + * Leave: Command for AleeBot + * Copyright (C) 2018 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * *************************************/ + +module.exports.run = async (client, message, args) => { + if (!message.member.voiceChannel) return message.reply('You need a voice channel to perform this action.'); + + if (!message.guild.me.voiceChannel) return message.reply('Error: The bot isn\'t connected to a voice channel.') + + if (message.guild.me.voiceChannelID !== message.member.voiceChannelID) return message.reply('Error: You aren\'t connected in the same voice channel as the bot...'); + + message.guild.me.voiceChannel.leave(); + + message.channel.send("Leaving channel...") + + }; + + exports.conf = { + aliases: [], + guildOnly: false, + }; + exports.help = { + name: 'leave', + description: 'Leaves voice chat.', + usage: 'leave', + category: '- Music Commands', + }; \ No newline at end of file diff --git a/To be worked on/play.js b/To be worked on/play.js new file mode 100644 index 0000000..ddf80db --- /dev/null +++ b/To be worked on/play.js @@ -0,0 +1,122 @@ +/**************************************** + * + * Play: Command for AleeBot + * Copyright (C) 2018 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * *************************************/ + +module.exports.run = async (client, message, args, ops) => { + const ytdl = require('ytdl-core'); + + if (!message.member.voiceChannel) return message.reply('Please connect to a voice channel...'); + + if (!args[0]) return message.reply('Please input a url.'); + + let vaildate = await ytdl.validateURL(args[0]); + + if (!vaildate) return message.reply('Please input a **valid** url.'); + + let info = await ytdl.getInfo(args[0]); + + let data = ops.active.get(message.guild.id) || {}; + + if (!data.connection) data.connection = await message.member.voiceChannel.join(); + if (!data.queue) data.queue = []; + data.guildID = message.guild.id; + + data.queue.push({ + songTitle: info.title, + requester: message.author.tag, + url: args[0], + announceChannel: message.channel.id + }); + if (!data.dispatcher) play(client, ops, data); + else { + const { RichEmbed } = require('discord.js'); + const embed = new RichEmbed() + .setTitle('This music has been added to the queue!') + .setAuthor(info.title, client.user.avatarURL) + .setColor(0x00afff) + .setTimestamp() + .addField('Title', info.title) + .addField('Requested by:', message.author.tag) + .setFooter('AleeBot Music Player'); + + message.channel.send({embed}) + } + + ops.active.set(message.guild.id, data); + + }; + + async function play(client, ops, data) { + const ytdl = require('ytdl-core'); + const { RichEmbed } = require('discord.js'); + const embed = new RichEmbed() + .setTitle('Now playing!') + .setAuthor(data.queue[0].songTitle, client.user.avatarURL) + .setColor(0x00afff) + .setTimestamp() + .addField('Title', data.queue[0].songTitle) + .addField('Requested by:', data.queue[0].requester) + // .addField('Link', info.url) + // .addField('Duration', time) + .setFooter('AleeBot Music Player'); + + client.channels.get(data.queue[0].announceChannel).send({embed}) + + data.dispatcher = await data.connection.playStream(ytdl(data.queue[0].url, { filter: 'audioonly'})); + data.dispatcher.guildID = data.guildID; + + data.dispatcher.once('finish', function () { + finish(client, ops, this); + }); + + }; + + function finish(client, ops, dispatcher) { + + let fetched = ops.active.get(dispatcher.guildID); + + fetched.queue.shift(); + + if (fetched.queue.length > 0) { + + ops.active.set(dispatcher.guildID, fetched); + + play(client, ops, fetched); + + } else { + ops.active.delete(dispatcher.guildID); + + let vc = client.guild.get(dispatcher.guildID).me.voiceChannel; + + if (vc) vc.leave(); + + } + + } + + exports.conf = { + aliases: [], + guildOnly: false, + }; + exports.help = { + name: 'play', + description: 'Plays music.', + usage: 'play [url]', + category: '- Music Commands', + }; \ No newline at end of file diff --git a/To be worked on/queue.js b/To be worked on/queue.js new file mode 100644 index 0000000..77d86b7 --- /dev/null +++ b/To be worked on/queue.js @@ -0,0 +1,49 @@ +/**************************************** + * + * Queue: Command for AleeBot + * Copyright (C) 2018 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * *************************************/ + +module.exports.run = async (client, message, args, ops) => { + + let fetched = ops.active.get(message.guild.id); + + if (!fetched) return message.reply('Currently, there isn\'t any music playing in this guild.'); + + let queue = fetched.queue + let nowPlaying = queue[0]; + + let resp = `__**Now Playing**__\n**${nowPlaying.songTitle}** -- **Requested By:** *${nowPlaying.requester}*\n\n__**Queue**__\n`; + + for (var i = 1; i < queue.length; i++) { + resp += `${i}. **${queue[i].songTitle}** -- **Requested By:** *${queue[i].requester}*\n` + } + + message.channel.send(resp); + + }; + + exports.conf = { + aliases: [], + guildOnly: false, + }; + exports.help = { + name: 'queue', + description: 'Checks what music is in queue.', + usage: 'queue', + category: '- Music Commands', + }; \ No newline at end of file diff --git a/To be worked on/skip.js b/To be worked on/skip.js new file mode 100644 index 0000000..5a6d2b7 --- /dev/null +++ b/To be worked on/skip.js @@ -0,0 +1,62 @@ +/**************************************** + * + * Skip: Command for AleeBot + * Copyright (C) 2018 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * *************************************/ + +module.exports.run = async (client, message, args, ops) => { + + let fetched = ops.active.get(message.guild.id); + + if (!fetched) return message.reply('Currently, there isn\'t any music playing in this guild.'); + + if (message.member.voiceChannel !== message.guild.me.voiceChannel) return message.reply('Sorry, you are currently not in the same channel as the bot.') + + let userCount = message.member.voiceChannel.members.size; + + let required = Math.ceil(userCount/2); + + if (!fetched.queue[0].voteSkips) fetched.queue[0].voteSkips = []; + + if (fetched.queue[0].voteSkips.includes(message.member.id)) return message.reply(`Sorry, you have already voted to skip! ${fetched.queue[0].voteSkips.length}/${required} required.`) + + fetched.queue[0].voteSkips.push(message.member.id); + + ops.active.set(message.guild.id, fetched); + + if (fetched.queue[0].voteSkips.length >= required) { + + message.channel.send('Successfully skipped song!'); + + return fetched.dispatcher.emit('finish'); + + } + + message.channel.send(`Successfully voted to skip! ${fetched.queue[0].voteSkips.length}/${required} required.`) + + }; + + exports.conf = { + aliases: [], + guildOnly: false, + }; + exports.help = { + name: 'skip', + description: 'Skips a music.', + usage: 'skip', + category: '- Music Commands', + }; \ No newline at end of file diff --git a/bot_discord.js b/bot_discord.js index 45da5ea..314553d 100644 --- a/bot_discord.js +++ b/bot_discord.js @@ -62,6 +62,17 @@ if (process.argv.indexOf("--debug") == -1) { }); } +if (process.argv.indexOf("--beta") == -1) { + client.login(api.abtoken).catch(function() { + log('[X] Login failed. The token that you put in is invalid, please put in a new one...'.red); + }); + +} else { + client.login(api.abbtoken).catch(function() { + log('[X] Login failed. The token that you put in is invalid, please put in a new one...'.red); + }); +} + client.commands = new Discord.Collection(); client.aliases = new Discord.Collection(); @@ -217,6 +228,31 @@ client.on('guildDelete', guild => { client.on('message', (msg) => { if (msg.author.bot) return; + + if (msg.mentions != null && msg.mentions.users != null) { + if (msg.mentions.users.has("282547024547545109")){ + if (msg.content.toLowerCase().includes("hello") || (msg.content.toLowerCase().includes("hi"))) { + msg.reply("Hi there."); + } else { + if (msg.content.toLowerCase().includes("shut") && msg.content.toLowerCase().includes("up")) { + switch (Math.floor(Math.random() * 1000) % 3) { + case 0: + msg.reply("Excuse me? Can you not speak to me in that tone...") + break; + case 1: + msg.reply("NO! I can talk as much I can!"); + break; + case 2: + msg.reply("Nah I won't...."); + break; + } + } else if (msg.content.toLowerCase().includes("how") && msg.content.toLowerCase().includes("are") && msg.content.toLowerCase().includes("you")) { + msg.reply("I'm doing OK, I suppose...") + } + } + } +} + let prefixes = JSON.parse(fs.readFileSync("./storage/prefixes.json", "utf8")); @@ -270,7 +306,3 @@ log("[X | UNCAUGHT PROMISE] " + err.stack.red); process.on('uncaughtException', function (exception) { log(exception.red); }); - -client.login(api.abtoken).catch(function() { - log('[X] Login failed. Please contact Alee14#9928 or email him at alee14498@gmail.com.'.red); -}); diff --git a/commands/leave.js b/commands/leave.js deleted file mode 100644 index a2a48d8..0000000 --- a/commands/leave.js +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************** - * - * Leave: Command for AleeBot - * Copyright (C) 2018 AleeCorp & (your name here) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * *************************************/ - -module.exports.run = async (client, message, args) => { - if (!message.member.voiceChannel) return message.reply('You need a voice channel to perform this action.'); - - if (!message.guild.me.voiceChannel) return message.reply('Error: The bot isn\'t connected to a voice channel.') - - if (message.guild.me.voiceChannelID !== message.member.voiceChannelID) return message.reply('Error: You aren\'t connected in the same voice channel as the bot...'); - - message.guild.me.voiceChannel.leave(); - - message.channel.send("Leaving channel...") - - }; - - exports.conf = { - aliases: [], - guildOnly: false, - }; - exports.help = { - name: 'leave', - description: 'Leaves voice chat.', - usage: 'leave', - category: '- Music Commands', - }; \ No newline at end of file diff --git a/commands/play.js b/commands/play.js deleted file mode 100644 index 06ca7f1..0000000 --- a/commands/play.js +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************** - * - * Play: Command for AleeBot - * Copyright (C) 2018 AleeCorp & (your name here) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * *************************************/ - -module.exports.run = async (client, message, args, ops) => { - const ytdl = require('ytdl-core'); - - if (!message.member.voiceChannel) return message.reply('Please connect to a voice channel...'); - - if (!args[0]) return message.reply('Please input a url.'); - - let vaildate = await ytdl.validateURL(args[0]); - - if (!vaildate) return message.reply('Please input a **valid** url.'); - - let info = await ytdl.getInfo(args[0]); - - let data = ops.active.get(message.guild.id) || {}; - - if (!data.connection) data.connection = await message.member.voiceChannel.join(); - if (!data.queue) data.queue = []; - data.guildID = message.guild.id; - - data.queue.push({ - songTitle: info.title, - requester: message.author.tag, - url: args[0], - announceChannel: message.channel.id - }); - if (!data.dispatcher) play(client, ops, data); - else { - const { RichEmbed } = require('discord.js'); - const embed = new RichEmbed() - .setTitle('This music has been added to the queue!') - .setAuthor(info.title, client.user.avatarURL) - .setColor(0x00afff) - .setTimestamp() - .addField('Title', info.title) - .addField('Requested by:', message.author.tag) - .setFooter('AleeBot Music Player'); - - message.channel.send({embed}) - } - - ops.active.set(message.guild.id, data); - - }; - - async function play(client, ops, data) { - const ytdl = require('ytdl-core'); - const { RichEmbed } = require('discord.js'); - const embed = new RichEmbed() - .setTitle('Now playing!') - .setAuthor(data.queue[0].songTitle, client.user.avatarURL) - .setColor(0x00afff) - .setTimestamp() - .addField('Title', data.queue[0].songTitle) - .addField('Requested by:', data.queue[0].requester) - // .addField('Link', info.url) - // .addField('Duration', time) - .setFooter('AleeBot Music Player'); - - client.channels.get(data.queue[0].announceChannel).send({embed}) - - data.dispatcher = await data.connection.playStream(ytdl(data.queue[0].url, { filter: 'audioonly'})); - data.dispatcher.guildID = data.guildID; - - data.dispatcher.once('finish', function () { - finish(client, ops, this); - }); - - }; - - function finish(client, ops, dispatcher) { - - let fetched = ops.active.get(dispatcher.guildID); - - fetched.queue.shift(); - - if (fetched.queue.length > 0) { - - ops.active.set(dispatcher.guildID, fetched); - - play(client, ops, fetched); - - } else { - ops.active.delete(dispatcher.guildID); - - let vc = client.guild.get(dispatcher.guildID).me.voiceChannel; - - if (vc) vc.leave(); - - } - - } - - exports.conf = { - aliases: [], - guildOnly: false, - }; - exports.help = { - name: 'play', - description: 'Plays music.', - usage: 'play [url]', - category: '- Music Commands', - }; \ No newline at end of file diff --git a/commands/queue.js b/commands/queue.js deleted file mode 100644 index 67faf91..0000000 --- a/commands/queue.js +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************** - * - * Queue: Command for AleeBot - * Copyright (C) 2018 AleeCorp & (your name here) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * *************************************/ - -module.exports.run = async (client, message, args, ops) => { - - let fetched = ops.active.get(message.guild.id); - - if (!fetched) return message.reply('Currently, there isn\'t any music playing in this guild.'); - - let queue = fetched.queue - let nowPlaying = queue[0]; - - let resp = `__**Now Playing**__\n**${nowPlaying.songTitle}** -- **Requested By:** *${nowPlaying.requester}*\n\n__**Queue**__\n`; - - for (var i = 1; i < queue.length; i++) { - resp += `${i}. **${queue[i].songTitle}** -- **Requested By:** *${queue[i].requester}*\n` - } - - message.channel.send(resp); - - }; - - exports.conf = { - aliases: [], - guildOnly: false, - }; - exports.help = { - name: 'queue', - description: 'Checks what music is in queue.', - usage: 'queue', - category: '- Music Commands', - }; \ No newline at end of file diff --git a/commands/skip.js b/commands/skip.js deleted file mode 100644 index c1402cc..0000000 --- a/commands/skip.js +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************** - * - * Skip: Command for AleeBot - * Copyright (C) 2018 AleeCorp & (your name here) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * *************************************/ - -module.exports.run = async (client, message, args, ops) => { - - let fetched = ops.active.get(message.guild.id); - - if (!fetched) return message.reply('Currently, there isn\'t any music playing in this guild.'); - - if (message.member.voiceChannel !== message.guild.me.voiceChannel) return message.reply('Sorry, you are currently not in the same channel as the bot.') - - let userCount = message.member.voiceChannel.members.size; - - let required = Math.ceil(userCount/2); - - if (!fetched.queue[0].voteSkips) fetched.queue[0].voteSkips = []; - - if (fetched.queue[0].voteSkips.includes(message.member.id)) return message.reply(`Sorry, you have already voted to skip! ${fetched.queue[0].voteSkips.length}/${required} required.`) - - fetched.queue[0].voteSkips.push(message.member.id); - - ops.active.set(message.guild.id, fetched); - - if (fetched.queue[0].voteSkips.length >= required) { - - message.channel.send('Successfully skipped song!'); - - return fetched.dispatcher.emit('finish'); - - } - - message.channel.send(`Successfully voted to skip! ${fetched.queue[0].voteSkips.length}/${required} required.`) - - }; - - exports.conf = { - aliases: [], - guildOnly: false, - }; - exports.help = { - name: 'skip', - description: 'Skips a music.', - usage: 'skip', - category: '- Music Commands', - }; \ No newline at end of file diff --git a/commands/suggestfeature.js b/commands/suggestfeature.js index 04db033..dbafc98 100644 --- a/commands/suggestfeature.js +++ b/commands/suggestfeature.js @@ -19,7 +19,7 @@ * *************************************/ module.exports.run = async (client, message, args) => { const { RichEmbed } = require('discord.js'); - client.channels.find('id', '435234655579537418').send( + client.channels.find('id', '427495678390960148').send( new RichEmbed() .setColor ('#1fd619') .setTitle('AleeBot Feature Suggestion') -- cgit v1.2.3