diff options
| author | 8cy <[email protected]> | 2020-04-15 02:58:49 -0700 |
|---|---|---|
| committer | 8cy <[email protected]> | 2020-04-15 02:58:49 -0700 |
| commit | f4776cce45fba4380d6652fef5b9a6fbf78f8e16 (patch) | |
| tree | 1fbdc404a6d4d8b6a8cd17cc26602b6e7d6c639e | |
| parent | The Start (diff) | |
| download | dep-core-test.tar.xz dep-core-test.zip | |
The Uwuficationtest
98 files changed, 5221 insertions, 96 deletions
diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index dfe0770..0000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/Cache/DiscordEmoji.json b/Cache/DiscordEmoji.json new file mode 100644 index 0000000..4046fd2 --- /dev/null +++ b/Cache/DiscordEmoji.json @@ -0,0 +1 @@ +{"Categories":"{\"1\":\"Original Style\",\"18\":\"Recolors\",\"2\":\"TV \\/ Movie\",\"10\":\"Gaming\",\"3\":\"Meme\",\"4\":\"Anime\",\"13\":\"Pepe\",\"5\":\"Celebrity\",\"6\":\"Blobs\",\"7\":\"Thinking\",\"17\":\"Animals\",\"15\":\"Cute\",\"11\":\"Letters\",\"14\":\"Logos\",\"16\":\"Utility\",\"12\":\"Other\",\"8\":\"Animated\",\"9\":\"NSFW\"}"}
\ No newline at end of file @@ -1 +1 @@ -worker: node app.js +worker: node ./dist/app.js @@ -1,88 +0,0 @@ -const Discord = require('discord.js'); -const client = new Discord.Client(); -const config = require('./config.json'); -const emoji = require('emoji-random'); -const { MessageEmbed } = require('discord.js'); - -client.once('ready', () => { - console.log(`Started bot: ${client.user.tag} (ID: ${client.user.id})\nCurrently running on ${client.guilds.cache.size} server(s).`); - client.user.setActivity('anime | uwu!h', { - type: 'WATCHING' - }); -}); - -client.on('error', console.error); - -client.on('message', async msg => { - const upTime = require('moment'); - require('moment-duration-format'); - const duration = upTime.duration(client.uptime).format(" D [days], H [hrs], m [mins], s [secs]"); - - function prefixCheck() { if (msg.content.startsWith(config.prefix)) return true; } - var msgContent = msg.content.toLowerCase(); - if (prefixCheck()) { - if (msg.channel.type == 'dm') { - console.log(msg.author.tag, 'says', msgContent, 'in a DM'); - } else { - console.log(msg.member.user.tag, 'says', msgContent, 'in #' + msg.channel.name + ' in ' + msg.guild.name); - } - - var args = msg.content.slice(config.prefix.length).split(/ +/); - var cmd = args.shift().toLowerCase(); - } - - if (cmd == 'ping' || cmd == 'ms') { - const t = Date.now(); - - msg.channel.send('plz wait..').then(m => { - m.edit(`** **`); - - const n = Date.now(); - - let emb = new MessageEmbed() - .setDescription(`pong! uwufier's ping is \`${n - t}ms\`. heartbeat \`${client.ws.ping}ms\`. ` + emoji.random()) - .setColor(0xFFCC4D) - .setFooter('Bot developed and administrated by sin#1337.'); - - msg.channel.send(emb); - }); - } - - else if (cmd == 'help' || cmd == 'h') { - let embed = new MessageEmbed() - .setColor(0xFFCC4D) - .setTitle('uwufier - Help') - .addField('Normal Commands', '**uwu!ping** - Grabs the bot\'s current ping to server.\n**uwu!uwufy/uwu/owofy/owo** - uwufys anything you send\n**uwu!uptime/ut** - Grabs the bot\'s uptime.') - .addField('Additional Information', 'If you noticied any issues or have any ideas with/ for the bot, don\'t hesitiate to DM me on Discord @ <@217348698294714370>.\nIf you want to become a collaborator, you can also send me a DM via my Discord.') - .setFooter('Bot developed and administrated by sin#1337.'); - msg.channel.send(embed); - } - - else if (cmd == 'uwufy' || cmd == 'uwu' || cmd == 'owofy' || cmd == 'owo') { - var m = args.join(' '); - var u1 = m.replace('r', 'w'); - var u2 = u1.replace('l', 'w'); - msg.reply(u2); - msg.delete(); - } - - else if(cmd == 'uptime' || cmd == 'ut') { - msg.channel.send('plz wait..').then(m => { - m.edit(`** **`); - - let emb = new MessageEmbed() - .setDescription('uwufier\'s uptime is ' + duration + '. ' + emoji.random()) - .setColor(0xFFCC4D) - .setFooter('Bot developed and administrated by sin#1337.'); - - msg.channel.send(emb); - }); - } - - else if (prefixCheck()) { - msg.reply('sowwy... :point_right: :point_left: :flushed: ... but thats not actually a command...'); - msg.channel.send('if u want to see the commands that work, then do `uwu!h` ' + emoji.random()); - } -}); - -client.login(config['secret']);
\ No newline at end of file diff --git a/assets/audio/farts/1.mp3 b/assets/audio/farts/1.mp3 Binary files differnew file mode 100644 index 0000000..39c85c7 --- /dev/null +++ b/assets/audio/farts/1.mp3 diff --git a/assets/audio/farts/2.mp3 b/assets/audio/farts/2.mp3 Binary files differnew file mode 100644 index 0000000..ee702d8 --- /dev/null +++ b/assets/audio/farts/2.mp3 diff --git a/assets/audio/farts/3.mp3 b/assets/audio/farts/3.mp3 Binary files differnew file mode 100644 index 0000000..f9179ad --- /dev/null +++ b/assets/audio/farts/3.mp3 diff --git a/assets/audio/farts/4.mp3 b/assets/audio/farts/4.mp3 Binary files differnew file mode 100644 index 0000000..2a88503 --- /dev/null +++ b/assets/audio/farts/4.mp3 diff --git a/assets/audio/farts/5.mp3 b/assets/audio/farts/5.mp3 Binary files differnew file mode 100644 index 0000000..b4ccf9d --- /dev/null +++ b/assets/audio/farts/5.mp3 diff --git a/assets/audio/farts/6.mp3 b/assets/audio/farts/6.mp3 Binary files differnew file mode 100644 index 0000000..f57c501 --- /dev/null +++ b/assets/audio/farts/6.mp3 diff --git a/assets/audio/farts/7.mp3 b/assets/audio/farts/7.mp3 Binary files differnew file mode 100644 index 0000000..5ea9d51 --- /dev/null +++ b/assets/audio/farts/7.mp3 diff --git a/assets/audio/farts/8.mp3 b/assets/audio/farts/8.mp3 Binary files differnew file mode 100644 index 0000000..d135519 --- /dev/null +++ b/assets/audio/farts/8.mp3 diff --git a/assets/audio/longest_fart_ever.mp3 b/assets/audio/longest_fart_ever.mp3 Binary files differnew file mode 100644 index 0000000..82b11e1 --- /dev/null +++ b/assets/audio/longest_fart_ever.mp3 diff --git a/assets/audio/squeak.wav b/assets/audio/squeak.wav Binary files differnew file mode 100644 index 0000000..fea330b --- /dev/null +++ b/assets/audio/squeak.wav diff --git a/assets/audio/uhhhh.wav b/assets/audio/uhhhh.wav Binary files differnew file mode 100644 index 0000000..f8dfb24 --- /dev/null +++ b/assets/audio/uhhhh.wav diff --git a/assets/audio/wahoo.mp3 b/assets/audio/wahoo.mp3 Binary files differnew file mode 100644 index 0000000..b507034 --- /dev/null +++ b/assets/audio/wahoo.mp3 diff --git a/dist/app.js b/dist/app.js new file mode 100644 index 0000000..51082bd --- /dev/null +++ b/dist/app.js @@ -0,0 +1,7 @@ +"use strict"; +const { ShardingManager } = require('discord.js'); +const config = require('./config.json'); +const manager = new ShardingManager('./dist/bot.js', { token: config['secret'] }); +manager.spawn(); +manager.on('shardCreate', shard => console.log(`Launched shard: ${shard.id}`)); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNsRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsZUFBZSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7QUFHbEYsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2hCLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyJ9
\ No newline at end of file diff --git a/dist/bot.js b/dist/bot.js new file mode 100644 index 0000000..4ce1c45 --- /dev/null +++ b/dist/bot.js @@ -0,0 +1,78 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const config_json_1 = __importDefault(require("./config.json")); +const discord_js_commando_1 = require("discord.js-commando"); +const path_1 = __importDefault(require("path")); +const discord_js_1 = require("discord.js"); +const emoji_random_1 = __importDefault(require("emoji-random")); +discord_js_1.Structures.extend('Guild', Guild => { + class MusicGuild extends Guild { + constructor(client, data) { + super(client, data); + this.musicData = { + queue: [], + isPlaying: false, + volume: 1, + songDispatcher: null + }; + } + } + return MusicGuild; +}); +const client = new discord_js_commando_1.CommandoClient({ + commandPrefix: 'uwu!', + owner: '217348698294714370' +}); +client.registry + .registerDefaultTypes() + .registerGroups([ + ['fun', 'Fun Command Group'], + ['moderation', 'Moderation Command Group'], + ['utility', 'Utility Command Group'], + ['voice', 'Voice Command Group'] +]) + .registerDefaultGroups() + .registerDefaultCommands({ + help: true +}) + .registerCommandsIn(path_1.default.join(__dirname, 'commands')); +client.once('ready', () => { + console.log(`Started bot: ${client.user.tag} (ID: ${client.user.id})\nCurrently running on ${client.guilds.cache.size} server(s).`); + client.user.setActivity('uwu!help | v5.0.0', { + type: 'WATCHING' + }); +}); +client.on('error', console.error); +client.on('message', (msg) => __awaiter(void 0, void 0, void 0, function* () { + var msgContent = msg.content.toLowerCase(); + function prefixCheck() { + if (msgContent.startsWith('uwu!')) { + return true; + } + } + if (prefixCheck()) { + if (msg.channel.type == 'dm') { + console.log(msg.author.tag, 'says', msgContent, 'in a DM'); + } + else { + console.log(msg.member.user.tag, 'says', msgContent, 'in #' + msg.channel.name); + } + } + if (msg.mentions.everyone) { + msg.react(emoji_random_1.default.random()); + } +})); +client.login(config_json_1.default['secret']); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2JvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUFtQztBQUNuQyw2REFBcUQ7QUFDckQsZ0RBQXdCO0FBQ3hCLDJDQUF3QztBQUN4QyxnRUFBaUM7QUFDakMsdUJBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFO0lBQy9CLE1BQU0sVUFBVyxTQUFRLEtBQUs7UUFFMUIsWUFBWSxNQUFNLEVBQUUsSUFBSTtZQUNwQixLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUc7Z0JBQ2IsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLE1BQU0sRUFBRSxDQUFDO2dCQUNULGNBQWMsRUFBRSxJQUFJO2FBQ3ZCLENBQUM7UUFDTixDQUFDO0tBQ0o7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sTUFBTSxHQUFHLElBQUksb0NBQWMsQ0FBQztJQUM5QixhQUFhLEVBQUUsTUFBTTtJQUNyQixLQUFLLEVBQUUsb0JBQW9CO0NBQzlCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxRQUFRO0tBQ1Ysb0JBQW9CLEVBQUU7S0FDdEIsY0FBYyxDQUFDO0lBQ1osQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUM7SUFDNUIsQ0FBQyxZQUFZLEVBQUUsMEJBQTBCLENBQUM7SUFDMUMsQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLENBQUM7SUFDcEMsQ0FBQyxPQUFPLEVBQUUscUJBQXFCLENBQUM7Q0FDbkMsQ0FBQztLQUNELHFCQUFxQixFQUFFO0tBQ3ZCLHVCQUF1QixDQUFDO0lBQ3JCLElBQUksRUFBRSxJQUFJO0NBQ2IsQ0FBQztLQUNELGtCQUFrQixDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFFMUQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO0lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSwyQkFBMkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQztJQUNwSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRTtRQUN6QyxJQUFJLEVBQUUsVUFBVTtLQUNuQixDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUdsQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFNLEdBQUcsRUFBQyxFQUFFO0lBQzdCLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0MsU0FBUyxXQUFXO1FBQ2hCLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUNELElBQUksV0FBVyxFQUFFLEVBQUU7UUFDZixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTtZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDOUQ7YUFBTTtZQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkY7S0FDSjtJQUVELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7UUFDdkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxzQkFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDN0I7QUFDTCxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMifQ==
\ No newline at end of file diff --git a/dist/commands/fun/8ball.js b/dist/commands/fun/8ball.js new file mode 100644 index 0000000..91c2f0d --- /dev/null +++ b/dist/commands/fun/8ball.js @@ -0,0 +1,36 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); +module.exports = class EightBallFun extends Command { + constructor(client) { + super(client, { + name: '8ball', + aliases: [ + '8b', + '9b', + '9ball', + '7b', + '7ball' + ], + group: 'fun', + memberName: '8ball', + description: 'Shake the 8ball for a fortune.', + throttling: { + usages: 5, + duration: 30 + }, + examples: ['uwu!8ball', 'uwu!8b'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + var r = ['Yes~ uwu', 'No.', 'Yes!', 'No!', 'What, no.', 'Yes.', 'Maybe.', 'Perhaps.', 'Try again.', 'I\'m not sure.']; + var s = r[Math.floor(Math.random() * r.length)]; + let embed = new MessageEmbed() + .setAuthor('The 8-ball says', 'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/8-Ball_Pool.svg/500px-8-Ball_Pool.svg.png') + .setDescription('`' + s + '`'); + msg.channel.send(embed); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOGJhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvZnVuLzhiYWxsLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUUvQyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sWUFBYSxTQUFRLE9BQU87SUFDbEQsWUFBWSxNQUFNO1FBQ2pCLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDSixJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRTtnQkFDakIsSUFBSTtnQkFDSixJQUFJO2dCQUNKLE9BQU87Z0JBQ1AsSUFBSTtnQkFDSixPQUFPO2FBQ1A7WUFDRCxLQUFLLEVBQUUsS0FBSztZQUNaLFVBQVUsRUFBRSxPQUFPO1lBQ25CLFdBQVcsRUFBRSxnQ0FBZ0M7WUFDN0MsVUFBVSxFQUFFO2dCQUNYLE1BQU0sRUFBRSxDQUFDO2dCQUNULFFBQVEsRUFBRSxFQUFFO2FBQ1o7WUFDRCxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDO1lBQ2pDLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUMxRCxpQkFBaUIsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztTQUM1RCxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUc7UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRWhELElBQUksS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFO2FBRXpCLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxxR0FBcUcsQ0FBQzthQUNuSSxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUVuQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0QsQ0FBQyJ9
\ No newline at end of file diff --git a/dist/commands/fun/dm.js b/dist/commands/fun/dm.js new file mode 100644 index 0000000..48975c5 --- /dev/null +++ b/dist/commands/fun/dm.js @@ -0,0 +1,53 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const { RichEmbed } = require('discord.js'); +module.exports = class DMFun extends Command { + constructor(client) { + super(client, { + name: 'dm', + aliases: [ + 'directmessage', + 'directmsg', + 'direct-message', + 'direct-msg' + ], + group: 'fun', + memberName: 'dm', + description: 'dm someone', + guildOnly: true, + args: [ + { + key: 'msgContent', + prompt: 'what would u like to send', + type: 'string' + } + ], + examples: [ + 's5n!dm @sin#1337 hi', + 's5n!directmessage @sin#1337 hey', + 's5n!directmsg @sin#1337 hello', + 's5n!direct-message @sin#1337 yo', + 's5n!direct-msg @sin#1337 aye', + ] + }); + } + run(msg, { msgContent }) { + if (msg.author) { + if (!msg.mentions.users.first() && msgContent) { + msg.reply('you haven\'t specified anyone to send to.'); + } + else { + var sendTo = msg.mentions.users.first().id; + var d = new Date(msg.createdTimestamp); + msg.guild.members.fetch(sendTo, false).then(messageUser => { + messageUser.send(msgContent); + msg.reply('sent :D'); + }); + } + } + else { + msg.reply('insufficent perms bruh'); + } + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvZnVuL2RtLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUU1QyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sS0FBTSxTQUFRLE9BQU87SUFDeEMsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFO2dCQUNMLGVBQWU7Z0JBQ2YsV0FBVztnQkFDWCxnQkFBZ0I7Z0JBQ2hCLFlBQVk7YUFDZjtZQUNELEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLElBQUk7WUFDaEIsV0FBVyxFQUFFLFlBQVk7WUFDekIsU0FBUyxFQUFFLElBQUk7WUFDZixJQUFJLEVBQUU7Z0JBQ0Y7b0JBQ0ksR0FBRyxFQUFFLFlBQVk7b0JBQ2pCLE1BQU0sRUFBRSwyQkFBMkI7b0JBQ25DLElBQUksRUFBRSxRQUFRO2lCQUNqQjthQUNKO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLHFCQUFxQjtnQkFDckIsaUNBQWlDO2dCQUNqQywrQkFBK0I7Z0JBQy9CLGlDQUFpQztnQkFDakMsOEJBQThCO2FBQ2pDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUU7UUFDbkIsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLFVBQVUsRUFBRTtnQkFDM0MsR0FBRyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO2FBQzFEO2lCQUFNO2dCQUNILElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBRXZDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUN0RCxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUM3QixHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QixDQUFDLENBQUMsQ0FBQzthQUNOO1NBQ0o7YUFBTTtZQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7Q0FDSixDQUFDIn0=
\ No newline at end of file diff --git a/dist/commands/fun/emoji.js b/dist/commands/fun/emoji.js new file mode 100644 index 0000000..6c06126 --- /dev/null +++ b/dist/commands/fun/emoji.js @@ -0,0 +1,25 @@ +"use strict"; +const emoji = require('emoji-random'); +const { Command } = require('discord.js-commando'); +module.exports = class EmojiFun extends Command { + constructor(client) { + super(client, { + name: 'emoji', + aliases: ['moji'], + group: 'fun', + memberName: 'emoji', + description: 'Gives you a random emoji.' + emoji.random(), + throttling: { + usages: 5, + duration: 30 + }, + examples: ['uwu!emoji', 'uwu!moji'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + msg.reply(emoji.random()); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvZnVuL2Vtb2ppLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDdEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxRQUFTLFNBQVEsT0FBTztJQUMzQyxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsS0FBSyxFQUFFLEtBQUs7WUFDWixVQUFVLEVBQUUsT0FBTztZQUNuQixXQUFXLEVBQUUsMkJBQTJCLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUN6RCxVQUFVLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLEVBQUU7YUFDZjtZQUNELFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUM7WUFDbkMsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ25FLGlCQUFpQixFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1NBQ3RELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBRztRQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNKLENBQUMifQ==
\ No newline at end of file diff --git a/dist/commands/fun/gay.js b/dist/commands/fun/gay.js new file mode 100644 index 0000000..06e21a5 --- /dev/null +++ b/dist/commands/fun/gay.js @@ -0,0 +1,34 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +module.exports = class GayFun extends Command { + constructor(client) { + super(client, { + name: 'gay', + aliases: [ + 'gayamount', + 'gayrange', + 'gayrate' + ], + group: 'fun', + memberName: 'gay', + description: 'Tells you your gay-ness amount.', + examples: [ + 'uwu!gay', + 'uwu!gayamount', + 'uwu!gayrange', + 'uwu!gayrate' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + var gayAmount = Math.floor((Math.random() * 100) + 1); + var gayAmountDecimal = Math.floor((Math.random() * 100) + 1); + msg.reply('Scanning..').then(scanningMsg => { + scanningMsg.delete(); + msg.reply('Your gay-ness amount is **' + gayAmount + '.' + gayAmountDecimal + '%**. 🏳️🌈'); + }); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2Z1bi9nYXkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUVuRCxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sTUFBTyxTQUFRLE9BQU87SUFDekMsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxLQUFLO1lBQ1gsT0FBTyxFQUFFO2dCQUNMLFdBQVc7Z0JBQ1gsVUFBVTtnQkFDVixTQUFTO2FBQ1o7WUFDRCxLQUFLLEVBQUUsS0FBSztZQUNaLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFdBQVcsRUFBRSxpQ0FBaUM7WUFDOUMsUUFBUSxFQUFFO2dCQUNOLFNBQVM7Z0JBQ1QsZUFBZTtnQkFDZixjQUFjO2dCQUNkLGFBQWE7YUFDaEI7WUFDRCxlQUFlLEVBQUUsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUM7WUFDbkUsaUJBQWlCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUM7U0FDdEQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELEdBQUcsQ0FBQyxHQUFHO1FBQ0gsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFN0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdkMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFBO1lBQ3BCLEdBQUcsQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEdBQUcsU0FBUyxHQUFHLEdBQUcsR0FBRyxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsQ0FBQztRQUNqRyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSixDQUFDIn0=
\ No newline at end of file diff --git a/dist/commands/fun/quote.js b/dist/commands/fun/quote.js new file mode 100644 index 0000000..f5c6b3a --- /dev/null +++ b/dist/commands/fun/quote.js @@ -0,0 +1,44 @@ +"use strict"; +const atquotes = require('at-quotes'); +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class QuoteFun extends Command { + constructor(client) { + super(client, { + name: 'quote', + aliases: ['quotes'], + group: 'fun', + memberName: 'quote', + description: 'Gives you a random quote from Adventure Time.', + throttling: { + usages: 5, + duration: 30 + }, + examples: ['s5n!quote', 's5n!quote finn'], + args: [ + { + key: 'atCharacter', + prompt: 'Would you like a specific character? (Finn, Jake, Ice King, No)', + type: 'string' + } + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg, { atCharacter }) { + if (!atCharacter || atCharacter == 'no' || atCharacter == 'n') { + msg.reply(atquotes.getQuote() + ' ' + emoji.random()); + } + else if (atCharacter == 'finn' || atCharacter == 'f') { + msg.reply(atquotes.getFinnQuote() + ' ' + emoji.random()); + } + else if (atCharacter == 'jake' || atCharacter == 'j') { + msg.reply(atquotes.getJakeQuote() + ' ' + emoji.random()); + } + else if (atCharacter == 'ice king' || atCharacter == 'ik') { + msg.reply(atquotes.getIceKingQuote() + ' ' + emoji.random()); + } + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvZnVuL3F1b3RlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sUUFBUyxTQUFRLE9BQU87SUFDM0MsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQ25CLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLE9BQU87WUFDbkIsV0FBVyxFQUFFLCtDQUErQztZQUM1RCxVQUFVLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLEVBQUU7YUFDZjtZQUNELFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQztZQUN6QyxJQUFJLEVBQUU7Z0JBQ0Y7b0JBQ0ksR0FBRyxFQUFFLGFBQWE7b0JBQ2xCLE1BQU0sRUFBRSxpRUFBaUU7b0JBQ3pFLElBQUksRUFBRSxRQUFRO2lCQUNqQjthQUNKO1lBQ0QsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ25FLGlCQUFpQixFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1NBQ3RELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFO1FBQ3BCLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksR0FBRyxFQUFFO1lBQzNELEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUN6RDthQUFNLElBQUksV0FBVyxJQUFJLE1BQU0sSUFBSSxXQUFXLElBQUksR0FBRyxFQUFFO1lBQ3BELEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUM3RDthQUFNLElBQUksV0FBVyxJQUFJLE1BQU0sSUFBSSxXQUFXLElBQUksR0FBRyxFQUFFO1lBQ3BELEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUM3RDthQUFNLElBQUksV0FBVyxJQUFJLFVBQVUsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFO1lBQ3pELEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNoRTtJQUNMLENBQUM7Q0FDSixDQUFDIn0=
\ No newline at end of file diff --git a/dist/commands/fun/respect.js b/dist/commands/fun/respect.js new file mode 100644 index 0000000..0fef1e3 --- /dev/null +++ b/dist/commands/fun/respect.js @@ -0,0 +1,24 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +module.exports = class RespectFun extends Command { + constructor(client) { + super(client, { + name: 'respect', + aliases: ['f'], + group: 'fun', + memberName: 'respect', + description: 'Press F to pay respects.', + examples: ['uwu!respect', 'uwu!f'], + guildOnly: true, + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + msg.channel.send('Press F to pay respects.').then(m => { + m.react('🇫'); + msg.delete(); + }); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9mdW4vcmVzcGVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxVQUFXLFNBQVEsT0FBTztJQUM3QyxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLFNBQVM7WUFDZixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDZCxLQUFLLEVBQUUsS0FBSztZQUNaLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFdBQVcsRUFBRSwwQkFBMEI7WUFDdkMsUUFBUSxFQUFFLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQztZQUNsQyxTQUFTLEVBQUUsSUFBSTtZQUNmLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUNuRSxpQkFBaUIsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztTQUN0RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUc7UUFDSCxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsRCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2QsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKLENBQUMifQ==
\ No newline at end of file diff --git a/dist/commands/fun/say.js b/dist/commands/fun/say.js new file mode 100644 index 0000000..7dff14e --- /dev/null +++ b/dist/commands/fun/say.js @@ -0,0 +1,33 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +module.exports = class SayFun extends Command { + constructor(client) { + super(client, { + name: 'say', + group: 'fun', + memberName: 'say', + description: 'Allows you to speak as the bot.', + guildOnly: true, + args: [ + { + key: 'say', + prompt: 'What would you like to send?', + type: 'string' + } + ], + examples: ['uwu!say hi'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg, { say }) { + if (msg.member.hasPermission('KICK_MEMBERS')) { + msg.channel.send(say); + msg.delete(); + } + else { + msg.reply('Insufficent perms. ' + emoji.random()); + } + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2Z1bi9zYXkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUVuRCxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sTUFBTyxTQUFRLE9BQU87SUFDekMsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxLQUFLO1lBQ1gsS0FBSyxFQUFFLEtBQUs7WUFDWixVQUFVLEVBQUUsS0FBSztZQUNqQixXQUFXLEVBQUUsaUNBQWlDO1lBQzlDLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFO2dCQUNGO29CQUNJLEdBQUcsRUFBRSxLQUFLO29CQUNWLE1BQU0sRUFBRSw4QkFBOEI7b0JBQ3RDLElBQUksRUFBRSxRQUFRO2lCQUNqQjthQUNKO1lBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO1lBQ3hCLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUNuRSxpQkFBaUIsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztTQUN0RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRTtRQUNaLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDMUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEIsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2hCO2FBQU07WUFDSCxHQUFHLENBQUMsS0FBSyxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO0lBQ0wsQ0FBQztDQUNKLENBQUMifQ==
\ No newline at end of file diff --git a/dist/commands/fun/uwufy.js b/dist/commands/fun/uwufy.js new file mode 100644 index 0000000..0bb13eb --- /dev/null +++ b/dist/commands/fun/uwufy.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const discord_js_commando_1 = require("discord.js-commando"); +module.exports = class UwufyFun extends discord_js_commando_1.Command { + constructor(client) { + super(client, { + name: 'uwufy', + aliases: ['uwu', 'owofy', 'owo'], + group: 'fun', + memberName: 'uwufy', + description: 'Uwufys anything you send.', + args: [ + { + key: 'userMsg', + prompt: 'What would you like to uwufy?', + type: 'string' + } + ], + examples: ['uwu!say please uwufy this'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg, { userMsg }) { + var m = userMsg; + var u1 = m.replace('r', 'w'); + var u2 = u1.replace('l', 'w'); + msg.reply(u2); + msg.delete(); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXd1ZnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvZnVuL3V3dWZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsNkRBQThDO0FBRTlDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxRQUFTLFNBQVEsNkJBQU87SUFDM0MsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUM7WUFDaEMsS0FBSyxFQUFFLEtBQUs7WUFDWixVQUFVLEVBQUUsT0FBTztZQUNuQixXQUFXLEVBQUUsMkJBQTJCO1lBQ3hDLElBQUksRUFBRTtnQkFDRjtvQkFDSSxHQUFHLEVBQUUsU0FBUztvQkFDZCxNQUFNLEVBQUUsK0JBQStCO29CQUN2QyxJQUFJLEVBQUUsUUFBUTtpQkFDakI7YUFDSjtZQUNELFFBQVEsRUFBRSxDQUFDLDJCQUEyQixDQUFDO1lBQ3ZDLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUMxRCxpQkFBaUIsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztTQUMvRCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQVksRUFBRSxFQUFFLE9BQU8sRUFBRTtRQUN6QixJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7UUFDaEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNkLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQixDQUFDO0NBQ0osQ0FBQyJ9
\ No newline at end of file diff --git a/dist/commands/utility/botstatus.js b/dist/commands/utility/botstatus.js new file mode 100644 index 0000000..3cda673 --- /dev/null +++ b/dist/commands/utility/botstatus.js @@ -0,0 +1,130 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('discord.js'); +module.exports = class BotStatusUtility extends Command { + constructor(client) { + super(client, { + name: 'botstatus', + aliases: ['status', 'bs'], + group: 'utility', + memberName: 'botstatus', + description: 'Allows you to change the bots status', + args: [ + { + key: 'userChangeType', + prompt: 'would you like to change the status message or type?', + type: 'string' + }, + { + key: 'userActivityName', + prompt: 'what would u like the message 2 be?', + type: 'string' + }, + { + key: 'userActivityType', + prompt: 'what would u like the status type to be?', + type: 'string' + } + ], + guildOnly: true, + examples: [ + 's5n!botstatus type watching', + 's5n!status t w', + 's5n!status message youtube', + 's5n!bs m lol' + ] + }); + } + run(msg, { userActivityName, userActivityType }) { + if (msg.member.hasPermission('KICK_MEMBERS')) { + var activityType = this.client.user.presence.activities[0].type; + var activityName = this.client.user.presence.activities[0].name; + function activityTypeToWords() { + if (activityName == '0') { + var activityName = 'PLAYING'; + } + else if (activityName == '1') { + var activityName = 'STREAMING'; + } + else if (activityName == '2') { + var activityName = 'LISTENING'; + } + else if (activityName == '3') { + var activityName = 'WATCHING'; + } + } + if (userChangeType == 'reset' || userChangeType == 'r') { + this.client.user.setActivity('psycho ~uwu', { + type: 'LISTENING' + }); + msg.reply('status has been reset lol ' + emoji.random()); + } + else if (userChangeType == 'format' || userChangeType == 'f') { + msg.reply('\n`' + this.client.user.setActivity.toString() + '`'); + } + else if (userChangeType == 'message' || userChangeType == 'msg' || userChangeType == 'm') { + if (userChangeType == 'message') { + var m = userChangeType.join(' '); + var mf = m.slice(8, 22); + } + else if (userChangeType == 'msg') { + var m = userChangeType.join(' '); + var mf = m.slice(4, 22); + } + else if (userChangeType == 'm') { + var m = userChangeType.join(' '); + var mf = m.slice(2, 22); + } + if (mf == 'reset' || mf == 'r') { + this.client.user.setActivity('psycho ~uwu', { + type: activityType + }); + msg.reply('status message has been reset lol'); + } + else { + this.client.user.setActivity(mf, { + type: activityType + }); + } + } + else if (userChangeType == 'userChangeType' || args == 't') { + var m = userChangeType; + userChangeType.toLowerCase(); + if (userChangeType == 'playing' || userChangeType == 'p') { + var m = 'playing'; + this.client.user.setActivity(activityName, { + type: 'playing' + }); + } + else if (userChangeType == 'listening' || userChangeType == 'l') { + var m = 'LISTENING'; + this.client.user.setActivity(activityName, { + type: m + }); + } + else if (userChangeType == 'watching' || userChangeType == 'w') { + var m = 'WATCHING'; + this.client.user.setActivity(activityName, { + type: m + }); + } + else if (userChangeType == 'custom' || userChangeType == 'c') { + msg.reply('custom status is disabled due to discord api policies about self-botting :('); + } + else if (userChangeType == 'reset' || userChangeType == 'r') { + this.client.user.setActivity(activityName, { + type: 'LISTENING' + }); + msg.reply('status type has been reset lol'); + } + } + else if (!args) { + msg.reply('no arguments specified'); + } + } + else { + msg.reply('insufficent perms bruh'); + } + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90c3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3V0aWxpdHkvYm90c3RhdHVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRXBDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxnQkFBaUIsU0FBUSxPQUFPO0lBQ25ELFlBQVksTUFBTTtRQUNkLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDVixJQUFJLEVBQUUsV0FBVztZQUNqQixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO1lBQ3pCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLFdBQVcsRUFBRSxzQ0FBc0M7WUFDbkQsSUFBSSxFQUFFO2dCQUNGO29CQUNJLEdBQUcsRUFBRSxnQkFBZ0I7b0JBQ3JCLE1BQU0sRUFBRSxzREFBc0Q7b0JBQzlELElBQUksRUFBRSxRQUFRO2lCQUNqQjtnQkFDRDtvQkFDSSxHQUFHLEVBQUUsa0JBQWtCO29CQUN2QixNQUFNLEVBQUUscUNBQXFDO29CQUM3QyxJQUFJLEVBQUUsUUFBUTtpQkFDakI7Z0JBQ0Q7b0JBQ0ksR0FBRyxFQUFFLGtCQUFrQjtvQkFDdkIsTUFBTSxFQUFFLDBDQUEwQztvQkFDbEQsSUFBSSxFQUFFLFFBQVE7aUJBQ2pCO2FBQ0o7WUFDRCxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRTtnQkFDTiw2QkFBNkI7Z0JBQzdCLGdCQUFnQjtnQkFDaEIsNEJBQTRCO2dCQUM1QixjQUFjO2FBQ2pCO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRTtRQUMzQyxJQUFJ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
\ No newline at end of file diff --git a/dist/commands/utility/btc.js b/dist/commands/utility/btc.js new file mode 100644 index 0000000..1f2c102 --- /dev/null +++ b/dist/commands/utility/btc.js @@ -0,0 +1,41 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const discord_js_commando_1 = require("discord.js-commando"); +const emoji_random_1 = __importDefault(require("emoji-random")); +const btc_value_1 = __importDefault(require("btc-value")); +btc_value_1.default.setApiKey('a43419ce-fc59-4951-8af9-20c5e36ef73f'); +module.exports = class BTCUtility extends discord_js_commando_1.Command { + constructor(client) { + super(client, { + name: 'btc', + aliases: ['bitcoin', 'crypto'], + group: 'utility', + memberName: 'btc', + description: 'Allows you to check current Bitcoin price.', + args: [ + { + key: 'currencyName', + prompt: 'What currency could you like to see it in? (USD, AUD, CAD)', + type: 'string' + } + ], + examples: [ + 'uwu!bitcoin aud', + 'uwu!crypto cad', + 'uwu!btc usd' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg, { currencyName }) { + currencyName = currencyName.toUpperCase(); + btc_value_1.default({ isDecimal: true, currencyCode: currencyName }).then(value => { + msg.reply('The current price of *Bitcoin* in **' + currencyName + '** is **' + value + '**. ' + emoji_random_1.default.random()); + }); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3V0aWxpdHkvYnRjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkRBQThDO0FBQzlDLGdFQUFpQztBQUNqQywwREFBNEI7QUFDNUIsbUJBQUcsQ0FBQyxTQUFTLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUV0RCxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sVUFBVyxTQUFRLDZCQUFPO0lBQzdDLFlBQVksTUFBTTtRQUNkLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDVixJQUFJLEVBQUUsS0FBSztZQUNYLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7WUFDOUIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsVUFBVSxFQUFFLEtBQUs7WUFDakIsV0FBVyxFQUFFLDRDQUE0QztZQUN6RCxJQUFJLEVBQUU7Z0JBQ0Y7b0JBQ0ksR0FBRyxFQUFFLGNBQWM7b0JBQ25CLE1BQU0sRUFBRSw0REFBNEQ7b0JBQ3BFLElBQUksRUFBRSxRQUFRO2lCQUNqQjthQUNKO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLGlCQUFpQjtnQkFDakIsZ0JBQWdCO2dCQUNoQixhQUFhO2FBQ2hCO1lBQ0QsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQzFELGlCQUFpQixFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1NBQy9ELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBWSxFQUFFLEVBQUUsWUFBWSxFQUFFO1FBQzlCLFlBQVksR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsbUJBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlELEdBQUcsQ0FBQyxLQUFLLENBQUMsc0NBQXNDLEdBQUcsWUFBWSxHQUFHLFVBQVUsR0FBRyxLQUFLLEdBQUcsTUFBTSxHQUFHLHNCQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSixDQUFDIn0=
\ No newline at end of file diff --git a/dist/commands/utility/btcchange.js b/dist/commands/utility/btcchange.js new file mode 100644 index 0000000..513fce4 --- /dev/null +++ b/dist/commands/utility/btcchange.js @@ -0,0 +1,51 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const btc = require('btc-value'); +btc.setApiKey('a43419ce-fc59-4951-8af9-20c5e36ef73f'); +module.exports = class BTCChangeUtility extends Command { + constructor(client) { + super(client, { + name: 'btcchange', + aliases: ['bitcoinchange', 'cryptochange', 'btcc'], + group: 'utility', + memberName: 'btcchange', + description: 'Allows you to check the fluctuation in Bitcoin prices within a specified amount of time.', + args: [ + { + key: 'timeAmount', + prompt: 'What time range do you want to check the fluction amount in? (day, hour, week)', + type: 'string' + } + ], + examples: [ + 'uwu!btcchange day', + 'uwu!bitcoinchange hour', + 'uwu!cryptochange week', + 'uwu!btcc day' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg, { timeAmount }) { + if (timeAmount == 'day') { + btc.getPercentageChangeLastDay().then(percentage => { + msg.reply('The fluction amount of *Bitcoin* in the last **' + timeAmount + '** is **' + percentage + '%**. ' + emoji.random()); + }); + } + else if (timeAmount == 'hour') { + btc.getPercentageChangeLastHour().then(percentage => { + msg.reply('The fluction amount of *Bitcoin* in the last **' + timeAmount + '** is **' + percentage + '%**. ' + emoji.random()); + }); + } + else if (timeAmount == 'week') { + btc.getPercentageChangeLastWeek().then(percentage => { + msg.reply('The fluction amount of *Bitcoin* in the last **' + timeAmount + '** is **' + percentage + '%**. ' + emoji.random()); + }); + } + else { + msg.reply('*' + timeAmount + '* is not a valid range. ' + emoji.random()); + } + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRjY2hhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3V0aWxpdHkvYnRjY2hhbmdlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLEdBQUcsQ0FBQyxTQUFTLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUV0RCxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sZ0JBQWlCLFNBQVEsT0FBTztJQUNuRCxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLFdBQVc7WUFDakIsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUM7WUFDbEQsS0FBSyxFQUFFLFNBQVM7WUFDaEIsVUFBVSxFQUFFLFdBQVc7WUFDdkIsV0FBVyxFQUFFLDBGQUEwRjtZQUN2RyxJQUFJLEVBQUU7Z0JBQ0Y7b0JBQ0ksR0FBRyxFQUFFLFlBQVk7b0JBQ2pCLE1BQU0sRUFBRSxnRkFBZ0Y7b0JBQ3hGLElBQUksRUFBRSxRQUFRO2lCQUNqQjthQUNKO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLG1CQUFtQjtnQkFDbkIsd0JBQXdCO2dCQUN4Qix1QkFBdUI7Z0JBQ3ZCLGNBQWM7YUFDakI7WUFDRCxlQUFlLEVBQUUsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUM7WUFDbkUsaUJBQWlCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUM7U0FDdEQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUU7UUFDbkIsSUFBSSxVQUFVLElBQUksS0FBSyxFQUFFO1lBQ3JCLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDL0MsR0FBRyxDQUFDLEtBQUssQ0FBQyxpREFBaUQsR0FBRyxVQUFVLEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbkksQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFNLElBQUksVUFBVSxJQUFJLE1BQU0sRUFBRTtZQUM3QixHQUFHLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ2hELEdBQUcsQ0FBQyxLQUFLLENBQUMsaURBQWlELEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxVQUFVLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ25JLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTSxJQUFJLFVBQVUsSUFBSSxNQUFNLEVBQUU7WUFDN0IsR0FBRyxDQUFDLDJCQUEyQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNoRCxHQUFHLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxHQUFHLFVBQVUsR0FBRyxVQUFVLEdBQUcsVUFBVSxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNuSSxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxVQUFVLEdBQUcsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDN0U7SUFDTCxDQUFDO0NBQ0osQ0FBQyJ9
\ No newline at end of file diff --git a/dist/commands/utility/clear.js b/dist/commands/utility/clear.js new file mode 100644 index 0000000..0efd8f7 --- /dev/null +++ b/dist/commands/utility/clear.js @@ -0,0 +1,81 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class ClearUtility extends Command { + constructor(client) { + super(client, { + name: 'clear', + aliases: ['delete', 'del', 'c', 'd'], + group: 'utility', + memberName: 'clear', + description: 'Clears a specified amount of messages.', + guildOnly: true, + args: [ + { + key: 'deleteAmount', + prompt: 'How many messages would you like to delete?', + type: 'integer' + } + ], + examples: [ + 'uwu!clear 23', + 'uwu!delete 75', + 'uwu!del 32', + 'uwu!c 45', + 'uwu!d 84' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'MANAGE_MESSAGES'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'MANAGE_MESSAGES'] + }); + } + run(msg, { deleteAmount }) { + return __awaiter(this, void 0, void 0, function* () { + if (msg.member.hasPermission('MANAGE_MESSAGES')) { + if (!deleteAmount) { + msg.reply('You haven\'t specified an amount of messages which should be deleted. ' + emoji.random()).then(deleteNotificationMessage => { + deleteNotificationMessage.delete({ timeout: 1000 }); + }); + } + else if (isNaN(deleteAmount)) { + msg.reply('The amount parameter isn\'t a number. ' + emoji.random()).then(deleteNotificationMessage => { + deleteNotificationMessage.delete({ timeout: 1000 }); + }); + } + else if (deleteAmount > 100) { + msg.reply('You can\'t delete more than 100 messages at once. ' + emoji.random()).then(deleteNotificationMessage => { + deleteNotificationMessage.delete({ timeout: 1000 }); + }); + } + else if (deleteAmount < 1) { + msg.reply('You have to delete at least 1 message. ' + emoji.random()).then(deleteNotificationMessage => { + deleteNotificationMessage.delete({ timeout: 1000 }); + }); + } + else { + var clearAmount = deleteAmount + 1; + yield msg.channel.messages.fetch({ + limit: clearAmount + }).then(messages => { + msg.channel.bulkDelete(messages); + }); + msg.reply('It\'s been deleted ~uwu ' + emoji.random()).then(deleteNotificationMessage => { + deleteNotificationMessage.delete({ timeout: 1000 }); + }); + } + } + else { + msg.reply('Insufficent perms. ' + emoji.random()); + } + }); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvdXRpbGl0eS9jbGVhci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sWUFBYSxTQUFRLE9BQU87SUFDL0MsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO1lBQ3BDLEtBQUssRUFBRSxTQUFTO1lBQ2hCLFVBQVUsRUFBRSxPQUFPO1lBQ25CLFdBQVcsRUFBRSx3Q0FBd0M7WUFDckQsU0FBUyxFQUFFLElBQUk7WUFDZixJQUFJLEVBQUU7Z0JBQ0Y7b0JBQ0ksR0FBRyxFQUFFLGNBQWM7b0JBQ25CLE1BQU0sRUFBRSw2Q0FBNkM7b0JBQ3JELElBQUksRUFBRSxTQUFTO2lCQUNsQjthQUNKO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLGNBQWM7Z0JBQ2QsZUFBZTtnQkFDZixZQUFZO2dCQUNaLFVBQVU7Z0JBQ1YsVUFBVTthQUNiO1lBQ0QsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixDQUFDO1lBQ3RGLGlCQUFpQixFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixDQUFDO1NBQ3pFLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFOztZQUMzQixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ2YsR0FBRyxDQUFDLEtBQUssQ0FBQyx3RUFBd0UsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsRUFBRTt3QkFDbEkseUJBQXlCLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3hELENBQUMsQ0FBQyxDQUFDO2lCQUNOO3FCQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUM1QixHQUFHLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO3dCQUNsRyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDeEQsQ0FBQyxDQUFDLENBQUM7aUJBQ047cUJBQU0sSUFBSSxZQUFZLEdBQUcsR0FBRyxFQUFFO29CQUMzQixHQUFHLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO3dCQUM5Ryx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDeEQsQ0FBQyxDQUFDLENBQUM7aUJBQ047cUJBQU0sSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO29CQUN6QixHQUFHLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO3dCQUNuRyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDeEQsQ0FBQyxDQUFDLENBQUM7aUJBQ047cUJBSUk7b0JBQ0QsSUFBSSxXQUFXLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQztvQkFLbkMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7d0JBQzdCLEtBQUssRUFBRSxXQUFXO3FCQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO3dCQUNmLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNyQyxDQUFDLENBQUMsQ0FBQztvQkFDSCxHQUFHLENBQUMsS0FBSyxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO3dCQUNwRix5QkFBeUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDeEQsQ0FBQyxDQUFDLENBQUM7aUJBQ047YUFDSjtpQkFBTTtnQkFDSCxHQUFHLENBQUMsS0FBSyxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2FBQ3JEO1FBQ0wsQ0FBQztLQUFBO0NBQ0osQ0FBQyJ9
\ No newline at end of file diff --git a/dist/commands/utility/membercount.js b/dist/commands/utility/membercount.js new file mode 100644 index 0000000..96b49a2 --- /dev/null +++ b/dist/commands/utility/membercount.js @@ -0,0 +1,30 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class MemberCountUtility extends Command { + constructor(client) { + super(client, { + name: 'membercount', + aliases: ['memberc', 'mcount', 'mc'], + group: 'utility', + memberName: 'membercount', + description: 'Tells you how many members are in the current server.', + throttling: { + usages: 5, + duration: 30 + }, + examples: [ + 'uwu!membercount', + 'uwu!memberc', + 'uwu!mcount', + 'uwu!mc' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + msg.reply(`There are **${msg.guild.memberCount}** members in **${msg.guild.name}**. ` + emoji.random()); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvdXRpbGl0eS9tZW1iZXJjb3VudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sa0JBQW1CLFNBQVEsT0FBTztJQUNyRCxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLGFBQWE7WUFDbkIsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUM7WUFDcEMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsVUFBVSxFQUFFLGFBQWE7WUFDekIsV0FBVyxFQUFFLHVEQUF1RDtZQUNwRSxVQUFVLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLEVBQUU7YUFDZjtZQUNELFFBQVEsRUFBRTtnQkFDTixpQkFBaUI7Z0JBQ2pCLGFBQWE7Z0JBQ2IsWUFBWTtnQkFDWixRQUFRO2FBQ1g7WUFDRCxlQUFlLEVBQUUsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUM7WUFDbkUsaUJBQWlCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUM7U0FDdEQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELEdBQUcsQ0FBQyxHQUFHO1FBQ0gsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxtQkFBbUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM1RyxDQUFDO0NBQ0osQ0FBQyJ9
\ No newline at end of file diff --git a/dist/commands/utility/server.js b/dist/commands/utility/server.js new file mode 100644 index 0000000..0acd0df --- /dev/null +++ b/dist/commands/utility/server.js @@ -0,0 +1,52 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); +module.exports = class ServerUtility extends Command { + constructor(client) { + super(client, { + name: 'server', + aliases: [ + 'serverinfo', + 'si', + 'server-info', + 'serverstats', + 'server-stats' + ], + group: 'utility', + memberName: 'server', + description: 'Gives you information about the current server.', + throttling: { + usages: 2, + duration: 60 + }, + guildOnly: true, + examples: [ + 'uwu!server', + 'uwu!serverinfo', + 'uwu!server-info', + 'uwu!serverstats', + 'uwu!server-stats', + 'uwu!si' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + var o = msg.guild.members.cache.filter(m => m.presence.status === 'online').size; + let embed = new MessageEmbed() + .setAuthor(`${msg.guild.name} - ${msg.guild.id}`, `${msg.guild.iconURL()}`, `https://discordapp.com/channels/${msg.guild.id}/${msg.guild.id}`) + .setDescription(`Here\'s all the information on \`${msg.guild.name}\``) + .setThumbnail(`${msg.guild.iconURL()}`) + .addField('Owner', `${msg.guild.owner}`, false) + .addField(`Members [${msg.guild.memberCount}]`, `${o} members are online.`, true) + .addField('Region', `${msg.guild.region}`, true) + .addField('Text channels', `${msg.guild.channels.filter(c => c.type === 'text').size}`, true) + .addField('Voice channels', `${msg.guild.channels.filter(c => c.type === 'voice').size}`, true) + .addField('Guild created', `${msg.guild.createdAt}`, false) + .addField(`${this.client.user.username} joined`, `${msg.guild.members.get('699473263998271489').joinedAt}`) + .setColor(0xFFCC4D); + msg.channel.send(embed); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3V0aWxpdHkvc2VydmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUUvQyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sYUFBYyxTQUFRLE9BQU87SUFDaEQsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxRQUFRO1lBQ2QsT0FBTyxFQUFFO2dCQUNMLFlBQVk7Z0JBQ1osSUFBSTtnQkFDSixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsY0FBYzthQUNqQjtZQUNELEtBQUssRUFBRSxTQUFTO1lBQ2hCLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLFdBQVcsRUFBRSxpREFBaUQ7WUFDOUQsVUFBVSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxDQUFDO2dCQUNULFFBQVEsRUFBRSxFQUFFO2FBQ2Y7WUFDRCxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRTtnQkFDTixZQUFZO2dCQUNaLGdCQUFnQjtnQkFDaEIsaUJBQWlCO2dCQUNqQixpQkFBaUI7Z0JBQ2pCLGtCQUFrQjtnQkFDbEIsUUFBUTthQUNYO1lBQ0QsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ25FLGlCQUFpQixFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1NBQ3RELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBRztRQUNILElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFakYsSUFBSSxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUU7YUFFekIsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxtQ0FBbUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUM3SSxjQUFjLENBQUMsb0NBQW9DLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7YUFDdEUsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2FBQ3RDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQzthQUM5QyxRQUFRLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUM7YUFDaEYsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDO2FBQy9DLFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQzthQUM1RixRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQzthQUM5RixRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLENBQUM7YUFDMUQsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUMxRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFeEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNKLENBQUMifQ==
\ No newline at end of file diff --git a/dist/commands/utility/servers.js b/dist/commands/utility/servers.js new file mode 100644 index 0000000..11b68b9 --- /dev/null +++ b/dist/commands/utility/servers.js @@ -0,0 +1,31 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const discord_js_commando_1 = require("discord.js-commando"); +const discord_js_1 = require("discord.js"); +const emoji_random_1 = __importDefault(require("emoji-random")); +module.exports = class ServersUtility extends discord_js_commando_1.Command { + constructor(client) { + super(client, { + name: 'servers', + aliases: ['servercount', 'scount', 'serverc'], + group: 'utility', + memberName: 'servers', + description: 'Tells you the amount of servers uwufy is in.', + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + msg.channel.send('Please wait..').then(m => { + m.edit(`** **`); + let emb = new discord_js_1.MessageEmbed() + .setDescription(`Currently running on 31${this.client.guilds.cache.size} server(s). ` + emoji_random_1.default.random()) + .setColor(0xFFCC4D); + msg.channel.send(emb); + }); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy91dGlsaXR5L3NlcnZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2REFBOEM7QUFDOUMsMkNBQW1EO0FBQ25ELGdFQUFpQztBQUVqQyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sY0FBZSxTQUFRLDZCQUFPO0lBQ2pELFlBQVksTUFBTTtRQUNkLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDVixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDO1lBQzdDLEtBQUssRUFBRSxTQUFTO1lBQ2hCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFdBQVcsRUFBRSw4Q0FBOEM7WUFDM0QsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQzFELGlCQUFpQixFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1NBQy9ELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBWTtRQUNaLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWhCLElBQUksR0FBRyxHQUFHLElBQUkseUJBQVksRUFBRTtpQkFDdkIsY0FBYyxDQUFDLDBCQUEwQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxjQUFjLEdBQUcsc0JBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDdEcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBRXZCLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKLENBQUMifQ==
\ No newline at end of file diff --git a/dist/commands/utility/uptime.js b/dist/commands/utility/uptime.js new file mode 100644 index 0000000..3713cbe --- /dev/null +++ b/dist/commands/utility/uptime.js @@ -0,0 +1,43 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const discord_js_commando_1 = require("discord.js-commando"); +const moment_1 = require("moment"); +require("moment-duration-format"); +const emoji_random_1 = __importDefault(require("emoji-random")); +const discord_js_1 = require("discord.js"); +class UptimeUtility extends discord_js_commando_1.Command { + constructor(client) { + super(client, { + name: 'uptime', + aliases: ['ut'], + group: 'utility', + memberName: 'uptime', + description: 'Tells you how long the bot has been online.', + throttling: { + usages: 5, + duration: 30 + }, + examples: [ + 'uwu!uptime', + 'uwu!ut' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + const duration = moment_1.duration(this.client.uptime).format(" D [days], H [hrs], m [mins], s [secs]"); + msg.channel.send('Please wait..').then(m => { + m.edit(`** **`); + let emb = new discord_js_1.MessageEmbed() + .setDescription('uwufier has been up for ' + duration + '. ' + emoji_random_1.default.random()) + .setColor(0xFFCC4D); + msg.channel.send(emb); + }); + } +} +exports.default = UptimeUtility; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXB0aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3V0aWxpdHkvdXB0aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkRBQThDO0FBQzlDLG1DQUErQztBQUMvQyxrQ0FBZ0M7QUFFaEMsZ0VBQWlDO0FBQ2pDLDJDQUFtRDtBQUVuRCxNQUFxQixhQUFjLFNBQVEsNkJBQU87SUFDOUMsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxRQUFRO1lBQ2QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ2YsS0FBSyxFQUFFLFNBQVM7WUFDaEIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsV0FBVyxFQUFFLDZDQUE2QztZQUMxRCxVQUFVLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLEVBQUU7YUFDZjtZQUNELFFBQVEsRUFBRTtnQkFDTixZQUFZO2dCQUNaLFFBQVE7YUFDWDtZQUNELGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUMxRCxpQkFBaUIsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztTQUMvRCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQVk7UUFDWixNQUFNLFFBQVEsR0FBRyxpQkFBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDaEcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFaEIsSUFBSSxHQUFHLEdBQUcsSUFBSSx5QkFBWSxFQUFFO2lCQUN2QixjQUFjLENBQUMsMEJBQTBCLEdBQUcsUUFBUSxHQUFHLElBQUksR0FBRyxzQkFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUM3RSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7WUFFdkIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFoQ0QsZ0NBZ0NDIn0=
\ No newline at end of file diff --git a/dist/commands/voice/abee.js b/dist/commands/voice/abee.js new file mode 100644 index 0000000..307afad --- /dev/null +++ b/dist/commands/voice/abee.js @@ -0,0 +1,167 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const ytdl_core_1 = __importDefault(require("ytdl-core")); +const discord_js_commando_1 = require("discord.js-commando"); +const discord_js_1 = require("discord.js"); +const simple_youtube_api_1 = __importDefault(require("simple-youtube-api")); +const config_json_1 = __importDefault(require("../../config.json")); +const youtube = new simple_youtube_api_1.default(config_json_1.default['yt-api-key']); +const emoji_random_1 = __importDefault(require("emoji-random")); +module.exports = class ABeeVoice extends discord_js_commando_1.Command { + constructor(client) { + super(client, { + name: 'abee', + aliases: ['a-bee'], + group: 'voice', + memberName: 'abee', + description: 'A bee 🐝', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + examples: ['uwu!abee', 'uwu!a-bee'], + }); + } + run(msg) { + return __awaiter(this, void 0, void 0, function* () { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.say('Please join a channel and try again. ' + emoji_random_1.default.random()); + const id = 'lvdnhWhQBdo'; + const video = yield youtube.getVideoByID(id).catch(function () { + return msg.say('There was a problem getting the video you provided. ' + emoji_random_1.default.random()); + }); + msg.guild.musicData.queue.push(this.constructSongObj(video, voiceChannel)); + if (msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined') { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + return msg.say(`${video.title} added to queue. ` + emoji_random_1.default.random()); + } + var that = this; + msg.channel + .awaitMessages(function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + }) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') + return songEmbed.delete(); + youtube + .getVideoByID(videos[videoIndex - 1].id) + .then(function (video) { + msg.guild.musicData.queue.push(that.constructSongObj(video, voiceChannel)); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say(`${video.title} added to queue. ` + emoji_random_1.default.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say('An error has occured when trying to get the video ID from YouTube. ' + emoji_random_1.default.random()); + }); + }); + }); + } + playSong(queue, msg) { + const classThis = this; + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play(ytdl_core_1.default(queue[0].url, { + quality: 'highestaudio', + highWaterMark: 1024 * 1024 * 10 + })) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new discord_js_1.MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xF97DAE) + .addField('Now playing:', queue[0].title) + .addField('Duration:', queue[0].duration); + if (queue[1]) + videoEmbed.addField('Next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } + else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('Can\'t play song. ' + emoji_random_1.default.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + let duration = this.formatDuration(video.duration); + if (duration == '00:00') + duration = 'Live Stream'; + return { + url: `https://www.youtube.com/watch?v=${video.raw.id}`, + title: video.title, + duration, + thumbnail: video.thumbnails.high.url, + voiceChannel + }; + } + formatDuration(durationObj) { + const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${durationObj.minutes ? durationObj.minutes : '00'}:${(durationObj.seconds < 10) + ? ('0' + durationObj.seconds) + : (durationObj.seconds + ? durationObj.seconds + : '00')}`; + return duration; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy92b2ljZS9hYmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMERBQTZCO0FBQzdCLDZEQUE4QztBQUM5QywyQ0FBbUQ7QUFDbkQsNEVBQXlDO0FBRXpDLG9FQUF1QztBQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUFPLENBQUMscUJBQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ2xELGdFQUFpQztBQUVqQyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sU0FBVSxTQUFRLDZCQUFPO0lBQzVDLFlBQVksTUFBTTtRQUNkLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztZQUNsQixLQUFLLEVBQUUsT0FBTztZQUNkLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUNoRixlQUFlLEVBQUUsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUM7WUFDMUQsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQztTQUN0QyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0ssR0FBRyxDQUFDLEdBQVk7O1lBQ2xCLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWTtnQkFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsdUNBQXVDLEdBQUcsc0JBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRTVGLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUN6QixNQUFNLEtBQUssR0FB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
\ No newline at end of file diff --git a/dist/commands/voice/itemshop.js b/dist/commands/voice/itemshop.js new file mode 100644 index 0000000..0f12529 --- /dev/null +++ b/dist/commands/voice/itemshop.js @@ -0,0 +1,176 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const ytdl_core_1 = __importDefault(require("ytdl-core")); +const discord_js_commando_1 = require("discord.js-commando"); +const discord_js_1 = require("discord.js"); +const simple_youtube_api_1 = __importDefault(require("simple-youtube-api")); +const config_json_1 = __importDefault(require("../../config.json")); +const youtube = new simple_youtube_api_1.default(config_json_1.default['yt-api-key']); +const emoji_random_1 = __importDefault(require("emoji-random")); +module.exports = class ABeeVoice extends discord_js_commando_1.Command { + constructor(client) { + super(client, { + name: 'itemshop', + aliases: ['item-shop'], + group: 'voice', + memberName: 'itemshop', + description: 'Use code \'Frozen\' in the Fortnite item shop.', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + examples: ['uwu!itemshop', 'uwu!item-shop'] + }); + } + run(msg) { + return __awaiter(this, void 0, void 0, function* () { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.say('Please join a channel and try again. ' + emoji_random_1.default.random()); + const id = 'pBiI1hTwU7E'; + const video = yield youtube.getVideoByID(id).catch(function () { + return msg.say('There was a problem getting the video you provided. ' + emoji_random_1.default.random()); + }); + msg.guild.musicData.queue.push(this.constructSongObj(video, voiceChannel)); + if (msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined') { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + return msg.say(`${video.title} added to queue. ` + emoji_random_1.default.random()); + } + var that = this; + msg.channel + .awaitMessages(function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + }) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') + return songEmbed.delete(); + youtube + .getVideoByID(videos[videoIndex - 1].id) + .then(function (video) { + msg.guild.musicData.queue.push(that.constructSongObj(video, voiceChannel)); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + msg.say(`${video.title} added to queue. ` + emoji_random_1.default.random()); + return; + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say('An error has occured when trying to get the video ID from Youtube.' + emoji_random_1.default.random()); + }); + }); + }); + } + playSong(queue, msg) { + const classThis = this; + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play(ytdl_core_1.default(queue[0].url, { + quality: 'highestaudio', + highWaterMark: 1024 * 1024 * 10 + })) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new discord_js_1.MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xF97DAE) + .addField('Now playing:', queue[0].title) + .addField('Duration:', queue[0].duration); + if (queue[1]) + videoEmbed.addField('Next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } + else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('Can\'t play song. ' + emoji_random_1.default.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + function timeCheck() { + if (dispatcher.streamTime >= 6000) { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + } + } + setInterval(timeCheck, 500); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + let duration = this.formatDuration(video.duration); + if (duration == '00:00') + duration = 'Live Stream'; + return { + url: `https://www.youtube.com/watch?v=${video.raw.id}`, + title: video.title, + duration, + thumbnail: video.thumbnails.high.url, + voiceChannel + }; + } + formatDuration(durationObj) { + const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${durationObj.minutes ? durationObj.minutes : '00'}:${(durationObj.seconds < 10) + ? ('0' + durationObj.seconds) + : (durationObj.seconds + ? durationObj.seconds + : '00')}`; + return duration; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXNob3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvdm9pY2UvaXRlbXNob3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBNkI7QUFDN0IsNkRBQThDO0FBQzlDLDJDQUFtRDtBQUNuRCw0RUFBeUM7QUFFekMsb0VBQXVDO0FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksNEJBQU8sQ0FBQyxxQkFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDbEQsZ0VBQWlDO0FBRWpDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxTQUFVLFNBQVEsNkJBQU87SUFDNUMsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxVQUFVO1lBQ2hCLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztZQUN0QixLQUFLLEVBQUUsT0FBTztZQUNkLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLFdBQVcsRUFBRSxnREFBZ0Q7WUFDN0QsU0FBUyxFQUFFLElBQUk7WUFDZixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ2hGLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUMxRCxRQUFRLEVBQUUsQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDO1NBQzlDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDSyxHQUFHLENBQUMsR0FBWTs7WUFDbEIsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzlDLElBQUksQ0FBQyxZQUFZO2dCQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsR0FBRyxzQkFBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFNUYsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDO1lBQ3pCLE1B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
\ No newline at end of file diff --git a/dist/commands/voice/join.js b/dist/commands/voice/join.js new file mode 100644 index 0000000..fdfcf57 --- /dev/null +++ b/dist/commands/voice/join.js @@ -0,0 +1,34 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class JoinVoice extends Command { + constructor(client) { + super(client, { + name: 'join', + group: 'voice', + memberName: 'join', + description: 'Joins your current voice channel.', + throttling: { + usages: 2, + duration: 5 + }, + guildOnly: true, + examples: ['uwu!join'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + if (msg.guild.musicData.isPlaying == false && msg.member.voice.channel) { + msg.member.voice.channel.join(); + msg.reply('Succesfully joined voice channel. ' + emoji.random()); + } + else if (msg.guild.musicData.isPlaying == false) { + msg.reply('I\'m already in voice channel. ' + emoji.random()); + } + else if (!msg.member.voice.channel) { + msg.reply('Please join a channel and try again. ' + emoji.random()); + } + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy92b2ljZS9qb2luLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxTQUFVLFNBQVEsT0FBTztJQUM1QyxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsT0FBTztZQUNkLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFdBQVcsRUFBRSxtQ0FBbUM7WUFDaEQsVUFBVSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxDQUFDO2dCQUNULFFBQVEsRUFBRSxDQUFDO2FBQ2Q7WUFDRCxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQztZQUN0QixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ2hGLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztTQUM3RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUc7UUFDSCxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ3BFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxHQUFHLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3BFO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksS0FBSyxFQUFFO1lBQy9DLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDakU7YUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ2xDLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUNBQXVDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdkU7SUFDTCxDQUFDO0NBQ0osQ0FBQyJ9
\ No newline at end of file diff --git a/dist/commands/voice/leave.js b/dist/commands/voice/leave.js new file mode 100644 index 0000000..ce849a4 --- /dev/null +++ b/dist/commands/voice/leave.js @@ -0,0 +1,33 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class LeaveVoice extends Command { + constructor(client) { + super(client, { + name: 'leave', + aliases: ['end', 'stop'], + group: 'voice', + memberName: 'leave', + description: 'Leaves voice channel and stops currently playing audio.', + guildOnly: true, + examples: ['uwu!leave', 'uwu!end', 'uwu!stop'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.reply('Please join a channel and try again. ' + emoji.random()); + if (typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + if (!msg.guild.musicData.queue) + return msg.say('There aren\'t any songs in the current queue. ' + emoji.random()); + msg.guild.musicData.songDispatcher.end(); + msg.guild.musicData.queue.length = 0; + return; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvdm9pY2UvbGVhdmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNuRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFdEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLFVBQVcsU0FBUSxPQUFPO0lBQzdDLFlBQVksTUFBTTtRQUNkLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDVixJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDeEIsS0FBSyxFQUFFLE9BQU87WUFDZCxVQUFVLEVBQUUsT0FBTztZQUNuQixXQUFXLEVBQUUseURBQXlEO1lBQ3RFLFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUM7WUFDOUMsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUNoRixlQUFlLEVBQUUsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUM7U0FDN0QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELEdBQUcsQ0FBQyxHQUFHO1FBQ0gsSUFBSSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzVDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTlGLElBQ0ksT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLElBQUksV0FBVztZQUN4RCxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLElBQUksSUFBSSxFQUM1QztZQUNFLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNuRjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQzFCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxnREFBZ0QsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RixHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDckMsT0FBTztJQUNYLENBQUM7Q0FDSixDQUFDIn0=
\ No newline at end of file diff --git a/dist/commands/voice/loop.js b/dist/commands/voice/loop.js new file mode 100644 index 0000000..4df409c --- /dev/null +++ b/dist/commands/voice/loop.js @@ -0,0 +1,31 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class LoopVoice extends Command { + constructor(client) { + super(client, { + name: 'loop', + aliases: ['repeat'], + group: 'voice', + memberName: 'loop', + description: 'Loops currently playing audio.', + guildOnly: true, + examples: ['uwu!loop', 'uwu!repeat'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.reply('Please join a channel and try again. ' + emoji.random()); + if (typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + msg.channel.send(`${msg.guild.musicData.nowPlaying.title} added to queue. ` + emoji.random()); + msg.guild.musicData.queue.unshift(msg.guild.musicData.nowPlaying); + return; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy92b2ljZS9sb29wLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxTQUFVLFNBQVEsT0FBTztJQUM1QyxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDbkIsS0FBSyxFQUFFLE9BQU87WUFDZCxVQUFVLEVBQUUsTUFBTTtZQUNsQixXQUFXLEVBQUUsZ0NBQWdDO1lBQzdDLFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztZQUNwQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ2hGLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztTQUM3RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUc7UUFDSCxJQUFJLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUNBQXVDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFOUYsSUFDSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsSUFBSSxXQUFXO1lBQ3hELEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQzVDO1lBQ0UsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ25GO1FBQ0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ1osR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQzlFLENBQUM7UUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xFLE9BQU87SUFDWCxDQUFDO0NBQ0osQ0FBQyJ9
\ No newline at end of file diff --git a/dist/commands/voice/minecraft.js b/dist/commands/voice/minecraft.js new file mode 100644 index 0000000..3c71506 --- /dev/null +++ b/dist/commands/voice/minecraft.js @@ -0,0 +1,177 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const ytdl_core_1 = __importDefault(require("ytdl-core")); +const discord_js_commando_1 = require("discord.js-commando"); +const discord_js_1 = require("discord.js"); +const simple_youtube_api_1 = __importDefault(require("simple-youtube-api")); +const config_json_1 = __importDefault(require("../../config.json")); +const youtube = new simple_youtube_api_1.default(config_json_1.default['yt-api-key']); +const emoji_random_1 = __importDefault(require("emoji-random")); +module.exports = class MinecraftVoice extends discord_js_commando_1.Command { + constructor(client) { + super(client, { + name: 'minecraft', + aliases: ['minecraftsountrack', 'minecraft-soundtrack', 'mcs', 'mc-s'], + group: 'voice', + memberName: 'minecraft', + description: 'Plays the Minecraft soundtrack.', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + examples: [ + 'uwu!minecraft', + 'uwu!minecraftsountrack', + 'uwu!minecraft-soundtrack', + 'uwu!mcs', + 'uwu!mc-s' + ] + }); + } + run(msg) { + return __awaiter(this, void 0, void 0, function* () { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.say('Join a channel and try again. ' + emoji_random_1.default.random()); + const playlist = yield youtube.getPlaylist('https://www.youtube.com/watch?v=05UM-i4PuOY&list=PLxOTV5xn7n1i2HcKtRBthP2loWjrBGAIY').catch(function () { + return msg.say('There was a problem getting the soundtrack. ' + emoji_random_1.default.random()); + }); + const videosObj = yield playlist.getVideos(24).catch(function () { + return msg.say('There was a problem getting the soundtrack. ' + emoji_random_1.default.random()); + }); + for (let i = 0; i < videosObj.length; i++) { + const video = yield videosObj[i].fetch(); + msg.guild.musicData.queue.push(this.constructSongObj(video, voiceChannel)); + } + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + return msg.say('Now playing the Minecraft soundtrack. ' + emoji_random_1.default.random()); + } + var that = this; + msg.channel + .awaitMessages(function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + }) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') + return songEmbed.delete(); + youtube + .getVideoByID(videos[videoIndex - 1].id) + .then(function (video) { + msg.guild.musicData.queue.push(that.constructSongObj(video, voiceChannel)); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say('Now playing the Minecraft soundtrack. ' + emoji_random_1.default.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say('An error has occured when trying to get the video ID from YouTube. ' + emoji_random_1.default.random()); + }); + }); + }); + } + playSong(queue, msg) { + const classThis = this; + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play(ytdl_core_1.default(queue[0].url, { + quality: 'highestaudio', + highWaterMark: 1024 * 1024 * 10 + })) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new discord_js_1.MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xFFCC4D) + .addField('Now Playing:', queue[0].title) + .addField('Duration:', queue[0].duration); + if (queue[1]) + videoEmbed.addField('Next Song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } + else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('Can\'t play soundtrack. ' + emoji_random_1.default.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + let duration = this.formatDuration(video.duration); + if (duration == '00:00') + duration = 'Live Stream'; + return { + url: `https://www.youtube.com/watch?v=${video.raw.id}`, + title: video.title, + duration, + thumbnail: video.thumbnails.high.url, + voiceChannel + }; + } + formatDuration(durationObj) { + const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${durationObj.minutes ? durationObj.minutes : '00'}:${(durationObj.seconds < 10) + ? ('0' + durationObj.seconds) + : (durationObj.seconds + ? durationObj.seconds + : '00')}`; + return duration; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluZWNyYWZ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3ZvaWNlL21pbmVjcmFmdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLDBEQUE2QjtBQUM3Qiw2REFBOEM7QUFDOUMsMkNBQTBDO0FBQzFDLDRFQUF5QztBQUV6QyxvRUFBdUM7QUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSw0QkFBTyxDQUFDLHFCQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNsRCxnRUFBaUM7QUFFakMsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLGNBQWUsU0FBUSw2QkFBTztJQUNqRCxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLFdBQVc7WUFDakIsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUN0RSxLQUFLLEVBQUUsT0FBTztZQUNkLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLFdBQVcsRUFBRSxpQ0FBaUM7WUFDOUMsU0FBUyxFQUFFLElBQUk7WUFDZixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ2hGLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUMxRCxRQUFRLEVBQUU7Z0JBQ04sZUFBZTtnQkFDZix3QkFBd0I7Z0JBQ3hCLDBCQUEwQjtnQkFDMUIsU0FBUztnQkFDVCxVQUFVO2FBQ2I7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0ssR0FBRyxDQUFDLEdBQUc7O1lBQ1QsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzlDLElBQUksQ0FBQyxZQUFZO2dCQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0Ms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
\ No newline at end of file diff --git a/dist/commands/voice/pause.js b/dist/commands/voice/pause.js new file mode 100644 index 0000000..fd1cb47 --- /dev/null +++ b/dist/commands/voice/pause.js @@ -0,0 +1,29 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class PauseVoice extends Command { + constructor(client) { + super(client, { + name: 'pause', + group: 'voice', + memberName: 'pause', + description: 'Pauses audio of previously playing.', + guildOnly: true, + examples: ['uwu!pause'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.reply('Please join a channel and try again. ' + emoji.random()); + if (typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + msg.say('Song paused :pause_button:'); + msg.guild.musicData.songDispatcher.pause(); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF1c2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvdm9pY2UvcGF1c2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNuRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFdEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLFVBQVcsU0FBUSxPQUFPO0lBQzdDLFlBQVksTUFBTTtRQUNkLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDVixJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxPQUFPO1lBQ2QsVUFBVSxFQUFFLE9BQU87WUFDbkIsV0FBVyxFQUFFLHFDQUFxQztZQUNsRCxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQztZQUN2QixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ2hGLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztTQUM3RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUc7UUFDSCxJQUFJLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUNBQXVDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFOUYsSUFDSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsSUFBSSxXQUFXO1lBQ3hELEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQzVDO1lBQ0UsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ25GO1FBRUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBRXRDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0NBQ0osQ0FBQyJ9
\ No newline at end of file diff --git a/dist/commands/voice/play.js b/dist/commands/voice/play.js new file mode 100644 index 0000000..29595d2 --- /dev/null +++ b/dist/commands/voice/play.js @@ -0,0 +1,232 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const ytdl_core_1 = __importDefault(require("ytdl-core")); +const discord_js_commando_1 = require("discord.js-commando"); +const discord_js_1 = require("discord.js"); +const simple_youtube_api_1 = __importDefault(require("simple-youtube-api")); +const config_json_1 = __importDefault(require("../../config.json")); +const youtube = new simple_youtube_api_1.default(config_json_1.default['yt-api-key']); +const emoji_random_1 = __importDefault(require("emoji-random")); +module.exports = class PlayVoice extends discord_js_commando_1.Command { + constructor(client) { + super(client, { + name: 'play', + group: 'voice', + memberName: 'play', + description: 'Play the audio of a YouTube video in a voice channel.', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + args: [ + { + key: 'query', + prompt: 'What song would you like to hear?', + type: 'string', + validate: function (query) { + return query.length > 0 && query.length < 200; + } + } + ], + examples: [ + 'uwu!play https://www.youtube.com/watch?v=dQw4w9WgXcQ', + 'uwu!play despacito' + ] + }); + } + run(msg, { query }) { + return __awaiter(this, void 0, void 0, function* () { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.say('Please join a channel and try again. ' + emoji_random_1.default.random()); + if (query.match(/^(?!.*\?.*\bv=)https:\/\/www\.youtube\.com\/.*\?.*\blist=.*$/)) { + const playlist = yield youtube.getPlaylist(query).catch(function () { + return msg.say('Playlist is either private or it does not exist. ' + emoji_random_1.default.random()); + }); + const videosObj = yield playlist.getVideos(10).catch(function () { + return msg.say('There was a problem getting one or more of the videos in the playlist. ' + emoji_random_1.default.random()); + }); + for (let i = 0; i < videosObj.length; i++) { + const video = yield videosObj[i].fetch(); + msg.guild.musicData.queue.push(this.constructSongObj(video, voiceChannel)); + } + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + return msg.say(`Playlist - :musical_note: ${playlist.title} :musical_note: has been added to queue. ` + emoji_random_1.default.random()); + } + } + if (query.match(/^(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+/)) { + query = query + .replace(/(>|<)/gi, '') + .split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/); + const id = query[2].split(/[^0-9a-z_\-]/i)[0]; + const video = yield youtube.getVideoByID(id).catch(function () { + return msg.say('There was a problem getting the video you provided. ' + emoji_random_1.default.random()); + }); + msg.guild.musicData.queue.push(this.constructSongObj(video, voiceChannel)); + if (msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined') { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + return msg.say(`${video.title} added to queue. ` + emoji_random_1.default.random()); + } + } + const videos = yield youtube.searchVideos(query, 5).catch(function () { + return msg.say('There was a problem searching the video you requested. ' + emoji_random_1.default.random()); + }); + if (videos.length < 5) { + return msg.say(`There was some trouble finding what you were looking for, please try again or be more specific. ` + emoji_random_1.default.random()); + } + const vidNameArr = []; + for (let i = 0; i < videos.length; i++) { + vidNameArr.push(`${i + 1}: ${videos[i].title}`); + } + vidNameArr.push('exit'); + const embed = new discord_js_1.MessageEmbed() + .setColor(0xFFCC4D) + .setTitle('Please choose a song (1 to 5) ' + emoji_random_1.default.random()) + .addField(``, '**Song #**' + vidNameArr[0]) + .addField(``, '**Song #**' + vidNameArr[1]) + .addField(``, '**Song #**' + vidNameArr[2]) + .addField(``, '**Song #**' + vidNameArr[3]) + .addField(``, '**Song #**' + vidNameArr[4]) + .addField(``, '**Exit selection**: ' + 'exit'); + var songEmbed = yield msg.channel.send({ + embed + }); + var that = this; + msg.channel + .awaitMessages(function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + }) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') + return songEmbed.delete(); + youtube + .getVideoByID(videos[videoIndex - 1].id) + .then(function (video) { + msg.guild.musicData.queue.push(that.constructSongObj(video, voiceChannel)); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say(`${video.title} added to queue. ` + emoji_random_1.default.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say('An error has occured when trying to get the video ID from YouTube. ' + emoji_random_1.default.random()); + }); + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say('Try again and enter a number between 1 and 5 or exit. ' + emoji_random_1.default.random()); + }); + }); + } + playSong(queue, msg) { + const classThis = this; + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play(ytdl_core_1.default(queue[0].url, { + quality: 'highestaudio', + highWaterMark: 1024 * 1024 * 10 + })) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new discord_js_1.MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xFFCC4D) + .addField('Now playing:', queue[0].title) + .addField('Duration:', queue[0].duration); + if (queue[1]) + videoEmbed.addField('Next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } + else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('Can\'t play song. ' + emoji_random_1.default.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + let duration = this.formatDuration(video.duration); + if (duration == '00:00') + duration = 'Live Stream'; + return { + url: `https://www.youtube.com/watch?v=${video.raw.id}`, + title: video.title, + duration, + thumbnail: video.thumbnails.high.url, + voiceChannel + }; + } + formatDuration(durationObj) { + const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${durationObj.minutes ? durationObj.minutes : '00'}:${(durationObj.seconds < 10) + ? ('0' + durationObj.seconds) + : (durationObj.seconds + ? durationObj.seconds + : '00')}`; + return duration; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy92b2ljZS9wbGF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMERBQTZCO0FBQzdCLDZEQUE4QztBQUM5QywyQ0FBbUQ7QUFDbkQsNEVBQXlDO0FBRXpDLG9FQUF1QztBQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUFPLENBQUMscUJBQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ2xELGdFQUFpQztBQUVqQyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sU0FBVSxTQUFRLDZCQUFPO0lBQzVDLFlBQVksTUFBTTtRQUNkLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxPQUFPO1lBQ2QsVUFBVSxFQUFFLE1BQU07WUFDbEIsV0FBVyxFQUFFLHVEQUF1RDtZQUNwRSxTQUFTLEVBQUUsSUFBSTtZQUNmLGlCQUFpQixFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLENBQUM7WUFDaEYsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQzFELElBQUksRUFBRTtnQkFDRjtvQkFDSSxHQUFHLEVBQUUsT0FBTztvQkFDWixNQUFNLEVBQUUsbUNBQW1DO29CQUMzQyxJQUFJLEVBQUUsUUFBUTtvQkFDZCxRQUFRLEVBQUUsVUFBVSxLQUFLO3dCQUNyQixPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO29CQUNsRCxDQUFDO2lCQUNKO2FBQ0o7WUFDRCxRQUFRLEVBQUU7Z0JBQ04sc0RBQXNEO2dCQUN0RCxvQkFBb0I7YUFDdkI7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0ssR0FBRyxDQUFDLEdBQVksRUFBRSxFQUFFLEtBQUssRUFBRTs7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
\ No newline at end of file diff --git a/dist/commands/voice/psycho.js b/dist/commands/voice/psycho.js new file mode 100644 index 0000000..46fd4d9 --- /dev/null +++ b/dist/commands/voice/psycho.js @@ -0,0 +1,166 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const ytdl_core_1 = __importDefault(require("ytdl-core")); +const discord_js_commando_1 = require("discord.js-commando"); +const discord_js_1 = require("discord.js"); +const simple_youtube_api_1 = __importDefault(require("simple-youtube-api")); +const config_json_1 = __importDefault(require("../../config.json")); +const youtube = new simple_youtube_api_1.default(config_json_1.default['yt-api-key']); +const emoji_random_1 = __importDefault(require("emoji-random")); +module.exports = class PsychoVoice extends discord_js_commando_1.Command { + constructor(client) { + super(client, { + name: 'psycho', + group: 'voice', + memberName: 'psycho', + description: 'Plays Psycho by Mase.', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + examples: ['uwu!psycho'] + }); + } + run(msg, { query }) { + return __awaiter(this, void 0, void 0, function* () { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.say('Please join a channel and try again. ' + emoji_random_1.default.random()); + const id = 'fnd_HSmAODs'; + const video = yield youtube.getVideoByID(id).catch(function () { + return msg.say('There was a problem getting the video you provided. ' + emoji_random_1.default.random()); + }); + msg.guild.musicData.queue.push(this.constructSongObj(video, voiceChannel)); + if (msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined') { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + return msg.say(`${video.title} added to queue. ` + emoji_random_1.default.random()); + } + var that = this; + msg.channel + .awaitMessages(function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + }) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') + return songEmbed.delete(); + youtube + .getVideoByID(videos[videoIndex - 1].id) + .then(function (video) { + msg.guild.musicData.queue.push(that.constructSongObj(video, voiceChannel)); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } + else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say(`${video.title} added to queue. ` + emoji_random_1.default.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say('An error has occured when trying to get the video ID from YouTube. ' + emoji_random_1.default.random()); + }); + }); + }); + } + playSong(queue, msg) { + const classThis = this; + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play(ytdl_core_1.default(queue[0].url, { + quality: 'highestaudio', + highWaterMark: 1024 * 1024 * 10 + })) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new discord_js_1.MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xFFCC4D) + .addField('Now playing:', queue[0].title) + .addField('Duration:', queue[0].duration); + if (queue[1]) + videoEmbed.addField('Next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } + else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('Can\'t play song ' + emoji_random_1.default.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + let duration = this.formatDuration(video.duration); + if (duration == '00:00') + duration = 'Live Stream'; + return { + url: `https://www.youtube.com/watch?v=${video.raw.id}`, + title: video.title, + duration, + thumbnail: video.thumbnails.high.url, + voiceChannel + }; + } + formatDuration(durationObj) { + const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${durationObj.minutes ? durationObj.minutes : '00'}:${(durationObj.seconds < 10) + ? ('0' + durationObj.seconds) + : (durationObj.seconds + ? durationObj.seconds + : '00')}`; + return duration; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHN5Y2hvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3ZvaWNlL3BzeWNoby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLDBEQUE2QjtBQUM3Qiw2REFBOEM7QUFDOUMsMkNBQW1EO0FBQ25ELDRFQUF5QztBQUV6QyxvRUFBdUM7QUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSw0QkFBTyxDQUFDLHFCQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNsRCxnRUFBaUM7QUFFakMsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLFdBQVksU0FBUSw2QkFBTztJQUM5QyxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsT0FBTztZQUNkLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLFdBQVcsRUFBRSx1QkFBdUI7WUFDcEMsU0FBUyxFQUFFLElBQUk7WUFDZixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ2hGLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUMxRCxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUM7U0FDM0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNLLEdBQUcsQ0FBQyxHQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUU7O1lBQzdCLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWTtnQkFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsdUNBQXVDLEdBQUcsc0JBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRTVGLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUN6QixNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FB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
\ No newline at end of file diff --git a/dist/commands/voice/queue.js b/dist/commands/voice/queue.js new file mode 100644 index 0000000..1228a53 --- /dev/null +++ b/dist/commands/voice/queue.js @@ -0,0 +1,52 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); +const emoji = require('emoji-random'); +module.exports = class QueueVoice extends Command { + constructor(client) { + super(client, { + name: 'queue', + aliases: [ + 'q', + 'song-list', + 'next-songs', + 'songlist', + 'nextsongs', + 'nextsong', + 'next-song' + ], + group: 'voice', + memberName: 'queue', + description: 'Displays the current queue.', + guildOnly: true, + examples: [ + 'uwu!queue', + 'uwu!q', + 'uwu!songlist', + 'uwu!song-list', + 'uwu!nextsong', + 'uwu!next-song', + 'uwu!nextsongs', + 'uwu!next-songs' + ], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + if (msg.guild.musicData.queue.length == 0) + return msg.say('There aren\'t any songs in the current queue. ' + emoji.random()); + const titleArray = []; + msg.guild.musicData.queue.map(obj => { + titleArray.push(obj.title); + }); + let queueEmbed = new MessageEmbed() + .setColor(0xFFCC4D) + .setTitle('Music Queue ' + emoji.random()); + for (let i = 0; i < titleArray.length; i++) { + queueEmbed.addField(``, `**${i + 1}**: ` + `${titleArray[i]}`); + } + return msg.say(queueEmbed); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvdm9pY2UvcXVldWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNuRCxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQy9DLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sVUFBVyxTQUFRLE9BQU87SUFDN0MsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFO2dCQUNMLEdBQUc7Z0JBQ0gsV0FBVztnQkFDWCxZQUFZO2dCQUNaLFVBQVU7Z0JBQ1YsV0FBVztnQkFDWCxVQUFVO2dCQUNWLFdBQVc7YUFDZDtZQUNELEtBQUssRUFBRSxPQUFPO1lBQ2QsVUFBVSxFQUFFLE9BQU87WUFDbkIsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRTtnQkFDTixXQUFXO2dCQUNYLE9BQU87Z0JBQ1AsY0FBYztnQkFDZCxlQUFlO2dCQUNmLGNBQWM7Z0JBQ2QsZUFBZTtnQkFDZixlQUFlO2dCQUNmLGdCQUFnQjthQUNuQjtZQUNELGlCQUFpQixFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLENBQUM7WUFDaEYsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1NBQzdELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBRztRQUNILElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxnREFBZ0QsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksVUFBVSxHQUFHLElBQUksWUFBWSxFQUFFO2FBQzlCLFFBQVEsQ0FBQyxRQUFRLENBQUM7YUFDbEIsUUFBUSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbkU7UUFDRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNKLENBQUMifQ==
\ No newline at end of file diff --git a/dist/commands/voice/remove.js b/dist/commands/voice/remove.js new file mode 100644 index 0000000..b73d1ed --- /dev/null +++ b/dist/commands/voice/remove.js @@ -0,0 +1,39 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class RemoveVoice extends Command { + constructor(client) { + super(client, { + name: 'remove', + group: 'voice', + memberName: 'remove', + description: 'Removes a song from the current queue.', + guildOnly: true, + args: [ + { + key: 'songNumber', + prompt: 'What song would you like to remove from the current queue?', + type: 'integer' + } + ], + examples: ['uwu!remove 2'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg, { songNumber }) { + if (songNumber < 1 && songNumber >= msg.guild.musicData.queue.length) { + return msg.reply('Please enter a valid song. ' + emoji.random()); + } + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.reply('Please join a channel and try again. ' + emoji.random()); + if (typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + msg.guild.musicData.queue.splice(songNumber - 1, 1); + return msg.say(`Removed song **#${songNumber}** from current queue. ` + emoji.random()); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3ZvaWNlL3JlbW92ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sV0FBWSxTQUFRLE9BQU87SUFDOUMsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxVQUFVLEVBQUUsUUFBUTtZQUNwQixXQUFXLEVBQUUsd0NBQXdDO1lBQ3JELFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFO2dCQUNGO29CQUNJLEdBQUcsRUFBRSxZQUFZO29CQUNqQixNQUFNLEVBQUUsNERBQTREO29CQUNwRSxJQUFJLEVBQUUsU0FBUztpQkFDbEI7YUFDSjtZQUNELFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQztZQUMxQixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ2hGLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztTQUM3RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRTtRQUNuQixJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksVUFBVSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDbEUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLDZCQUE2QixHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsSUFBSSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzVDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTlGLElBQ0ksT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLElBQUksV0FBVztZQUN4RCxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLElBQUksSUFBSSxFQUM1QztZQUNFLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNuRjtRQUVELEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLFVBQVUseUJBQXlCLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztDQUNKLENBQUMifQ==
\ No newline at end of file diff --git a/dist/commands/voice/resume.js b/dist/commands/voice/resume.js new file mode 100644 index 0000000..d2f68c0 --- /dev/null +++ b/dist/commands/voice/resume.js @@ -0,0 +1,29 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class ResumeVoice extends Command { + constructor(client) { + super(client, { + name: 'resume', + group: 'voice', + memberName: 'resume', + description: 'Resumes audio of previously paused.', + guildOnly: true, + examples: ['uwu!resume'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.reply('Please join a channel and try again. ') + emoji.random(); + if (typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + msg.say('Song resumed :play_pause:'); + msg.guild.musicData.songDispatcher.resume(); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3ZvaWNlL3Jlc3VtZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sV0FBWSxTQUFRLE9BQU87SUFDOUMsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxVQUFVLEVBQUUsUUFBUTtZQUNwQixXQUFXLEVBQUUscUNBQXFDO1lBQ2xELFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO1lBQ3hCLGlCQUFpQixFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLENBQUM7WUFDaEYsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1NBQzdELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBRztRQUNILElBQUksWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUU5RixJQUNJLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLFdBQVc7WUFDeEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLElBQUksRUFDNUM7WUFDRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsNENBQTRDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDbkY7UUFFRCxHQUFHLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFckMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hELENBQUM7Q0FDSixDQUFDIn0=
\ No newline at end of file diff --git a/dist/commands/voice/shuffle.js b/dist/commands/voice/shuffle.js new file mode 100644 index 0000000..b3e33a7 --- /dev/null +++ b/dist/commands/voice/shuffle.js @@ -0,0 +1,48 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); +const emoji = require('emoji-random'); +module.exports = class ShuffleVoice extends Command { + constructor(client) { + super(client, { + name: 'shuffle', + group: 'voice', + memberName: 'shuffle', + description: 'Shuffles the current queue.', + guildOnly: true, + examples: ['uwu!shuffle'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.reply('Please join channel and try again. ' + emoji.random()); + if (typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + if (msg.guild.musicData.queue.length < 1) + return msg.say('There aren\'t any songs in the current queue. ' + emoji.random()); + shuffleQueue(msg.guild.musicData.queue); + const titleArray = []; + msg.guild.musicData.queue.map(obj => { + titleArray.push(obj.title); + }); + var queueEmbed = new MessageEmbed() + .setColor(0xF97DAE) + .setTitle('New Music Queue ' + emoji.random()); + for (let i = 0; i < titleArray.length; i++) { + queueEmbed.addField(`${i + 1}:`, `${titleArray[i]}`); + } + return msg.say(queueEmbed); + } +}; +function shuffleQueue(queue) { + for (let i = queue.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [queue[i], queue[j]] = [queue[j], queue[i]]; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2h1ZmZsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy92b2ljZS9zaHVmZmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMvQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFdEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLFlBQWEsU0FBUSxPQUFPO0lBQy9DLFlBQVksTUFBTTtRQUNkLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDVixJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSxPQUFPO1lBQ2QsVUFBVSxFQUFFLFNBQVM7WUFDckIsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUN6QixpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1lBQ2hGLGVBQWUsRUFBRSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztTQUM3RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUc7UUFDSCxJQUFJLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMscUNBQXFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFNUYsSUFDSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsSUFBSSxXQUFXO1lBQ3hELEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQzVDO1lBQ0UsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ25GO1FBRUQsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDcEMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLGdEQUFnRCxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRXRGLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4QyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksVUFBVSxHQUFHLElBQUksWUFBWSxFQUFFO2FBQzlCLFFBQVEsQ0FBQyxRQUFRLENBQUM7YUFDbEIsUUFBUSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FDSixDQUFDO0FBRUYsU0FBUyxZQUFZLENBQUMsS0FBSztJQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMvQztBQUNMLENBQUMifQ==
\ No newline at end of file diff --git a/dist/commands/voice/skip.js b/dist/commands/voice/skip.js new file mode 100644 index 0000000..199319a --- /dev/null +++ b/dist/commands/voice/skip.js @@ -0,0 +1,28 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class SkipVoice extends Command { + constructor(client) { + super(client, { + name: 'skip', + group: 'voice', + memberName: 'skip', + description: 'Skips one song ahead in the current queue.', + guildOnly: true, + examples: ['uwu!skip'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.reply('Please join a channel and try again. ' + emoji.random()); + if (typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + msg.guild.musicData.songDispatcher.end(); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy92b2ljZS9za2lwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxTQUFVLFNBQVEsT0FBTztJQUM1QyxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsT0FBTztZQUNkLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFdBQVcsRUFBRSw0Q0FBNEM7WUFDekQsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDdEIsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztZQUNoRixlQUFlLEVBQUUsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUM7U0FDN0QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELEdBQUcsQ0FBQyxHQUFHO1FBQ0gsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTlGLElBQ0ksT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLElBQUksV0FBVztZQUN4RCxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLElBQUksSUFBSSxFQUM1QztZQUNFLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNuRjtRQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0NBQ0osQ0FBQyJ9
\ No newline at end of file diff --git a/dist/commands/voice/skipall.js b/dist/commands/voice/skipall.js new file mode 100644 index 0000000..bc32b0e --- /dev/null +++ b/dist/commands/voice/skipall.js @@ -0,0 +1,43 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class SkipAllVoice extends Command { + constructor(client) { + super(client, { + name: 'skipall', + aliases: [ + 'endqueue', + 'endq', + 'skipqueue', + 'skipq' + ], + group: 'voice', + memberName: 'skipall', + description: 'Removes all the songs from current queue.', + guildOnly: true, + examples: [ + 'uwu!endqueue', + 'uwu!endq', + 'uwu!skipqueue', + 'uwu!skipq' + ], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.reply('Please join a channel and try again. ' + emoji.random()); + if (typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + if (!msg.guild.musicData.queue) + return msg.say('There aren\'t any songs in the current queue. ' + emoji.random()); + msg.guild.musicData.songDispatcher.end(); + msg.guild.musicData.queue.length = 0; + return; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy92b2ljZS9za2lwYWxsLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxZQUFhLFNBQVEsT0FBTztJQUMvQyxZQUFZLE1BQU07UUFDZCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLFNBQVM7WUFDZixPQUFPLEVBQUU7Z0JBQ0wsVUFBVTtnQkFDVixNQUFNO2dCQUNOLFdBQVc7Z0JBQ1gsT0FBTzthQUNWO1lBQ0QsS0FBSyxFQUFFLE9BQU87WUFDZCxVQUFVLEVBQUUsU0FBUztZQUNyQixXQUFXLEVBQUUsMkNBQTJDO1lBQ3hELFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFO2dCQUNOLGNBQWM7Z0JBQ2QsVUFBVTtnQkFDVixlQUFlO2dCQUNmLFdBQVc7YUFDZDtZQUNELGlCQUFpQixFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLENBQUM7WUFDaEYsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1NBQzdELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBRztRQUNILElBQUksWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUU5RixJQUNJLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLFdBQVc7WUFDeEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLElBQUksRUFDNUM7WUFDRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsNENBQTRDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDbkY7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSztZQUMxQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0RBQWdELEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEYsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE9BQU87SUFDWCxDQUFDO0NBQ0osQ0FBQyJ9
\ No newline at end of file diff --git a/dist/commands/voice/skipto.js b/dist/commands/voice/skipto.js new file mode 100644 index 0000000..b304c54 --- /dev/null +++ b/dist/commands/voice/skipto.js @@ -0,0 +1,40 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class SkipToVoice extends Command { + constructor(client) { + super(client, { + name: 'skipto', + group: 'voice', + memberName: 'skipto', + description: 'Skip to a certain song in the current queue.', + guildOnly: true, + args: [{ + key: 'songNumber', + prompt: 'What song would you like to skip to in the current queue?', + type: 'integer' + }], + examples: ['uwu!skipto 5'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg, { songNumber }) { + if (songNumber < 1 && songNumber >= msg.guild.musicData.queue.length) { + return msg.reply('Please enter a valid song. ' + emoji.random()); + } + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.reply('Please join channel and try again. ' + emoji.random()); + if (typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + if (msg.guild.musicData.queue < 1) + return msg.reply('There aren\'t any songs in the current queue. ' + emoji.random()); + msg.guild.musicData.queue.splice(0, songNumber - 1); + msg.guild.musicData.songDispatcher.end(); + return; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3ZvaWNlL3NraXB0by5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sV0FBWSxTQUFRLE9BQU87SUFDOUMsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxVQUFVLEVBQUUsUUFBUTtZQUNwQixXQUFXLEVBQUUsOENBQThDO1lBQzNELFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLENBQUM7b0JBQ0gsR0FBRyxFQUFFLFlBQVk7b0JBQ2pCLE1BQU0sRUFBRSwyREFBMkQ7b0JBQ25FLElBQUksRUFBRSxTQUFTO2lCQUNsQixDQUFDO1lBQ0YsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDO1lBQzFCLGlCQUFpQixFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLENBQUM7WUFDaEYsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1NBQzdELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFO1FBQ25CLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxVQUFVLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNsRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDcEU7UUFDRCxJQUFJLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMscUNBQXFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFNUYsSUFDSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsSUFBSSxXQUFXO1lBQ3hELEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQzVDO1lBQ0UsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ25GO1FBRUQsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUM3QixPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0RBQWdELEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFeEYsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BELEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QyxPQUFPO0lBQ1gsQ0FBQztDQUNKLENBQUMifQ==
\ No newline at end of file diff --git a/dist/commands/voice/volume.js b/dist/commands/voice/volume.js new file mode 100644 index 0000000..60219e9 --- /dev/null +++ b/dist/commands/voice/volume.js @@ -0,0 +1,43 @@ +"use strict"; +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); +module.exports = class VolumeVoice extends Command { + constructor(client) { + super(client, { + name: 'volume', + aliases: ['vol'], + group: 'voice', + memberName: 'volume', + description: 'Changes volume of any currentaly playing audio.', + guildOnly: true, + args: [ + { + key: 'wantedVol', + prompt: 'What would volume you like? (1 to 200)', + type: 'integer', + validate: wantedVol => wantedVol >= 1 && wantedVol <= 200 + } + ], + examples: [ + 'uwu!volume 20', + 'uwu!vol 50' + ], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg, { wantedVol }) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) + return msg.reply('Please join a channel and try again. ' + emoji.random()); + if (typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + const volume = wantedVol / 100; + msg.guild.musicData.volume = volume; + msg.guild.musicData.songDispatcher.setVolume(volume); + msg.reply(`Volume is now: **${wantedVol}%**. ` + emoji.random()); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9sdW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3ZvaWNlL3ZvbHVtZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sV0FBWSxTQUFRLE9BQU87SUFDOUMsWUFBWSxNQUFNO1FBQ2QsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNWLElBQUksRUFBRSxRQUFRO1lBQ2QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2hCLEtBQUssRUFBRSxPQUFPO1lBQ2QsVUFBVSxFQUFFLFFBQVE7WUFDcEIsV0FBVyxFQUFFLGlEQUFpRDtZQUM5RCxTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRTtnQkFDRjtvQkFDSSxHQUFHLEVBQUUsV0FBVztvQkFDaEIsTUFBTSxFQUFFLHdDQUF3QztvQkFDaEQsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxTQUFTLElBQUksR0FBRztpQkFDNUQ7YUFDSjtZQUNELFFBQVEsRUFBRTtnQkFDTixlQUFlO2dCQUNmLFlBQVk7YUFDZjtZQUNELGlCQUFpQixFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLENBQUM7WUFDaEYsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDO1NBQzdELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFO1FBQ2xCLElBQUksWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUU5RixJQUNJLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLFdBQVc7WUFDeEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLElBQUksRUFDNUM7WUFDRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsNENBQTRDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDbkY7UUFFRCxNQUFNLE1BQU0sR0FBRyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDcEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxHQUFHLENBQUMsS0FBSyxDQUFDLG9CQUFvQixTQUFTLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0osQ0FBQyJ9
\ No newline at end of file diff --git a/dist/config.json b/dist/config.json new file mode 100644 index 0000000..d52dbcf --- /dev/null +++ b/dist/config.json @@ -0,0 +1,4 @@ +{ + "secret": "Njk5NDczMjYzOTk4MjcxNDg5.XpU5oQ.btZuxVudhNllSQY6CxrXXtMJm9A", + "yt-api-key": "AIzaSyCeG1lQAeInv4vjFv_eTL9IFAFNdQC9Nk8" +} diff --git a/fix/fun/dm.js b/fix/fun/dm.js new file mode 100644 index 0000000..fc10f28 --- /dev/null +++ b/fix/fun/dm.js @@ -0,0 +1,51 @@ +const { Command } = require('discord.js-commando'); +const { RichEmbed } = require('discord.js'); + +module.exports = class DMFun extends Command { + constructor(client) { + super(client, { + name: 'dm', + aliases: [ + 'directmessage', + 'directmsg', + 'direct-message', + 'direct-msg' + ], + group: 'fun', + memberName: 'dm', + description: 'dm someone', + guildOnly: true, + args: [ + { + key: 'msgContent', + prompt: 'what would u like to send', + type: 'string' + } + ], + examples: [ + 's5n!dm @sin#1337 hi', + 's5n!directmessage @sin#1337 hey', + 's5n!directmsg @sin#1337 hello', + 's5n!direct-message @sin#1337 yo', + 's5n!direct-msg @sin#1337 aye', + ] + }); + } + run(msg, { msgContent }) { + if (msg.author) { + if (!msg.mentions.users.first() && msgContent) { + msg.reply('you haven\'t specified anyone to send to.'); + } else { + var sendTo = msg.mentions.users.first().id; + var d = new Date(msg.createdTimestamp); + + msg.guild.members.fetch(sendTo, false).then(messageUser => { + messageUser.send(msgContent); + msg.reply('sent :D'); + }); + } + } else { + msg.reply('insufficent perms bruh'); + } + } +};
\ No newline at end of file diff --git a/fix/utility/botstatus.js b/fix/utility/botstatus.js new file mode 100644 index 0000000..ccf7e68 --- /dev/null +++ b/fix/utility/botstatus.js @@ -0,0 +1,124 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('discord.js'); + +module.exports = class BotStatusUtility extends Command { + constructor(client) { + super(client, { + name: 'botstatus', + aliases: ['status', 'bs'], + group: 'utility', + memberName: 'botstatus', + description: 'Allows you to change the bots status', + args: [ + { + key: 'userChangeType', + prompt: 'would you like to change the status message or type?', + type: 'string' + }, + { + key: 'userActivityName', + prompt: 'what would u like the message 2 be?', + type: 'string' + }, + { + key: 'userActivityType', + prompt: 'what would u like the status type to be?', + type: 'string' + } + ], + guildOnly: true, + examples: [ + 's5n!botstatus type watching', + 's5n!status t w', + 's5n!status message youtube', + 's5n!bs m lol' + ] + }); + } + run(msg, { userActivityName, userActivityType }) { + if (msg.member.hasPermission('KICK_MEMBERS')) { + var activityType = this.client.user.presence.activities[0].type; + var activityName = this.client.user.presence.activities[0].name; + + function activityTypeToWords() { + if (activityName == '0') { + var activityName = 'PLAYING'; + } else if (activityName == '1') { + var activityName = 'STREAMING'; + } else if (activityName == '2') { + var activityName = 'LISTENING'; + } else if (activityName == '3') { + var activityName = 'WATCHING'; + } + } + + if (userChangeType == 'reset' || userChangeType == 'r') { + this.client.user.setActivity('psycho ~uwu', { + type: 'LISTENING' + }); + msg.reply('status has been reset lol ' + emoji.random()); + } else if (userChangeType == 'format' || userChangeType == 'f') { + // Print full, proper format for the Discord.js setActivity() function + msg.reply('\n`' + this.client.user.setActivity.toString() + '`'); + } else if (userChangeType == 'message' || userChangeType == 'msg' || userChangeType == 'm') { + // This took way to long to complete lol, 2020/04/08, 00:12, my birthday lol + if (userChangeType == 'message') { + var m = userChangeType.join(' '); + var mf = m.slice(8, 22); + } else if (userChangeType == 'msg') { + var m = userChangeType.join(' '); + var mf = m.slice(4, 22); + } else if (userChangeType == 'm') { + var m = userChangeType.join(' '); + var mf = m.slice(2, 22); + } + + if (mf == 'reset' || mf == 'r') { + this.client.user.setActivity('psycho ~uwu', { + type: activityType + }); + + msg.reply('status message has been reset lol'); + } else { + this.client.user.setActivity(mf, { + type: activityType + }); + } + } else if (userChangeType == 'userChangeType' || args == 't') { + var m = userChangeType; + userChangeType.toLowerCase(); + if (userChangeType == 'playing' || userChangeType == 'p') { + var m = 'playing'; + + this.client.user.setActivity(activityName, { + type: 'playing' + }); + } else if (userChangeType == 'listening' || userChangeType == 'l') { + var m = 'LISTENING'; + + this.client.user.setActivity(activityName, { + type: m + }); + } else if (userChangeType == 'watching' || userChangeType == 'w') { + var m = 'WATCHING'; + + this.client.user.setActivity(activityName, { + type: m + }); + } else if (userChangeType == 'custom' || userChangeType == 'c') { + msg.reply('custom status is disabled due to discord api policies about self-botting :('); + } else if (userChangeType == 'reset' || userChangeType == 'r') { + this.client.user.setActivity(activityName, { + type: 'LISTENING' + }); + + msg.reply('status type has been reset lol'); + } + } else if (!args) { + msg.reply('no arguments specified'); + } + } else { + msg.reply('insufficent perms bruh'); + } + } +};
\ No newline at end of file diff --git a/fix/voice/fart.js b/fix/voice/fart.js new file mode 100644 index 0000000..a5f8a21 --- /dev/null +++ b/fix/voice/fart.js @@ -0,0 +1,208 @@ +// TODO: shits broken bc i cant get variables from different scopes +/* +const ytdl = require('ytdl-core'); +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); +const Youtube = require('simple-youtube-api'); +//const { youtubeAPI } = require('../../config.json'); +const youtube = new Youtube('AIzaSyB9xJENORzZt-GmOGx4WsNCPgKSIxhJcds'); +const emoji = require('emoji-random'); +module.exports = class FartVoice extends Command { + constructor(client) { + super(client, { + name: 'fart', + group: 'voice', + memberName: 'fart', + description: 'gives you a random fart', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT'], + examples: ['s5n!fart'] + }); + } + async run(msg) { + var fartNum = Math.floor((Math.random() * 8) + 1); + if (fartNum == 1) { + var fartMsg = 'you got fart 1, courtesy of sin ' + emoji.random(); + var fartTitle = 'fart 1'; + var fartAudio = '../../../assets/audio/farts/1.mp3'; + } else if (fartNum == 2) { + var fartMsg = 'you got fart 2, courtesy of sin ' + emoji.random(); + var fartTitle = 'fart 2'; + var fartAudio = '../../../assets/audio/farts/2.mp3'; + } else if (fartNum == 3) { + var fartMsg = 'you got fart 3, courtesy of sin ' + emoji.random(); + var fartTitle = 'fart 3'; + var fartAudio = '../../../assets/audio/farts/3.mp3'; + } else if (fartNum == 4) { + var fartMsg = 'you got fart 4, courtesy of sin ' + emoji.random(); + var fartTitle = 'fart 4'; + var fartAudio = '../../../assets/audio/farts/4.mp3'; + } else if (fartNum == 5) { + var fartMsg = 'you got fart 5, courtesy of sin ' + emoji.random(); + var fartTitle = 'fart 5'; + var fartAudio = '../../../assets/audio/farts/5.mp3'; + } else if (fartNum == 6) { + var fartMsg = 'you got fart 6, courtesy of nick ' + emoji.random(); + var fartTitle = 'fart 6'; + var fartAudio = '../../../assets/audio/farts/6.mp3'; + } else if (fartNum == 7) { + var fartMsg = 'you got fart 7, courtesy of nick ' + emoji.random(); + var fartTitle = 'fart 7'; + var fartAudio = '../../../assets/audio/farts/7.mp3'; + } else if (fartNum == 8) { + var fartMsg = 'you got fart 8, courtesy of nick ' + emoji.random(); + var fartTitle = 'fart 8'; + var fartAudio = '../../../assets/audio/farts/8.mp3'; + } + + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.say('join a channel and try again ' + emoji.random()); + + const video = await fartAudio; + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // return msg.say("I don't support live streams!"); + // } + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // return msg.say('I cannot play videos longer than 1 hour'); + // } + // // can be uncommented if you want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + this.constructSongObj(video, voiceChannel) + ); + if ( + msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined' + ) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + msg.reply(fartMsg); + msg.say(fartTitle, 'added to queue ' + emoji.random()); + return + } + + var that = this; + msg.channel + .awaitMessages( + function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + } + ) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') return songEmbed.delete(); + youtube + .then(function (video) { + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // songEmbed.delete(); + // return msg.say("I don't support live streams!"); + // } + + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // songEmbed.delete(); + // return msg.say('I cannot play videos longer than 1 hour'); + // } + + // // can be uncommented if you don't want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // songEmbed.delete(); + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + that.constructSongObj(video, voiceChannel) + ); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say(fartTitle, 'added to queue ' + emoji.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say( + 'an error has occured when trying to get the video file ' + emoji.random() + ); + }); + }); + } + playSong(queue, msg) { + const classThis = this; // use classThis instead of 'this' because of lexical scope below + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play( + fartAudio // TODO: broken here + ) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xF97DAE) + .addField('now playing:', queue[0].title) + .addField('duration:', queue[0].duration); + if (queue[1]) videoEmbed.addField('next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('can\'t play song ' + emoji.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + return { // TODO: and broken here + url: 'fart', + title: 'fart 1', + voiceChannel + }; + } +};
\ No newline at end of file diff --git a/fix/voice/moan.js b/fix/voice/moan.js new file mode 100644 index 0000000..c5d0f96 --- /dev/null +++ b/fix/voice/moan.js @@ -0,0 +1,170 @@ +// TODO: eventually fix this by uploading the audio to youtube and if i havent already copy and paste the code from abee +/* +//const ytdl = require('ytdl-core'); +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); +const Youtube = require('simple-youtube-api'); +//const { youtubeAPI } = require('../../config.json'); +const youtube = new Youtube('AIzaSyB9xJENORzZt-GmOGx4WsNCPgKSIxhJcds'); +const emoji = require('emoji-random'); +module.exports = class MoanVoice extends Command { + constructor(client) { + super(client, { + name: 'moan', + group: 'voice', + memberName: 'moan', + description: 'uhhhh', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT'], + examples: ['s5n!moan', 's5n!uhhhh'] + }); + } + async run(msg) { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.say('join a channel and try again ' + emoji.random()); + + const video = '../../../assets/audio/uhhhh.wav'; + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // return msg.say("I don't support live streams!"); + // } + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // return msg.say('I cannot play videos longer than 1 hour'); + // } + // // can be uncommented if you want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + this.constructSongObj(video, voiceChannel) + ); + if ( + msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined' + ) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + return msg.say('uhhhh added to queue ' + emoji.random()); + } + + var that = this; + msg.channel + .awaitMessages( + function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + } + ) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') return songEmbed.delete(); + youtube + .then(function (video) { + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // songEmbed.delete(); + // return msg.say("I don't support live streams!"); + // } + + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // songEmbed.delete(); + // return msg.say('I cannot play videos longer than 1 hour'); + // } + + // // can be uncommented if you don't want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // songEmbed.delete(); + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + that.constructSongObj(video, voiceChannel) + ); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say(fartTitle, 'added to queue ' + emoji.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say( + 'an error has occured when trying to get the video file ' + emoji.random() + ); + }); + }); + } + playSong(queue, msg) { + const classThis = this; // use classThis instead of 'this' because of lexical scope below + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play( + '../../../assets/audio/uhhhh.wav' + ) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xF97DAE) + .addField('now playing:', 'uhhhh') + .addField('duration:', 'no'); + if (queue[1]) videoEmbed.addField('next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('can\'t play song ' + emoji.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + return { // TODO: and broken here + title: 'uhhhh', + voiceChannel + }; + } +};
\ No newline at end of file diff --git a/fix/voice/squeak.js b/fix/voice/squeak.js new file mode 100644 index 0000000..c25547d --- /dev/null +++ b/fix/voice/squeak.js @@ -0,0 +1,172 @@ +// TODO: eventually fix this by uploading the audio to youtube and if i havent already copy and paste the code from abee +/* +//const ytdl = require('ytdl-core'); +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); +const Youtube = require('simple-youtube-api'); +//const { youtubeAPI } = require('../../config.json'); +const youtube = new Youtube('AIzaSyB9xJENORzZt-GmOGx4WsNCPgKSIxhJcds'); +const emoji = require('emoji-random'); +module.exports = class SqueakVoice extends Command { + constructor(client) { + super(client, { + name: 'squeak', + group: 'voice', + memberName: 'squeak', + description: 'squeak :D', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT'], + examples: ['s5n!squeak'] + }); + } + async run(msg) { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.say('join a channel and try again ' + emoji.random()); + + //const video = await fartAudio; + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // return msg.say("I don't support live streams!"); + // } + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // return msg.say('I cannot play videos longer than 1 hour'); + // } + // // can be uncommented if you want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + this.constructSongObj(video, voiceChannel) + ); + if ( + msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined' + ) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + msg.reply(fartMsg); + msg.say(fartTitle, 'added to queue ' + emoji.random()); + return + } + + var that = this; + msg.channel + .awaitMessages( + function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + } + ) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') return songEmbed.delete(); + youtube + .then(function (video) { + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // songEmbed.delete(); + // return msg.say("I don't support live streams!"); + // } + + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // songEmbed.delete(); + // return msg.say('I cannot play videos longer than 1 hour'); + // } + + // // can be uncommented if you don't want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // songEmbed.delete(); + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + that.constructSongObj(video, voiceChannel) + ); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say(fartTitle, 'added to queue ' + emoji.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say( + 'an error has occured when trying to get the video file ' + emoji.random() + ); + }); + }); + } + playSong(queue, msg) { + const classThis = this; // use classThis instead of 'this' because of lexical scope below + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play( + '../../../assets/audio/uhhhh.wav' + ) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xF97DAE) + .addField('now playing:', 'uhhhh') + .addField('duration:', 'no'); + if (queue[1]) videoEmbed.addField('next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('can\'t play song ' + emoji.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + return { // TODO: and broken here + title: 'uhhhh', + voiceChannel + }; + } +};
\ No newline at end of file diff --git a/fix/voice/wahoo.js b/fix/voice/wahoo.js new file mode 100644 index 0000000..25424f5 --- /dev/null +++ b/fix/voice/wahoo.js @@ -0,0 +1,32 @@ +// TODO: eventually fix this by uploading the audio to youtube and if i havent already copy and paste the code from abee +/* +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class WahooVoice extends Command { + constructor(client) { + super(client, { + name: 'wahoo', + aliases: ['mario'], + group: 'voice', + memberName: 'wahoo', + description: 'wahoo', + guildOnly: true, + examples: ['s5n!wahoo', 's5n!mario'] + }); + } + async run(msg) { + if (msg.member.voice.channel && !msg.guild.voice) { + const connection = await msg.member.voice.channel.join(); + const dispatcher = connection.play('../../../assets/audio/wahoo.mp3'); + + dispatcher.on('finish', () => { + connection.disconnect(); + }); + } else if (msg.guild.voice) { + msg.reply('i\'m already playing that lol ' + emoji.random()); + } else { + msg.reply('you need to join a voice channel first silly ' + emoji.random()); + } + } +};
\ No newline at end of file diff --git a/package.json b/package.json index 444e388..33897ae 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "package", "version": "1.0.0", "description": "", - "main": "app.js", + "main": "./dist/app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, @@ -11,13 +11,18 @@ "dependencies": { "@discordjs/opus": "^0.1.0", "at-quotes": "^1.3.3", + "btc-value": "^3.0.1", "demojijs": "^1.2.0", - "discord.js": "^12.1.1", + "discord.js": "github:discordjs/discord.js", + "discord.js-commando": "github:discordjs/Commando", "emoji-random": "^0.1.2", - "ffmpeg-static": "^4.0.1", + "ffmpeg-static": "^4.1.0", + "figlet": "^1.3.0", "is-image-url": "^1.1.8", "moment": "^2.24.0", "moment-duration-format": "^2.3.2", + "node-opus": "^0.3.3", + "simple-youtube-api": "^5.2.1", "ytdl-core": "^2.0.1" } } diff --git a/scripts/build.bat b/scripts/build.bat new file mode 100644 index 0000000..59c629b --- /dev/null +++ b/scripts/build.bat @@ -0,0 +1,3 @@ +%cd% +cd .. +tsc
\ No newline at end of file diff --git a/scripts/heroku_application_log.bat b/scripts/heroku_application_log.bat new file mode 100644 index 0000000..49f71a4 --- /dev/null +++ b/scripts/heroku_application_log.bat @@ -0,0 +1 @@ +heroku logs -t --app uwufier
\ No newline at end of file diff --git a/scripts/install_prerequisites.bat b/scripts/install_prerequisites.bat new file mode 100644 index 0000000..7b67ea9 --- /dev/null +++ b/scripts/install_prerequisites.bat @@ -0,0 +1,3 @@ +%cd% +cd .. +npm npm i
\ No newline at end of file diff --git a/scripts/prepare_build.bat b/scripts/prepare_build.bat new file mode 100644 index 0000000..27f4874 --- /dev/null +++ b/scripts/prepare_build.bat @@ -0,0 +1,3 @@ +%cd% +cd .. +@RD /S /Q "dist"
\ No newline at end of file diff --git a/src/app.js b/src/app.js new file mode 100644 index 0000000..fca1bad --- /dev/null +++ b/src/app.js @@ -0,0 +1,7 @@ +const { ShardingManager } = require('discord.js'); +const config = require('./config.json'); +const manager = new ShardingManager('./dist/bot.js', { token: config['secret'] }); +//const manager = new ShardingManager('./bot.js', { token: config['secret'] }); + +manager.spawn(); +manager.on('shardCreate', shard => console.log(`Launched shard: ${shard.id}`)); diff --git a/src/bot.ts b/src/bot.ts new file mode 100644 index 0000000..cf90dfc --- /dev/null +++ b/src/bot.ts @@ -0,0 +1,71 @@ +import config from './config.json'; +import { CommandoClient } from 'discord.js-commando'; +import path from 'path'; +import { Structures } from 'discord.js'; +import emoji from 'emoji-random'; +Structures.extend('Guild', Guild => { + class MusicGuild extends Guild { + musicData: { queue: never[]; isPlaying: boolean; volume: number; songDispatcher: null; }; + constructor(client, data) { + super(client, data); + this.musicData = { + queue: [], + isPlaying: false, + volume: 1, + songDispatcher: null + }; + } + } + return MusicGuild; +}); + +const client = new CommandoClient({ + commandPrefix: 'uwu!', + owner: '217348698294714370' +}); + +client.registry + .registerDefaultTypes() + .registerGroups([ + ['fun', 'Fun Command Group'], + ['moderation', 'Moderation Command Group'], + ['utility', 'Utility Command Group'], + ['voice', 'Voice Command Group'] + ]) + .registerDefaultGroups() + .registerDefaultCommands({ + help: true + }) + .registerCommandsIn(path.join(__dirname, 'commands')); + +client.once('ready', () => { + console.log(`Started bot: ${client.user.tag} (ID: ${client.user.id})\nCurrently running on ${client.guilds.cache.size} server(s).`); + client.user.setActivity('uwu!help | v5.0.0', { + type: 'WATCHING' + }); +}); + +client.on('error', console.error); +//client.on('debug', console.debug); + +client.on('message', async msg => { + var msgContent = msg.content.toLowerCase(); + function prefixCheck() { + if (msgContent.startsWith('uwu!')) { + return true; + } + } + if (prefixCheck()) { + if (msg.channel.type == 'dm') { + console.log(msg.author.tag, 'says', msgContent, 'in a DM'); + } else { + console.log(msg.member.user.tag, 'says', msgContent, 'in #' + msg.channel.name); + } + } + + if (msg.mentions.everyone) { + msg.react(emoji.random()); + } +}); + +client.login(config['secret']);
\ No newline at end of file diff --git a/src/commands/fun/8ball.js b/src/commands/fun/8ball.js new file mode 100644 index 0000000..6be4f01 --- /dev/null +++ b/src/commands/fun/8ball.js @@ -0,0 +1,38 @@ +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); + +module.exports = class EightBallFun extends Command { + constructor(client) { + super(client, { + name: '8ball', + aliases: [ + '8b', + '9b', + '9ball', + '7b', + '7ball' + ], + group: 'fun', + memberName: '8ball', + description: 'Shake the 8ball for a fortune.', + throttling: { + usages: 5, + duration: 30 + }, + examples: ['uwu!8ball', 'uwu!8b'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + var r = ['Yes~ uwu', 'No.', 'Yes!', 'No!', 'What, no.', 'Yes.', 'Maybe.', 'Perhaps.', 'Try again.', 'I\'m not sure.']; + var s = r[Math.floor(Math.random() * r.length)]; + + let embed = new MessageEmbed() + + .setAuthor('The 8-ball says', 'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/8-Ball_Pool.svg/500px-8-Ball_Pool.svg.png') + .setDescription('`' + s + '`'); + + msg.channel.send(embed); + } +};
\ No newline at end of file diff --git a/src/commands/fun/emoji.js b/src/commands/fun/emoji.js new file mode 100644 index 0000000..ca633b9 --- /dev/null +++ b/src/commands/fun/emoji.js @@ -0,0 +1,24 @@ +const emoji = require('emoji-random'); +const { Command } = require('discord.js-commando'); + +module.exports = class EmojiFun extends Command { + constructor(client) { + super(client, { + name: 'emoji', + aliases: ['moji'], + group: 'fun', + memberName: 'emoji', + description: 'Gives you a random emoji.' + emoji.random(), + throttling: { + usages: 5, + duration: 30 + }, + examples: ['uwu!emoji', 'uwu!moji'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + msg.reply(emoji.random()); + } +};
\ No newline at end of file diff --git a/src/commands/fun/gay.js b/src/commands/fun/gay.js new file mode 100644 index 0000000..ec78ee3 --- /dev/null +++ b/src/commands/fun/gay.js @@ -0,0 +1,34 @@ +const { Command } = require('discord.js-commando'); + +module.exports = class GayFun extends Command { + constructor(client) { + super(client, { + name: 'gay', + aliases: [ + 'gayamount', + 'gayrange', + 'gayrate' + ], + group: 'fun', + memberName: 'gay', + description: 'Tells you your gay-ness amount.', + examples: [ + 'uwu!gay', + 'uwu!gayamount', + 'uwu!gayrange', + 'uwu!gayrate' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + var gayAmount = Math.floor((Math.random() * 100) + 1); + var gayAmountDecimal = Math.floor((Math.random() * 100) + 1); + + msg.reply('Scanning..').then(scanningMsg => { + scanningMsg.delete() + msg.reply('Your gay-ness amount is **' + gayAmount + '.' + gayAmountDecimal + '%**. 🏳️🌈'); + }); + } +};
\ No newline at end of file diff --git a/src/commands/fun/quote.js b/src/commands/fun/quote.js new file mode 100644 index 0000000..4a19a31 --- /dev/null +++ b/src/commands/fun/quote.js @@ -0,0 +1,40 @@ +const atquotes = require('at-quotes'); +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class QuoteFun extends Command { + constructor(client) { + super(client, { + name: 'quote', + aliases: ['quotes'], + group: 'fun', + memberName: 'quote', + description: 'Gives you a random quote from Adventure Time.', + throttling: { + usages: 5, + duration: 30 + }, + examples: ['s5n!quote', 's5n!quote finn'], + args: [ + { + key: 'atCharacter', + prompt: 'Would you like a specific character? (Finn, Jake, Ice King, No)', + type: 'string' + } + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg, { atCharacter }) { + if (!atCharacter || atCharacter == 'no' || atCharacter == 'n') { + msg.reply(atquotes.getQuote() + ' ' + emoji.random()); + } else if (atCharacter == 'finn' || atCharacter == 'f') { + msg.reply(atquotes.getFinnQuote() + ' ' + emoji.random()); + } else if (atCharacter == 'jake' || atCharacter == 'j') { + msg.reply(atquotes.getJakeQuote() + ' ' + emoji.random()); + } else if (atCharacter == 'ice king' || atCharacter == 'ik') { + msg.reply(atquotes.getIceKingQuote() + ' ' + emoji.random()); + } + } +};
\ No newline at end of file diff --git a/src/commands/fun/respect.js b/src/commands/fun/respect.js new file mode 100644 index 0000000..50d185b --- /dev/null +++ b/src/commands/fun/respect.js @@ -0,0 +1,23 @@ +const { Command } = require('discord.js-commando'); + +module.exports = class RespectFun extends Command { + constructor(client) { + super(client, { + name: 'respect', + aliases: ['f'], + group: 'fun', + memberName: 'respect', + description: 'Press F to pay respects.', + examples: ['uwu!respect', 'uwu!f'], + guildOnly: true, + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + msg.channel.send('Press F to pay respects.').then(m => { + m.react('🇫'); + msg.delete(); + }); + } +};
\ No newline at end of file diff --git a/src/commands/fun/say.js b/src/commands/fun/say.js new file mode 100644 index 0000000..667bb49 --- /dev/null +++ b/src/commands/fun/say.js @@ -0,0 +1,31 @@ +const { Command } = require('discord.js-commando'); + +module.exports = class SayFun extends Command { + constructor(client) { + super(client, { + name: 'say', + group: 'fun', + memberName: 'say', + description: 'Allows you to speak as the bot.', + guildOnly: true, + args: [ + { + key: 'say', + prompt: 'What would you like to send?', + type: 'string' + } + ], + examples: ['uwu!say hi'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg, { say }) { + if (msg.member.hasPermission('KICK_MEMBERS')) { + msg.channel.send(say); + msg.delete(); + } else { + msg.reply('Insufficent perms. ' + emoji.random()); + } + } +};
\ No newline at end of file diff --git a/src/commands/fun/uwufy.ts b/src/commands/fun/uwufy.ts new file mode 100644 index 0000000..9e40078 --- /dev/null +++ b/src/commands/fun/uwufy.ts @@ -0,0 +1,31 @@ +import { Message } from "discord.js"; +import { Command } from 'discord.js-commando'; + +module.exports = class UwufyFun extends Command { + constructor(client) { + super(client, { + name: 'uwufy', + aliases: ['uwu', 'owofy', 'owo'], + group: 'fun', + memberName: 'uwufy', + description: 'Uwufys anything you send.', + args: [ + { + key: 'userMsg', + prompt: 'What would you like to uwufy?', + type: 'string' + } + ], + examples: ['uwu!say please uwufy this'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg: Message, { userMsg }) { + var m = userMsg; + var u1 = m.replace('r', 'w'); + var u2 = u1.replace('l', 'w'); + msg.reply(u2); + msg.delete(); + } +};
\ No newline at end of file diff --git a/src/commands/utility/btc.ts b/src/commands/utility/btc.ts new file mode 100644 index 0000000..2845194 --- /dev/null +++ b/src/commands/utility/btc.ts @@ -0,0 +1,36 @@ +import { Command } from 'discord.js-commando'; +import emoji from 'emoji-random'; +import btc from 'btc-value'; +btc.setApiKey('a43419ce-fc59-4951-8af9-20c5e36ef73f'); + +module.exports = class BTCUtility extends Command { + constructor(client) { + super(client, { + name: 'btc', + aliases: ['bitcoin', 'crypto'], + group: 'utility', + memberName: 'btc', + description: 'Allows you to check current Bitcoin price.', + args: [ + { + key: 'currencyName', + prompt: 'What currency could you like to see it in? (USD, AUD, CAD)', + type: 'string' + } + ], + examples: [ + 'uwu!bitcoin aud', + 'uwu!crypto cad', + 'uwu!btc usd' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg: Message, { currencyName }) { + currencyName = currencyName.toUpperCase(); + btc({ isDecimal: true, currencyCode: currencyName }).then(value => { + msg.reply('The current price of *Bitcoin* in **' + currencyName + '** is **' + value + '**. ' + emoji.random()); + }); + } +};
\ No newline at end of file diff --git a/src/commands/utility/btcchange.js b/src/commands/utility/btcchange.js new file mode 100644 index 0000000..474a3ee --- /dev/null +++ b/src/commands/utility/btcchange.js @@ -0,0 +1,47 @@ +const { Command } = require('discord.js-commando'); +const btc = require('btc-value'); +btc.setApiKey('a43419ce-fc59-4951-8af9-20c5e36ef73f'); + +module.exports = class BTCChangeUtility extends Command { + constructor(client) { + super(client, { + name: 'btcchange', + aliases: ['bitcoinchange', 'cryptochange', 'btcc'], + group: 'utility', + memberName: 'btcchange', + description: 'Allows you to check the fluctuation in Bitcoin prices within a specified amount of time.', + args: [ + { + key: 'timeAmount', + prompt: 'What time range do you want to check the fluction amount in? (day, hour, week)', + type: 'string' + } + ], + examples: [ + 'uwu!btcchange day', + 'uwu!bitcoinchange hour', + 'uwu!cryptochange week', + 'uwu!btcc day' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg, { timeAmount }) { + if (timeAmount == 'day') { + btc.getPercentageChangeLastDay().then(percentage => { + msg.reply('The fluction amount of *Bitcoin* in the last **' + timeAmount + '** is **' + percentage + '%**. ' + emoji.random()); + }); + } else if (timeAmount == 'hour') { + btc.getPercentageChangeLastHour().then(percentage => { + msg.reply('The fluction amount of *Bitcoin* in the last **' + timeAmount + '** is **' + percentage + '%**. ' + emoji.random()); + }); + } else if (timeAmount == 'week') { + btc.getPercentageChangeLastWeek().then(percentage => { + msg.reply('The fluction amount of *Bitcoin* in the last **' + timeAmount + '** is **' + percentage + '%**. ' + emoji.random()); + }); + } else { + msg.reply('*' + timeAmount + '* is not a valid range. ' + emoji.random()); + } + } +};
\ No newline at end of file diff --git a/src/commands/utility/clear.js b/src/commands/utility/clear.js new file mode 100644 index 0000000..6871cca --- /dev/null +++ b/src/commands/utility/clear.js @@ -0,0 +1,72 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class ClearUtility extends Command { + constructor(client) { + super(client, { + name: 'clear', + aliases: ['delete', 'del', 'c', 'd'], + group: 'utility', + memberName: 'clear', + description: 'Clears a specified amount of messages.', + guildOnly: true, + args: [ + { + key: 'deleteAmount', + prompt: 'How many messages would you like to delete?', + type: 'integer' + } + ], + examples: [ + 'uwu!clear 23', + 'uwu!delete 75', + 'uwu!del 32', + 'uwu!c 45', + 'uwu!d 84' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'MANAGE_MESSAGES'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'MANAGE_MESSAGES'] + }); + } + async run(msg, { deleteAmount }) { + if (msg.member.hasPermission('MANAGE_MESSAGES')) { + if (!deleteAmount) { + msg.reply('You haven\'t specified an amount of messages which should be deleted. ' + emoji.random()).then(deleteNotificationMessage => { + deleteNotificationMessage.delete({ timeout: 1000 }); + }); + } else if (isNaN(deleteAmount)) { + msg.reply('The amount parameter isn\'t a number. ' + emoji.random()).then(deleteNotificationMessage => { + deleteNotificationMessage.delete({ timeout: 1000 }); + }); + } else if (deleteAmount > 100) { + msg.reply('You can\'t delete more than 100 messages at once. ' + emoji.random()).then(deleteNotificationMessage => { + deleteNotificationMessage.delete({ timeout: 1000 }); + }); + } else if (deleteAmount < 1) { + msg.reply('You have to delete at least 1 message. ' + emoji.random()).then(deleteNotificationMessage => { + deleteNotificationMessage.delete({ timeout: 1000 }); + }); + } + /*else if (msg.createdTimestamp > 1209600) { + msg.reply('due to discord rules, bots can only bulk delete messages that are under 14 days old :(') + } */ + else { + var clearAmount = deleteAmount + 1; + // It took me so long to figure out why this was not really working. It would delete but an insane amount at a time. + // I realized that because it was getting parsed as a string, it would just add 1 to it so if I tried to delete 1 + // message, it would delete 11 lol. Fixed by parsing as integer THEN adding one. 02:30 2020/04/03/2020 + + await msg.channel.messages.fetch({ + limit: clearAmount + }).then(messages => { // I am on v11 discord.js + msg.channel.bulkDelete(messages); + }); + msg.reply('It\'s been deleted ~uwu ' + emoji.random()).then(deleteNotificationMessage => { + deleteNotificationMessage.delete({ timeout: 1000 }); + }); + } + } else { + msg.reply('Insufficent perms. ' + emoji.random()); + } + } +};
\ No newline at end of file diff --git a/src/commands/utility/membercount.js b/src/commands/utility/membercount.js new file mode 100644 index 0000000..1178236 --- /dev/null +++ b/src/commands/utility/membercount.js @@ -0,0 +1,29 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class MemberCountUtility extends Command { + constructor(client) { + super(client, { + name: 'membercount', + aliases: ['memberc', 'mcount', 'mc'], + group: 'utility', + memberName: 'membercount', + description: 'Tells you how many members are in the current server.', + throttling: { + usages: 5, + duration: 30 + }, + examples: [ + 'uwu!membercount', + 'uwu!memberc', + 'uwu!mcount', + 'uwu!mc' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + msg.reply(`There are **${msg.guild.memberCount}** members in **${msg.guild.name}**. ` + emoji.random()); + } +};
\ No newline at end of file diff --git a/src/commands/utility/server.js b/src/commands/utility/server.js new file mode 100644 index 0000000..58555fa --- /dev/null +++ b/src/commands/utility/server.js @@ -0,0 +1,54 @@ +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); + +module.exports = class ServerUtility extends Command { + constructor(client) { + super(client, { + name: 'server', + aliases: [ + 'serverinfo', + 'si', + 'server-info', + 'serverstats', + 'server-stats' + ], + group: 'utility', + memberName: 'server', + description: 'Gives you information about the current server.', + throttling: { + usages: 2, + duration: 60 + }, + guildOnly: true, + examples: [ + 'uwu!server', + 'uwu!serverinfo', + 'uwu!server-info', + 'uwu!serverstats', + 'uwu!server-stats', + 'uwu!si' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg) { + var o = msg.guild.members.cache.filter(m => m.presence.status === 'online').size; + + let embed = new MessageEmbed() + + .setAuthor(`${msg.guild.name} - ${msg.guild.id}`, `${msg.guild.iconURL()}`, `https://discordapp.com/channels/${msg.guild.id}/${msg.guild.id}`) + .setDescription(`Here\'s all the information on \`${msg.guild.name}\``) + .setThumbnail(`${msg.guild.iconURL()}`) + .addField('Owner', `${msg.guild.owner}`, false) + .addField(`Members [${msg.guild.memberCount}]`, `${o} members are online.`, true) + .addField('Region', `${msg.guild.region}`, true) + .addField('Text channels', `${msg.guild.channels.filter(c => c.type === 'text').size}`, true) + .addField('Voice channels', `${msg.guild.channels.filter(c => c.type === 'voice').size}`, true) + .addField('Guild created', `${msg.guild.createdAt}`, false) + .addField(`${this.client.user.username} joined`, `${msg.guild.members.get('699473263998271489').joinedAt}`) + .setColor(0xFFCC4D); + + msg.channel.send(embed); + } +};
\ No newline at end of file diff --git a/src/commands/utility/servers.ts b/src/commands/utility/servers.ts new file mode 100644 index 0000000..1b3ce0f --- /dev/null +++ b/src/commands/utility/servers.ts @@ -0,0 +1,28 @@ +import { Command } from 'discord.js-commando'; +import { MessageEmbed, Message } from 'discord.js'; +import emoji from 'emoji-random'; + +module.exports = class ServersUtility extends Command { + constructor(client) { + super(client, { + name: 'servers', + aliases: ['servercount', 'scount', 'serverc'], + group: 'utility', + memberName: 'servers', + description: 'Tells you the amount of servers uwufy is in.', + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg: Message) { + msg.channel.send('Please wait..').then(m => { + m.edit(`** **`); + + let emb = new MessageEmbed() + .setDescription(`Currently running on 31${this.client.guilds.cache.size} server(s). ` + emoji.random()) + .setColor(0xFFCC4D) + + msg.channel.send(emb); + }); + } +};
\ No newline at end of file diff --git a/src/commands/utility/uptime.ts b/src/commands/utility/uptime.ts new file mode 100644 index 0000000..eebd031 --- /dev/null +++ b/src/commands/utility/uptime.ts @@ -0,0 +1,40 @@ +import { Command } from 'discord.js-commando'; +import { duration as _duration } from 'moment'; +import 'moment-duration-format'; +// @ts-ignore +import emoji from 'emoji-random'; +import { MessageEmbed, Message } from 'discord.js'; + +export default class UptimeUtility extends Command { + constructor(client) { + super(client, { + name: 'uptime', + aliases: ['ut'], + group: 'utility', + memberName: 'uptime', + description: 'Tells you how long the bot has been online.', + throttling: { + usages: 5, + duration: 30 + }, + examples: [ + 'uwu!uptime', + 'uwu!ut' + ], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'] + }); + } + run(msg: Message) { + const duration = _duration(this.client.uptime).format(" D [days], H [hrs], m [mins], s [secs]"); + msg.channel.send('Please wait..').then(m => { + m.edit(`** **`); + + let emb = new MessageEmbed() + .setDescription('uwufier has been up for ' + duration + '. ' + emoji.random()) + .setColor(0xFFCC4D) + + msg.channel.send(emb); + }); + } +}
\ No newline at end of file diff --git a/src/commands/voice/abee.ts b/src/commands/voice/abee.ts new file mode 100644 index 0000000..939b575 --- /dev/null +++ b/src/commands/voice/abee.ts @@ -0,0 +1,199 @@ +import ytdl from 'ytdl-core'; +import { Command } from 'discord.js-commando'; +import { MessageEmbed, Message } from 'discord.js'; +import Youtube from 'simple-youtube-api'; +//const { youtubeAPI } = require('../../config.json'); +import config from '../../config.json'; +const youtube = new Youtube(config['yt-api-key']); +import emoji from 'emoji-random'; + +module.exports = class ABeeVoice extends Command { + constructor(client) { + super(client, { + name: 'abee', + aliases: ['a-bee'], + group: 'voice', + memberName: 'abee', + description: 'A bee 🐝', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + examples: ['uwu!abee', 'uwu!a-bee'], + }); + } + async run(msg: Message) { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.say('Please join a channel and try again. ' + emoji.random()); + + const id = 'lvdnhWhQBdo'; + const video = await youtube.getVideoByID(id).catch(function () { + return msg.say( + 'There was a problem getting the video you provided. ' + emoji.random() + ); + }); + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // return msg.say("I don't support live streams!"); + // } + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // return msg.say('I cannot play videos longer than 1 hour'); + // } + // // can be uncommented if you want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + this.constructSongObj(video, voiceChannel) + ); + if ( + msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined' + ) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + return msg.say(`${video.title} added to queue. ` + emoji.random()); + } + + var that = this; + msg.channel + .awaitMessages( + function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + } + ) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') return songEmbed.delete(); + youtube + .getVideoByID(videos[videoIndex - 1].id) + .then(function (video) { + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // songEmbed.delete(); + // return msg.say("I don't support live streams!"); + // } + + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // songEmbed.delete(); + // return msg.say('I cannot play videos longer than 1 hour'); + // } + + // // can be uncommented if you don't want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // songEmbed.delete(); + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + that.constructSongObj(video, voiceChannel) + ); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say(`${video.title} added to queue. ` + emoji.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say( + 'An error has occured when trying to get the video ID from YouTube. ' + emoji.random() + ); + }); + }); + } + playSong(queue, msg) { + const classThis = this; // use classThis instead of 'this' because of lexical scope below + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play( + ytdl(queue[0].url, { + quality: 'highestaudio', + highWaterMark: 1024 * 1024 * 10 + }) + ) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xF97DAE) + .addField('Now playing:', queue[0].title) + .addField('Duration:', queue[0].duration); + if (queue[1]) videoEmbed.addField('Next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('Can\'t play song. ' + emoji.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + let duration = this.formatDuration(video.duration); + if (duration == '00:00') duration = 'Live Stream'; + return { + url: `https://www.youtube.com/watch?v=${video.raw.id}`, + title: video.title, + duration, + thumbnail: video.thumbnails.high.url, + voiceChannel + }; + } + // prettier-ignore + formatDuration(durationObj) { + const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${ + durationObj.minutes ? durationObj.minutes : '00' + }:${ + (durationObj.seconds < 10) + ? ('0' + durationObj.seconds) + : (durationObj.seconds + ? durationObj.seconds + : '00') + }`; + return duration; + } +};
\ No newline at end of file diff --git a/src/commands/voice/itemshop.ts b/src/commands/voice/itemshop.ts new file mode 100644 index 0000000..f8c0b2b --- /dev/null +++ b/src/commands/voice/itemshop.ts @@ -0,0 +1,209 @@ +import ytdl from 'ytdl-core'; +import { Command } from 'discord.js-commando'; +import { MessageEmbed, Message } from 'discord.js'; +import Youtube from 'simple-youtube-api'; +//const { youtubeAPI } = require('../../config.json'); +import config from '../../config.json'; +const youtube = new Youtube(config['yt-api-key']); +import emoji from 'emoji-random'; + +module.exports = class ABeeVoice extends Command { + constructor(client) { + super(client, { + name: 'itemshop', + aliases: ['item-shop'], + group: 'voice', + memberName: 'itemshop', + description: 'Use code \'Frozen\' in the Fortnite item shop.', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + examples: ['uwu!itemshop', 'uwu!item-shop'] + }); + } + async run(msg: Message) { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.say('Please join a channel and try again. ' + emoji.random()); + + const id = 'pBiI1hTwU7E'; + const video = await youtube.getVideoByID(id).catch(function () { + return msg.say( + 'There was a problem getting the video you provided. ' + emoji.random() + ); + }); + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // return msg.say("I don't support live streams!"); + // } + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // return msg.say('I cannot play videos longer than 1 hour'); + // } + // // can be uncommented if you want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + this.constructSongObj(video, voiceChannel) + ); + if ( + msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined' + ) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + return msg.say(`${video.title} added to queue. ` + emoji.random()); + } + + var that = this; + msg.channel + .awaitMessages( + function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + } + ) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') return songEmbed.delete(); + youtube + .getVideoByID(videos[videoIndex - 1].id) + .then(function (video) { + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // songEmbed.delete(); + // return msg.say("I don't support live streams!"); + // } + + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // songEmbed.delete(); + // return msg.say('I cannot play videos longer than 1 hour'); + // } + + // // can be uncommented if you don't want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // songEmbed.delete(); + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + that.constructSongObj(video, voiceChannel) + ); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + msg.say(`${video.title} added to queue. ` + emoji.random()); + return; + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say( + 'An error has occured when trying to get the video ID from Youtube.' + emoji.random() + ); + }); + }); + } + playSong(queue, msg) { + const classThis = this; // use classThis instead of 'this' because of lexical scope below + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play( + ytdl(queue[0].url, { + quality: 'highestaudio', + highWaterMark: 1024 * 1024 * 10 + }) + + ) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xF97DAE) + .addField('Now playing:', queue[0].title) + .addField('Duration:', queue[0].duration); + if (queue[1]) videoEmbed.addField('Next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('Can\'t play song. ' + emoji.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + function timeCheck() { + if (dispatcher.streamTime >= 6000) { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + } + } + setInterval(timeCheck, 500); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + let duration = this.formatDuration(video.duration); + if (duration == '00:00') duration = 'Live Stream'; + return { + url: `https://www.youtube.com/watch?v=${video.raw.id}`, + title: video.title, + duration, + thumbnail: video.thumbnails.high.url, + voiceChannel + }; + } + // prettier-ignore + formatDuration(durationObj) { + const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${ + durationObj.minutes ? durationObj.minutes : '00' + }:${ + (durationObj.seconds < 10) + ? ('0' + durationObj.seconds) + : (durationObj.seconds + ? durationObj.seconds + : '00') + }`; + return duration; + } +};
\ No newline at end of file diff --git a/src/commands/voice/join.js b/src/commands/voice/join.js new file mode 100644 index 0000000..4410e4c --- /dev/null +++ b/src/commands/voice/join.js @@ -0,0 +1,31 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class JoinVoice extends Command { + constructor(client) { + super(client, { + name: 'join', + group: 'voice', + memberName: 'join', + description: 'Joins your current voice channel.', + throttling: { + usages: 2, + duration: 5 + }, + guildOnly: true, + examples: ['uwu!join'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + if (msg.guild.musicData.isPlaying == false && msg.member.voice.channel) { + msg.member.voice.channel.join(); + msg.reply('Succesfully joined voice channel. ' + emoji.random()); + } else if (msg.guild.musicData.isPlaying == false) { + msg.reply('I\'m already in voice channel. ' + emoji.random()); + } else if (!msg.member.voice.channel) { + msg.reply('Please join a channel and try again. ' + emoji.random()); + } + } +};
\ No newline at end of file diff --git a/src/commands/voice/leave.js b/src/commands/voice/leave.js new file mode 100644 index 0000000..4c25e62 --- /dev/null +++ b/src/commands/voice/leave.js @@ -0,0 +1,34 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class LeaveVoice extends Command { + constructor(client) { + super(client, { + name: 'leave', + aliases: ['end', 'stop'], + group: 'voice', + memberName: 'leave', + description: 'Leaves voice channel and stops currently playing audio.', + guildOnly: true, + examples: ['uwu!leave', 'uwu!end', 'uwu!stop'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.reply('Please join a channel and try again. ' + emoji.random()); + + if ( + typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null + ) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + if (!msg.guild.musicData.queue) + return msg.say('There aren\'t any songs in the current queue. ' + emoji.random()); + msg.guild.musicData.songDispatcher.end(); + msg.guild.musicData.queue.length = 0; + return; + } +};
\ No newline at end of file diff --git a/src/commands/voice/loop.js b/src/commands/voice/loop.js new file mode 100644 index 0000000..05c0e99 --- /dev/null +++ b/src/commands/voice/loop.js @@ -0,0 +1,34 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class LoopVoice extends Command { + constructor(client) { + super(client, { + name: 'loop', + aliases: ['repeat'], + group: 'voice', + memberName: 'loop', + description: 'Loops currently playing audio.', + guildOnly: true, + examples: ['uwu!loop', 'uwu!repeat'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.reply('Please join a channel and try again. ' + emoji.random()); + + if ( + typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null + ) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + msg.channel.send( + `${msg.guild.musicData.nowPlaying.title} added to queue. ` + emoji.random() + ); + msg.guild.musicData.queue.unshift(msg.guild.musicData.nowPlaying); + return; + } +};
\ No newline at end of file diff --git a/src/commands/voice/minecraft.ts b/src/commands/voice/minecraft.ts new file mode 100644 index 0000000..cad7c06 --- /dev/null +++ b/src/commands/voice/minecraft.ts @@ -0,0 +1,204 @@ +import ytdl from 'ytdl-core'; +import { Command } from 'discord.js-commando'; +import { MessageEmbed } from 'discord.js'; +import Youtube from 'simple-youtube-api'; +//const { youtubeAPI } = require('../../config.json'); +import config from '../../config.json'; +const youtube = new Youtube(config['yt-api-key']); +import emoji from 'emoji-random'; + +module.exports = class MinecraftVoice extends Command { + constructor(client) { + super(client, { + name: 'minecraft', + aliases: ['minecraftsountrack', 'minecraft-soundtrack', 'mcs', 'mc-s'], + group: 'voice', + memberName: 'minecraft', + description: 'Plays the Minecraft soundtrack.', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + examples: [ + 'uwu!minecraft', + 'uwu!minecraftsountrack', + 'uwu!minecraft-soundtrack', + 'uwu!mcs', + 'uwu!mc-s' + ] + }); + } + async run(msg) { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.say('Join a channel and try again. ' + emoji.random()); + + const playlist = await youtube.getPlaylist('https://www.youtube.com/watch?v=05UM-i4PuOY&list=PLxOTV5xn7n1i2HcKtRBthP2loWjrBGAIY').catch(function () { + return msg.say('There was a problem getting the soundtrack. ' + emoji.random()); + }); + // remove the 10 if you removed the queue limit conditions below + const videosObj = await playlist.getVideos(24).catch(function () { + return msg.say( + 'There was a problem getting the soundtrack. ' + emoji.random() + ); + }); + for (let i = 0; i < videosObj.length; i++) { + const video = await videosObj[i].fetch(); + // this can be uncommented if you choose to limit the queue + // if (msg.guild.musicData.queue.length < 10) { + // + msg.guild.musicData.queue.push( + this.constructSongObj(video, voiceChannel) + ); + // } else { + // return msg.say( + // `I can't play the full playlist because there will be more than 10 songs in queue` + // ); + // } + } + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + return msg.say( + 'Now playing the Minecraft soundtrack. ' + emoji.random() + ); + } + + var that = this; + msg.channel + .awaitMessages( + function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + } + ) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') return songEmbed.delete(); + youtube + .getVideoByID(videos[videoIndex - 1].id) + .then(function (video) { + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // songEmbed.delete(); + // return msg.say("I don't support live streams!"); + // } + + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // songEmbed.delete(); + // return msg.say('I cannot play videos longer than 1 hour'); + // } + + // // can be uncommented if you don't want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // songEmbed.delete(); + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + that.constructSongObj(video, voiceChannel) + ); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say('Now playing the Minecraft soundtrack. ' + emoji.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say( + 'An error has occured when trying to get the video ID from YouTube. ' + emoji.random() + ); + }); + }); + } + playSong(queue, msg) { + const classThis = this; // use classThis instead of 'this' because of lexical scope below + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play( + ytdl(queue[0].url, { + quality: 'highestaudio', + highWaterMark: 1024 * 1024 * 10 + }) + ) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xFFCC4D) + .addField('Now Playing:', queue[0].title) + .addField('Duration:', queue[0].duration); + if (queue[1]) videoEmbed.addField('Next Song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('Can\'t play soundtrack. ' + emoji.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + let duration = this.formatDuration(video.duration); + if (duration == '00:00') duration = 'Live Stream'; + return { + url: `https://www.youtube.com/watch?v=${video.raw.id}`, + title: video.title, + duration, + thumbnail: video.thumbnails.high.url, + voiceChannel + }; + } + // prettier-ignore + formatDuration(durationObj) { + const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${ + durationObj.minutes ? durationObj.minutes : '00' + }:${ + (durationObj.seconds < 10) + ? ('0' + durationObj.seconds) + : (durationObj.seconds + ? durationObj.seconds + : '00') + }`; + return duration; + } +};
\ No newline at end of file diff --git a/src/commands/voice/pause.js b/src/commands/voice/pause.js new file mode 100644 index 0000000..6ab6fb0 --- /dev/null +++ b/src/commands/voice/pause.js @@ -0,0 +1,32 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class PauseVoice extends Command { + constructor(client) { + super(client, { + name: 'pause', + group: 'voice', + memberName: 'pause', + description: 'Pauses audio of previously playing.', + guildOnly: true, + examples: ['uwu!pause'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.reply('Please join a channel and try again. ' + emoji.random()); + + if ( + typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null + ) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + + msg.say('Song paused :pause_button:'); + + msg.guild.musicData.songDispatcher.pause(); + } +};
\ No newline at end of file diff --git a/src/commands/voice/play.ts b/src/commands/voice/play.ts new file mode 100644 index 0000000..61cf5d4 --- /dev/null +++ b/src/commands/voice/play.ts @@ -0,0 +1,292 @@ +import ytdl from 'ytdl-core'; +import { Command } from 'discord.js-commando'; +import { MessageEmbed, Message } from 'discord.js'; +import Youtube from 'simple-youtube-api'; +//const { youtubeAPI } = require('../../config.json'); +import config from '../../config.json'; +const youtube = new Youtube(config['yt-api-key']); +import emoji from 'emoji-random'; + +module.exports = class PlayVoice extends Command { + constructor(client) { + super(client, { + name: 'play', + group: 'voice', + memberName: 'play', + description: 'Play the audio of a YouTube video in a voice channel.', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + args: [ + { + key: 'query', + prompt: 'What song would you like to hear?', + type: 'string', + validate: function (query) { + return query.length > 0 && query.length < 200; + } + } + ], + examples: [ + 'uwu!play https://www.youtube.com/watch?v=dQw4w9WgXcQ', + 'uwu!play despacito' + ] + }); + } + async run(msg: Message, { query }) { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.say('Please join a channel and try again. ' + emoji.random()); + + if ( + // if the user entered yt playlist url + query.match( + /^(?!.*\?.*\bv=)https:\/\/www\.youtube\.com\/.*\?.*\blist=.*$/ + ) + ) { + const playlist = await youtube.getPlaylist(query).catch(function () { + return msg.say('Playlist is either private or it does not exist. ' + emoji.random()); + }); + // remove the 10 if you removed the queue limit conditions below + const videosObj = await playlist.getVideos(10).catch(function () { + return msg.say( + 'There was a problem getting one or more of the videos in the playlist. ' + emoji.random() + ); + }); + for (let i = 0; i < videosObj.length; i++) { + const video = await videosObj[i].fetch(); + // this can be uncommented if you choose to limit the queue + // if (msg.guild.musicData.queue.length < 10) { + // + msg.guild.musicData.queue.push( + this.constructSongObj(video, voiceChannel) + ); + // } else { + // return msg.say( + // `I can't play the full playlist because there will be more than 10 songs in queue` + // ); + // } + } + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + return msg.say( + `Playlist - :musical_note: ${playlist.title} :musical_note: has been added to queue. ` + emoji.random() + ); + } + } + + // This if statement checks if the user entered a youtube url, it can be any kind of youtube url + if (query.match(/^(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+/)) { + query = query + .replace(/(>|<)/gi, '') + .split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/); + const id = query[2].split(/[^0-9a-z_\-]/i)[0]; + const video = await youtube.getVideoByID(id).catch(function () { + return msg.say( + 'There was a problem getting the video you provided. ' + emoji.random() + ); + }); + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // return msg.say("I don't support live streams!"); + // } + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // return msg.say('I cannot play videos longer than 1 hour'); + // } + // // can be uncommented if you want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + this.constructSongObj(video, voiceChannel) + ); + if ( + msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined' + ) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + return msg.say(`${video.title} added to queue. ` + emoji.random()); + } + } + + // if user provided a song/video name + const videos = await youtube.searchVideos(query, 5).catch(function () { + return msg.say( + 'There was a problem searching the video you requested. ' + emoji.random() + ); + }); + if (videos.length < 5) { + return msg.say( + `There was some trouble finding what you were looking for, please try again or be more specific. ` + emoji.random() + ); + } + const vidNameArr = []; + for (let i = 0; i < videos.length; i++) { + vidNameArr.push(`${i + 1}: ${videos[i].title}`); + } + vidNameArr.push('exit'); + const embed = new MessageEmbed() + .setColor(0xFFCC4D) + .setTitle('Please choose a song (1 to 5) ' + emoji.random()) + .addField(``, '**Song #**' + vidNameArr[0]) + .addField(``, '**Song #**' + vidNameArr[1]) + .addField(``, '**Song #**' + vidNameArr[2]) + .addField(``, '**Song #**' + vidNameArr[3]) + .addField(``, '**Song #**' + vidNameArr[4]) + .addField(``, '**Exit selection**: ' + 'exit'); + var songEmbed = await msg.channel.send({ + embed + }); + var that = this; + msg.channel + .awaitMessages( + function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + } + ) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') return songEmbed.delete(); + youtube + .getVideoByID(videos[videoIndex - 1].id) + .then(function (video) { + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // songEmbed.delete(); + // return msg.say("I don't support live streams!"); + // } + + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // songEmbed.delete(); + // return msg.say('I cannot play videos longer than 1 hour'); + // } + + // // can be uncommented if you don't want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // songEmbed.delete(); + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + that.constructSongObj(video, voiceChannel) + ); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say(`${video.title} added to queue. ` + emoji.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say( + 'An error has occured when trying to get the video ID from YouTube. ' + emoji.random() + ); + }); + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say( + 'Try again and enter a number between 1 and 5 or exit. ' + emoji.random() + ); + }); + } + playSong(queue, msg) { + const classThis = this; // use classThis instead of 'this' because of lexical scope below + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play( + ytdl(queue[0].url, { + quality: 'highestaudio', + highWaterMark: 1024 * 1024 * 10 + }) + ) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xFFCC4D) + .addField('Now playing:', queue[0].title) + .addField('Duration:', queue[0].duration); + if (queue[1]) videoEmbed.addField('Next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('Can\'t play song. ' + emoji.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + let duration = this.formatDuration(video.duration); + if (duration == '00:00') duration = 'Live Stream'; + return { + url: `https://www.youtube.com/watch?v=${video.raw.id}`, + title: video.title, + duration, + thumbnail: video.thumbnails.high.url, + voiceChannel + }; + } + // prettier-ignore + formatDuration(durationObj) { + const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${ + durationObj.minutes ? durationObj.minutes : '00' + }:${ + (durationObj.seconds < 10) + ? ('0' + durationObj.seconds) + : (durationObj.seconds + ? durationObj.seconds + : '00') + }`; + return duration; + } +};
\ No newline at end of file diff --git a/src/commands/voice/psycho.ts b/src/commands/voice/psycho.ts new file mode 100644 index 0000000..827c00a --- /dev/null +++ b/src/commands/voice/psycho.ts @@ -0,0 +1,198 @@ +import ytdl from 'ytdl-core'; +import { Command } from 'discord.js-commando'; +import { MessageEmbed, Message } from 'discord.js'; +import Youtube from 'simple-youtube-api'; +//const { youtubeAPI } = require('../../config.json'); +import config from '../../config.json'; +const youtube = new Youtube(config['yt-api-key']); +import emoji from 'emoji-random'; + +module.exports = class PsychoVoice extends Command { + constructor(client) { + super(client, { + name: 'psycho', + group: 'voice', + memberName: 'psycho', + description: 'Plays Psycho by Mase.', + guildOnly: true, + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + examples: ['uwu!psycho'] + }); + } + async run(msg: Message, { query }) { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.say('Please join a channel and try again. ' + emoji.random()); + + const id = 'fnd_HSmAODs'; + const video = await youtube.getVideoByID(id).catch(function () { + return msg.say( + 'There was a problem getting the video you provided. ' + emoji.random() + ); + }); + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // return msg.say("I don't support live streams!"); + // } + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // return msg.say('I cannot play videos longer than 1 hour'); + // } + // // can be uncommented if you want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + this.constructSongObj(video, voiceChannel) + ); + if ( + msg.guild.musicData.isPlaying == false || + typeof msg.guild.musicData.isPlaying == 'undefined' + ) { + msg.guild.musicData.isPlaying = true; + return this.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + return msg.say(`${video.title} added to queue. ` + emoji.random()); + } + + var that = this; + msg.channel + .awaitMessages( + function (msg) { + return (msg.content > 0 && msg.content < 6) || msg.content === 'exit'; + }, { + max: 1, + time: 60000, + errors: ['time'] + } + ) + .then(function (response) { + const videoIndex = parseInt(response.first().content); + if (response.first().content === 'exit') return songEmbed.delete(); + youtube + .getVideoByID(videos[videoIndex - 1].id) + .then(function (video) { + // // can be uncommented if you don't want the bot to play live streams + // if (video.raw.snippet.liveBroadcastContent === 'live') { + // songEmbed.delete(); + // return msg.say("I don't support live streams!"); + // } + + // // can be uncommented if you don't want the bot to play videos longer than 1 hour + // if (video.duration.hours !== 0) { + // songEmbed.delete(); + // return msg.say('I cannot play videos longer than 1 hour'); + // } + + // // can be uncommented if you don't want to limit the queue + // if (msg.guild.musicData.queue.length > 10) { + // songEmbed.delete(); + // return msg.say( + // 'There are too many songs in the queue already, skip or wait a bit' + // ); + // } + msg.guild.musicData.queue.push( + that.constructSongObj(video, voiceChannel) + ); + if (msg.guild.musicData.isPlaying == false) { + msg.guild.musicData.isPlaying = true; + if (songEmbed) { + songEmbed.delete(); + } + that.playSong(msg.guild.musicData.queue, msg); + } else if (msg.guild.musicData.isPlaying == true) { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say(`${video.title} added to queue. ` + emoji.random()); + } + }) + .catch(function () { + if (songEmbed) { + songEmbed.delete(); + } + return msg.say( + 'An error has occured when trying to get the video ID from YouTube. ' + emoji.random() + ); + }); + }); + } + playSong(queue, msg) { + const classThis = this; // use classThis instead of 'this' because of lexical scope below + queue[0].voiceChannel + .join() + .then(function (connection) { + const dispatcher = connection + .play( + ytdl(queue[0].url, { + quality: 'highestaudio', + highWaterMark: 1024 * 1024 * 10 + }) + ) + .on('start', function () { + msg.guild.musicData.songDispatcher = dispatcher; + const volume = 100 / 100; + msg.guild.musicData.volume = volume; + dispatcher.setVolume(msg.guild.musicData.volume); + const videoEmbed = new MessageEmbed() + .setThumbnail(queue[0].thumbnail) + .setColor(0xFFCC4D) + .addField('Now playing:', queue[0].title) + .addField('Duration:', queue[0].duration); + if (queue[1]) videoEmbed.addField('Next song:', queue[1].title); + msg.say(videoEmbed); + msg.guild.musicData.nowPlaying = queue[0]; + return queue.shift(); + }) + .on('finish', function () { + if (queue.length >= 1) { + return classThis.playSong(queue, msg); + } else { + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + } + }) + .on('error', function (e) { + msg.say('Can\'t play song ' + emoji.random()); + console.error(e); + msg.guild.musicData.queue.length = 0; + msg.guild.musicData.isPlaying = false; + msg.guild.musicData.nowPlaying = null; + msg.guild.musicData.songDispatcher = null; + return msg.guild.me.voice.channel.leave(); + }); + }) + .catch(function (e) { + console.error(e); + return msg.guild.me.voice.channel.leave(); + }); + } + constructSongObj(video, voiceChannel) { + let duration = this.formatDuration(video.duration); + if (duration == '00:00') duration = 'Live Stream'; + return { + url: `https://www.youtube.com/watch?v=${video.raw.id}`, + title: video.title, + duration, + thumbnail: video.thumbnails.high.url, + voiceChannel + }; + } + // prettier-ignore + formatDuration(durationObj) { + const duration = `${durationObj.hours ? (durationObj.hours + ':') : ''}${ + durationObj.minutes ? durationObj.minutes : '00' + }:${ + (durationObj.seconds < 10) + ? ('0' + durationObj.seconds) + : (durationObj.seconds + ? durationObj.seconds + : '00') + }`; + return duration; + } +};
\ No newline at end of file diff --git a/src/commands/voice/queue.js b/src/commands/voice/queue.js new file mode 100644 index 0000000..59fce1a --- /dev/null +++ b/src/commands/voice/queue.js @@ -0,0 +1,51 @@ +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); +const emoji = require('emoji-random'); + +module.exports = class QueueVoice extends Command { + constructor(client) { + super(client, { + name: 'queue', + aliases: [ + 'q', + 'song-list', + 'next-songs', + 'songlist', + 'nextsongs', + 'nextsong', + 'next-song' + ], + group: 'voice', + memberName: 'queue', + description: 'Displays the current queue.', + guildOnly: true, + examples: [ + 'uwu!queue', + 'uwu!q', + 'uwu!songlist', + 'uwu!song-list', + 'uwu!nextsong', + 'uwu!next-song', + 'uwu!nextsongs', + 'uwu!next-songs' + ], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + if (msg.guild.musicData.queue.length == 0) + return msg.say('There aren\'t any songs in the current queue. ' + emoji.random()); + const titleArray = []; + msg.guild.musicData.queue.map(obj => { + titleArray.push(obj.title); + }); + let queueEmbed = new MessageEmbed() + .setColor(0xFFCC4D) + .setTitle('Music Queue ' + emoji.random()); + for (let i = 0; i < titleArray.length; i++) { + queueEmbed.addField(``, `**${i + 1}**: ` + `${titleArray[i]}`); + } + return msg.say(queueEmbed); + } +};
\ No newline at end of file diff --git a/src/commands/voice/remove.js b/src/commands/voice/remove.js new file mode 100644 index 0000000..34a30de --- /dev/null +++ b/src/commands/voice/remove.js @@ -0,0 +1,41 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class RemoveVoice extends Command { + constructor(client) { + super(client, { + name: 'remove', + group: 'voice', + memberName: 'remove', + description: 'Removes a song from the current queue.', + guildOnly: true, + args: [ + { + key: 'songNumber', + prompt: 'What song would you like to remove from the current queue?', + type: 'integer' + } + ], + examples: ['uwu!remove 2'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg, { songNumber }) { + if (songNumber < 1 && songNumber >= msg.guild.musicData.queue.length) { + return msg.reply('Please enter a valid song. ' + emoji.random()); + } + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.reply('Please join a channel and try again. ' + emoji.random()); + + if ( + typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null + ) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + + msg.guild.musicData.queue.splice(songNumber - 1, 1); + return msg.say(`Removed song **#${songNumber}** from current queue. ` + emoji.random()); + } +};
\ No newline at end of file diff --git a/src/commands/voice/resume.js b/src/commands/voice/resume.js new file mode 100644 index 0000000..1b28b28 --- /dev/null +++ b/src/commands/voice/resume.js @@ -0,0 +1,32 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class ResumeVoice extends Command { + constructor(client) { + super(client, { + name: 'resume', + group: 'voice', + memberName: 'resume', + description: 'Resumes audio of previously paused.', + guildOnly: true, + examples: ['uwu!resume'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.reply('Please join a channel and try again. ') + emoji.random(); + + if ( + typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null + ) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + + msg.say('Song resumed :play_pause:'); + + msg.guild.musicData.songDispatcher.resume(); + } +};
\ No newline at end of file diff --git a/src/commands/voice/shuffle.js b/src/commands/voice/shuffle.js new file mode 100644 index 0000000..3183f87 --- /dev/null +++ b/src/commands/voice/shuffle.js @@ -0,0 +1,53 @@ +const { Command } = require('discord.js-commando'); +const { MessageEmbed } = require('discord.js'); +const emoji = require('emoji-random'); + +module.exports = class ShuffleVoice extends Command { + constructor(client) { + super(client, { + name: 'shuffle', + group: 'voice', + memberName: 'shuffle', + description: 'Shuffles the current queue.', + guildOnly: true, + examples: ['uwu!shuffle'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.reply('Please join channel and try again. ' + emoji.random()); + + if ( + typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null + ) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + + if (msg.guild.musicData.queue.length < 1) + return msg.say('There aren\'t any songs in the current queue. ' + emoji.random()); + + shuffleQueue(msg.guild.musicData.queue); + + const titleArray = []; + msg.guild.musicData.queue.map(obj => { + titleArray.push(obj.title); + }); + var queueEmbed = new MessageEmbed() + .setColor(0xF97DAE) + .setTitle('New Music Queue ' + emoji.random()); + for (let i = 0; i < titleArray.length; i++) { + queueEmbed.addField(`${i + 1}:`, `${titleArray[i]}`); + } + return msg.say(queueEmbed); + } +}; + +function shuffleQueue(queue) { + for (let i = queue.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [queue[i], queue[j]] = [queue[j], queue[i]]; + } +}
\ No newline at end of file diff --git a/src/commands/voice/skip.js b/src/commands/voice/skip.js new file mode 100644 index 0000000..8638291 --- /dev/null +++ b/src/commands/voice/skip.js @@ -0,0 +1,29 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class SkipVoice extends Command { + constructor(client) { + super(client, { + name: 'skip', + group: 'voice', + memberName: 'skip', + description: 'Skips one song ahead in the current queue.', + guildOnly: true, + examples: ['uwu!skip'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + const voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.reply('Please join a channel and try again. ' + emoji.random()); + + if ( + typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null + ) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + msg.guild.musicData.songDispatcher.end(); + } +};
\ No newline at end of file diff --git a/src/commands/voice/skipall.js b/src/commands/voice/skipall.js new file mode 100644 index 0000000..e981f46 --- /dev/null +++ b/src/commands/voice/skipall.js @@ -0,0 +1,44 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class SkipAllVoice extends Command { + constructor(client) { + super(client, { + name: 'skipall', + aliases: [ + 'endqueue', + 'endq', + 'skipqueue', + 'skipq' + ], + group: 'voice', + memberName: 'skipall', + description: 'Removes all the songs from current queue.', + guildOnly: true, + examples: [ + 'uwu!endqueue', + 'uwu!endq', + 'uwu!skipqueue', + 'uwu!skipq' + ], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.reply('Please join a channel and try again. ' + emoji.random()); + + if ( + typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null + ) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + if (!msg.guild.musicData.queue) + return msg.say('There aren\'t any songs in the current queue. ' + emoji.random()); + msg.guild.musicData.songDispatcher.end(); + msg.guild.musicData.queue.length = 0; // clear queue + return; + } +};
\ No newline at end of file diff --git a/src/commands/voice/skipto.js b/src/commands/voice/skipto.js new file mode 100644 index 0000000..f43d56c --- /dev/null +++ b/src/commands/voice/skipto.js @@ -0,0 +1,43 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class SkipToVoice extends Command { + constructor(client) { + super(client, { + name: 'skipto', + group: 'voice', + memberName: 'skipto', + description: 'Skip to a certain song in the current queue.', + guildOnly: true, + args: [{ + key: 'songNumber', + prompt: 'What song would you like to skip to in the current queue?', + type: 'integer' + }], + examples: ['uwu!skipto 5'], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg, { songNumber }) { + if (songNumber < 1 && songNumber >= msg.guild.musicData.queue.length) { + return msg.reply('Please enter a valid song. ' + emoji.random()); + } + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.reply('Please join channel and try again. ' + emoji.random()); + + if ( + typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null + ) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + + if (msg.guild.musicData.queue < 1) + return msg.reply('There aren\'t any songs in the current queue. ' + emoji.random()); + + msg.guild.musicData.queue.splice(0, songNumber - 1); + msg.guild.musicData.songDispatcher.end(); + return; + } +};
\ No newline at end of file diff --git a/src/commands/voice/volume.js b/src/commands/voice/volume.js new file mode 100644 index 0000000..96a6de3 --- /dev/null +++ b/src/commands/voice/volume.js @@ -0,0 +1,45 @@ +const { Command } = require('discord.js-commando'); +const emoji = require('emoji-random'); + +module.exports = class VolumeVoice extends Command { + constructor(client) { + super(client, { + name: 'volume', + aliases: ['vol'], + group: 'voice', + memberName: 'volume', + description: 'Changes volume of any currentaly playing audio.', + guildOnly: true, + args: [ + { + key: 'wantedVol', + prompt: 'What would volume you like? (1 to 200)', + type: 'integer', + validate: wantedVol => wantedVol >= 1 && wantedVol <= 200 + } + ], + examples: [ + 'uwu!volume 20', + 'uwu!vol 50' + ], + clientPermissions: ['SPEAK', 'CONNECT', 'SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], + }); + } + run(msg, { wantedVol }) { + var voiceChannel = msg.member.voice.channel; + if (!voiceChannel) return msg.reply('Please join a channel and try again. ' + emoji.random()); + + if ( + typeof msg.guild.musicData.songDispatcher == 'undefined' || + msg.guild.musicData.songDispatcher == null + ) { + return msg.reply('There isn\'t any audio playing right now. ' + emoji.random()); + } + + const volume = wantedVol / 100; + msg.guild.musicData.volume = volume; + msg.guild.musicData.songDispatcher.setVolume(volume); + msg.reply(`Volume is now: **${wantedVol}%**. ` + emoji.random()); + } +};
\ No newline at end of file diff --git a/config.json b/src/config.json index 6660084..16bac59 100644 --- a/config.json +++ b/src/config.json @@ -1,4 +1,4 @@ { "secret":"Njk5NDczMjYzOTk4MjcxNDg5.XpU5oQ.btZuxVudhNllSQY6CxrXXtMJm9A", - "prefix":"uwu!" -} + "yt-api-key":"AIzaSyCeG1lQAeInv4vjFv_eTL9IFAFNdQC9Nk8" +}
\ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a408deb --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,70 @@ +{ + "compilerOptions": { + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + "allowJs": true, /* Allow javascript files to be compiled. */ + "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "dist", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./build", /* Specify file to store incremental compilation information */ + "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "resolveJsonModule": true, /* Include modules imported with '.json' extension */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "include": [ + "./src/**/*" + ] +} |