From ae65da1bf78543e1a8980a34c37c2caf912ff62b Mon Sep 17 00:00:00 2001 From: Dalton Date: Thu, 6 Dec 2018 22:39:29 -0800 Subject: [PATCH] summon edits and hopefully bug fix --- .gitlab-ci.yml | 1 + bot.js | 744 +++++++++++++++++++++++++------------------------ 2 files changed, 380 insertions(+), 365 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7dca449..e17f1aa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,6 +13,7 @@ build: deploy_staging: stage: deploy + script: - echo "Deploy to staging server" environment: diff --git a/bot.js b/bot.js index 04168dd..fafff12 100644 --- a/bot.js +++ b/bot.js @@ -12,109 +12,157 @@ var channel = null; // available commands function availableCommands() { return "Available commands: " + - "\n**[SFW]** b.<*coinflip, 8ball, roll, compute, summon, bunny, dankmemes, meirl, animemes, moe, moe-boys, hotguys , kgirls, kboys*>" + - "\n**[NSFW]** b.<*lewd, ecchi, hentai, yaoi, yuri, neko, pokeporn, hgifs*>" + - "\nFor more information on a command, you may use: *b.help *"; + "\n**[SFW]** b.<*coinflip, 8ball, roll, compute, summon, bunny, dankmemes, meirl, animemes, moe, moe-boys, hotguys , kgirls, kboys*>" + + "\n**[NSFW]** b.<*lewd, ecchi, hentai, yaoi, yuri, neko, pokeporn, hgifs*>" + + "\nFor more information on a command, you may use: *b.help *"; } // help commands function commandsHelp(requestedCommand) { - var commands = {"coinflip": "**coinflip:** Returns a result of heads or tails.", - "8ball": "**8ball:** Shakes an 8 ball and returns a result.", - "roll": "**roll:** Rolls a number between 1-100 (or a specified range [ex: b.roll 50-100])", - "compute": "**compute:** Uses WolframAlpha to process the question asked.", - "summon": "**summon:** Posts a picture from a user inputted subreddit", - "bunny": "**bunny:** Posts a picture of different bunnies", - "dankmemes": "**dankmemes:** Posts a picture of some dank memes (r/dankmemes)", - "meirl": "**meirl:** Posts a picture of anime irl (r/anime_irl)", - "animemes": "**animemes:** Posts a picture of anime memes (r/animemes)", - "moe": "**moe:** Posts a picture of moe anime (r/awwnime)", - "moe-boys": "**moe-boys:** Posts a picture of moe anime boys (r/cuteanimeboys)", - "hotguys": "**hotguys:** Posts a picture of hot anime guys (r/bishounen)", - "kgirls": "**kgirls:** Posts a picture of k-pop girls (r/kpics or r/kpopfap)", - "kboys": "**kboys:** Posts a picture of k-pop guys (r/kfanservice, r/kpecs, or r/cutekboys)", - "lewd": "[NSFW] **lewd:** Posts a picture of lewd anime girls (r/pantsu)", - "ecchi": "[NSFW] **ecchi:** Posts a picture of ecchi anime girls (r/ecchi)", - "hentai": "[NSFW] **hentai:** Posts a picture of hentai (r/hentai or r/sukebei)", - "yaoi": "[NSFW] **yaoi:** Posts a picture of yaoi (r/yaoi)", - "yuru": "[NSFW] **yuri:** Post a picture of yuri (r/yuri)", - "neko": "[NSFW] **neko:** Posts a picture of cat girls (r/nekomimi)", - "pokeporn": "[NSFW] **pokeporn:** Posts a picture of pokemon hentai (r/pokeporn)", - "hgifs": "[NSFW] **hgifs:** Posts a gif of hentai (r/nsfwanimegifs)", - "hentaibondage": "[NSFW] **hentaibondage:** Posts a picture of hentai in bondage (r/hentaibondage)"}; + var commands = { + "coinflip": "**coinflip:** Returns a result of heads or tails.", + "8ball": "**8ball:** Shakes an 8 ball and returns a result.", + "roll": "**roll:** Rolls a number between 1-100 (or a specified range [ex: b.roll 50-100])", + "compute": "**compute:** Uses WolframAlpha to process the question asked.", + "summon": "**summon:** Posts a picture from a user inputted subreddit", + "bunny": "**bunny:** Posts a picture of different bunnies", + "dankmemes": "**dankmemes:** Posts a picture of some dank memes (r/dankmemes)", + "meirl": "**meirl:** Posts a picture of anime irl (r/anime_irl)", + "animemes": "**animemes:** Posts a picture of anime memes (r/animemes)", + "moe": "**moe:** Posts a picture of moe anime (r/awwnime)", + "moe-boys": "**moe-boys:** Posts a picture of moe anime boys (r/cuteanimeboys)", + "hotguys": "**hotguys:** Posts a picture of hot anime guys (r/bishounen)", + "kgirls": "**kgirls:** Posts a picture of k-pop girls (r/kpics or r/kpopfap)", + "kboys": "**kboys:** Posts a picture of k-pop guys (r/kfanservice, r/kpecs, or r/cutekboys)", + "lewd": "[NSFW] **lewd:** Posts a picture of lewd anime girls (r/pantsu)", + "ecchi": "[NSFW] **ecchi:** Posts a picture of ecchi anime girls (r/ecchi)", + "hentai": "[NSFW] **hentai:** Posts a picture of hentai (r/hentai or r/sukebei)", + "yaoi": "[NSFW] **yaoi:** Posts a picture of yaoi (r/yaoi)", + "yuru": "[NSFW] **yuri:** Post a picture of yuri (r/yuri)", + "neko": "[NSFW] **neko:** Posts a picture of cat girls (r/nekomimi)", + "pokeporn": "[NSFW] **pokeporn:** Posts a picture of pokemon hentai (r/pokeporn)", + "hgifs": "[NSFW] **hgifs:** Posts a gif of hentai (r/nsfwanimegifs)", + "hentaibondage": "[NSFW] **hentaibondage:** Posts a picture of hentai in bondage (r/hentaibondage)" + }; - if (commands[requestedCommand] === undefined) - { + if (commands[requestedCommand] === undefined) { return "Command not found, try entering **b.commands** for a full list of commands"; } - else - { + else { return commands[requestedCommand]; } } // coin flip function coinFlip() { - return (Math.floor(Math.random() * 2) === 0) ? 'heads' : 'tails'; + return (Math.floor(Math.random() * 2) === 0) ? 'heads' : 'tails'; } // 8 ball function eightBall() { - var answers = [ - 'Maybe.', 'Certainly not.', 'I hope so.', 'Not in your wildest dreams.', - 'There is a good chance.', 'Quite likely.', 'I think so.', 'I hope not.', - 'I hope so.', 'Never!', 'Fuhgeddaboudit.', 'Ahaha! Really?!?', 'Pfft.', - 'Sorry, bucko.', 'Hell, yes.', 'Hell to the no.', 'The future is bleak.', - 'The future is uncertain.', 'I would rather not say.', 'Who cares?', - 'Possibly.', 'Never, ever, ever.', 'There is a small chance.', 'Yes!']; + var answers = [ + 'Maybe.', 'Certainly not.', 'I hope so.', 'Not in your wildest dreams.', + 'There is a good chance.', 'Quite likely.', 'I think so.', 'I hope not.', + 'I hope so.', 'Never!', 'Fuhgeddaboudit.', 'Ahaha! Really?!?', 'Pfft.', + 'Sorry, bucko.', 'Hell, yes.', 'Hell to the no.', 'The future is bleak.', + 'The future is uncertain.', 'I would rather not say.', 'Who cares?', + 'Possibly.', 'Never, ever, ever.', 'There is a small chance.', 'Yes!']; - return answers[(Math.floor(Math.random() * answers.length))]; + return answers[(Math.floor(Math.random() * answers.length))]; } // number roll function numberRoll(startingRange, endingRange) { startingRange = Math.ceil(startingRange); endingRange = Math.floor(endingRange); - return Math.floor(Math.random() * (endingRange-startingRange)) + startingRange; + return Math.floor(Math.random() * (endingRange - startingRange)) + startingRange; } // stupid question response function stupidQuestion() { - var answers = [ + let answers = [ 'What kind of dumb question is that?', 'A real question please.', 'Is that supposed to be a question?', 'Who asked such a dumb question?', 'How about a good question instead?', 'Only good questions please', 'Oh god, is that a question?', 'Are you dumb because that\'s a dumb question.']; - return answers[(Math.floor(Math.random() * answers.length))]; + return answers[(Math.floor(Math.random() * answers.length))]; } function noQuestion() { - var answers = ['it helps to ask a question...', 'question plz.', 'where is the question?']; + let answers = ['it helps to ask a question...', 'question plz.', 'where is the question?']; return answers[(Math.floor(Math.random() * answers.length))]; } +// Try's all sources and returns in preferred order +// 1. Reddit +// 2. Imgur +// 3. RedditBooru +function bestEffortRequest(subpage, page_max) { + + let reddit_response = subredditRequest(subpage); + if(reddit_response) { return reddit_response; } + + let imgur_response; + if(page_max) { + imgur_response = imgurRequest(subpage, page_max); + if(imgur_response) { return imgur_response } + } + + let redditbooru_response = redditbooruRequest(subpage); + if(redditbooru_response) { return redditbooru_response } + + return "I couldn't find that, sauce?"; +} + +// Dalton's image summon command. +// Checks for banned author's using a hard coded list of discord ids. +// Also rudely cleans garbage entries. +function summonCommand() { + let bannedAuthors = ['143999140878090240']; + if (bannedAuthors.contains(message.author)) { + + let messageSplit = message.content.substring(2).split(' '); + if (messageSplit.length >= 2) { + let redditToSummon = messageSplit[1].replace(/[^a-zA-Z0-9_\-]+/g, ""); + + // Valid Argument + if (redditToSummon) { + + message.channel.send(message.author + ' summons *' + redditToSummon + '*\n'); + let site_response = bestEffortRequest(redditToSummon, 5); + + if (site_response) { + message.channel.send(redditResponse); + } + + // Missing Argument + } else { + message.reply("wut do i summon?"); + } + } + } else { + message.reply("You're a bad boi and a banned author, you can't summon til you learn to behave.") + } +} + // imgur request -function imgurRequest(subreddit, page_max) -{ +function imgurRequest(subreddit, page_max) { var multiSubreddit = subreddit.split(','); - var request_url = 'https://api.imgur.com/3/gallery/r/' + multiSubreddit[getRandomInt(0, multiSubreddit.length-1)] + '/time/' + getRandomInt(1,page_max); + var request_url = 'https://api.imgur.com/3/gallery/r/' + multiSubreddit[getRandomInt(0, multiSubreddit.length - 1)] + '/time/' + getRandomInt(1, page_max); var req = new XMLHttpRequest(); var returnText = ""; - req.onreadystatechange = function() - { - if (req.readyState === 4 && req.status === 200) - { - if(req.responseText != "Not found") - { + req.onreadystatechange = function () { + if (req.readyState === 4 && req.status === 200) { + if (req.responseText !== "Not found") { var json = JSON.parse(req.responseText); - returnText = json.data[getRandomInt(0,json.data.length-1)].link; + returnText = json.data[getRandomInt(0, json.data.length - 1)].link; } - } + } }; req.open("GET", request_url, false); @@ -125,36 +173,30 @@ function imgurRequest(subreddit, page_max) } // subreddit request -function subredditRequest(subreddit) -{ +function subredditRequest(subreddit) { var multiSubreddit = subreddit.split(','); - var redditURL = "https://www.reddit.com/r/" + multiSubreddit[getRandomInt(0, multiSubreddit.length-1)] + "/.json?show=all&count=25&limit=100"; + var redditURL = "https://www.reddit.com/r/" + multiSubreddit[getRandomInt(0, multiSubreddit.length - 1)] + "/.json?show=all&count=25&limit=100"; var req = new XMLHttpRequest(); var returnText = ""; - req.onreadystatechange = function() - { - if(req.readyState === 4 && req.status === 200) - { + req.onreadystatechange = function () { + if (req.readyState === 4 && req.status === 200) { var json = JSON.parse(req.responseText); - while(true) - { - var i = getRandomInt(0,json.data.children.length-1); - try - { - if(json.data.children[i].data.post_hint === "image" || json.data.children[i].data.post_hint === "link" || json.data.children.data.post_hint === "rich:video") - { - returnText = json.data.children[i].data.url; - break; - } - } - catch (error) // error parsing json - { - // Ignore the error and continue. - // continue; <-- last line in the loop... so does nothing. - } + while (true) { + var i = getRandomInt(0, json.data.children.length - 1); + try { + if (json.data.children[i].data.post_hint === "image" || json.data.children[i].data.post_hint === "link" || json.data.children.data.post_hint === "rich:video") { + returnText = json.data.children[i].data.url; + break; + } + } + catch (error) // error parsing json + { + // Ignore the error and continue. + // continue; <-- last line in the loop... so does nothing. + } } } }; @@ -166,23 +208,20 @@ function subredditRequest(subreddit) } // redditbooru request -function redditbooruRequest(subreddit) -{ +function redditbooruRequest(subreddit) { var multiSubreddit = subreddit.split(','); - var url = "https://" + multiSubreddit[getRandomInt(0, multiSubreddit.length-1)] + ".redditbooru.com/images/?limit=1000"; + var url = "https://" + multiSubreddit[getRandomInt(0, multiSubreddit.length - 1)] + ".redditbooru.com/images/?limit=1000"; var req = new XMLHttpRequest(); var returnText = ""; - req.onreadystatechange = function() - { - if(req.readyState === 4 && req.status === 200) - { + req.onreadystatechange = function () { + if (req.readyState === 4 && req.status === 200) { var json = JSON.parse(req.responseText); var imageID = getRandomInt(0, json.length); returnText = json[imageID].cdnUrl; } - } + }; req.open("GET", url, false); req.send(); @@ -191,19 +230,16 @@ function redditbooruRequest(subreddit) } // wolframalpha computation -function calculate(message) -{ +function calculate(message) { var url = "http://api.wolframalpha.com/v1/result?appid=" + auth.wolframalpha + "&i=" + encodeURIComponent(message); var req = new XMLHttpRequest(); var returnText = ""; - req.onreadystatechange = function() - { - if(req.readyState === 4 && req.status === 200) - { + req.onreadystatechange = function () { + if (req.readyState === 4 && req.status === 200) { returnText = req.responseText; } - } + }; req.open("GET", url, false); req.send(); @@ -212,25 +248,20 @@ function calculate(message) } // get random number with starting and ending number -function getRandomInt(min, max) -{ +function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } // voice setup -function setupVoice(file, volume, voice_channel) -{ +function setupVoice(file, volume, voice_channel) { playQueue.unshift(file); playVolume.unshift(volume); - if(!channel) - { + if (!channel) { channel = voice_channel; } - if(channel instanceof Discord.VoiceChannel) - { - if(!queueExists) - { + if (channel instanceof Discord.VoiceChannel) { + if (!queueExists) { queueExists = true; channel.join().then(connection => { @@ -238,8 +269,7 @@ function setupVoice(file, volume, voice_channel) }); } } - else - { + else { playQueue.pop(); playVolume.pop(); channel = null; @@ -247,10 +277,8 @@ function setupVoice(file, volume, voice_channel) } // voice queue -function handlePlayQueue(connection) -{ - if (playQueue.length === 0) - { +function handlePlayQueue(connection) { + if (playQueue.length === 0) { return; } @@ -259,22 +287,20 @@ function handlePlayQueue(connection) dispatcher.on("end", () => { playQueue.pop(); - playVolume.pop(); + playVolume.pop(); - if(playQueue.length === 0) - { - queueExists = false; - if(channel != null) - { - channel.leave(); - channel = null; - } + if (playQueue.length === 0) { + queueExists = false; + if (channel != null) { + channel.leave(); + channel = null; } - else - { - handlePlayQueue(connection); - } - }); + } + else { + handlePlayQueue(connection); + } +}) + ; dispatcher.setVolume(playVolume[0]); } @@ -284,266 +310,254 @@ const client = new Discord.Client(); client.on('ready', () => { console.log('Bot is ready'); - // update status - var availableTypes = ['PLAYING', 'LISTENING', 'WATCHING']; - var setType = availableTypes[Math.floor(Math.random() * availableTypes.length)]; - var setStatus; +// update status +var availableTypes = ['PLAYING', 'LISTENING', 'WATCHING']; +var setType = availableTypes[Math.floor(Math.random() * availableTypes.length)]; +var setStatus; - switch(setType) - { - case 'PLAYING': - var availableStatus = ['with cute bunnies', 'with bunny toys', 'in bunny heaven', 'with my pet bunny', 'with all the bunnies']; - setStatus = availableStatus[Math.floor(Math.random() * availableStatus.length)]; - break; - case 'LISTENING': - var availableStatus = ['to cute bunnies', 'to adorable bunnies eating', 'to bunnies playing with toys', 'to bunnies pouting']; - setStatus = availableStatus[Math.floor(Math.random() * availableStatus.length)]; - break; - case 'WATCHING': - var availableStatus = ['cute bunnies', 'cute bunnies play', 'cute bunnies sleep', 'bunnies nibbling on food', 'swiftimustv']; - setStatus = availableStatus[Math.floor(Math.random() * availableStatus.length)]; - break; - } +switch (setType) { + case 'PLAYING': + var availableStatus = ['with cute bunnies', 'with bunny toys', 'in bunny heaven', 'with my pet bunny', 'with all the bunnies']; + setStatus = availableStatus[Math.floor(Math.random() * availableStatus.length)]; + break; + case 'LISTENING': + var availableStatus = ['to cute bunnies', 'to adorable bunnies eating', 'to bunnies playing with toys', 'to bunnies pouting']; + setStatus = availableStatus[Math.floor(Math.random() * availableStatus.length)]; + break; + case 'WATCHING': + var availableStatus = ['cute bunnies', 'cute bunnies play', 'cute bunnies sleep', 'bunnies nibbling on food', 'swiftimustv']; + setStatus = availableStatus[Math.floor(Math.random() * availableStatus.length)]; + break; +} - client.user.setActivity(setStatus, {type: setType}); -}); +client.user.setActivity(setStatus, {type: setType}); +}) +; // commands client.on('message', message => { - if (message.content.substring(0, 2).toUpperCase() === 'B.') { - var args = message.content.substring(2).split(' '); - var cmd = args[0]; + if(message.content.substring(0, 2).toUpperCase() === 'B.') { + var args = message.content.substring(2).split(' '); + var cmd = args[0]; - switch(cmd) - { - // Reply commands - case 'command': - case 'commands': - case 'help': - var message_content = message.content.substring(2).split(' '); - if(message.content.substring(2).split(' ')[1] === undefined) - { - message.channel.send(availableCommands()); - } - else - { - message.channel.send(commandsHelp(message_content[1])); - } - break; - case 'coinflip': - case 'coin': - message.channel.send(message.author + ' flipped a coin, it landed on **' + coinFlip() + '!**'); - break; - case '8ball': - if(message.content.substring(8).length > 0) - { - message.channel.send(message.author + ' asked: *' + message.content.substring(8) + '*\n' + - 'The magic 8 ball says: **' + eightBall() + '**'); - } - else - { - message.reply(noQuestion()); - } - break; - case 'roll': - var message_content = message.content.substring(2).split(' '); - if(message_content[1] !== undefined && message_content[1].length > 0) // ranged roll - { - var regex = /^[0-9]+-[0-9]+$/; - if(regex.test(message_content[1])) - { - var range_break = message_content[1].split('-'); + switch (cmd) { + // Reply commands + case 'command': + case 'commands': + case 'help': + var message_content = message.content.substring(2).split(' '); + if (message.content.substring(2).split(' ')[1] === undefined) { + message.channel.send(availableCommands()); + } + else { + message.channel.send(commandsHelp(message_content[1])); + } + break; + case 'coinflip': + case 'coin': + message.channel.send(message.author + ' flipped a coin, it landed on **' + coinFlip() + '!**'); + break; + case '8ball': + if (message.content.substring(8).length > 0) { + message.channel.send(message.author + ' asked: *' + message.content.substring(8) + '*\n' + + 'The magic 8 ball says: **' + eightBall() + '**'); + } + else { + message.reply(noQuestion()); + } + break; + case 'roll': + var message_content = message.content.substring(2).split(' '); + if (message_content[1] !== undefined && message_content[1].length > 0) // ranged roll + { + var regex = /^[0-9]+-[0-9]+$/; + if (regex.test(message_content[1])) { + var range_break = message_content[1].split('-'); - message.channel.send(message.author + ' rolls a number between ' + range_break[0] + ' and ' + range_break[1] + '. They roll **' + numberRoll(range_break[0], range_break[1]) + '**.'); - } - else - { - message.channel.send('Unknown roll format. Use "**b.help roll**" for more information.'); - } + message.channel.send(message.author + ' rolls a number between ' + range_break[0] + ' and ' + range_break[1] + '. They roll **' + numberRoll(range_break[0], range_break[1]) + '**.'); } - else // default roll (1-100) - { - message.channel.send(message.author + ' rolls a number between 1 and 100. They roll **' + numberRoll(1, 100) + '**.'); + else { + message.channel.send('Unknown roll format. Use "**b.help roll**" for more information.'); } - break; - case 'compute': - case 'convert': - case 'calculate': - var message_content = message.content.substring(2).split(' '); - if(message_content[1] !== undefined && message_content[1].length > 0) - { - var response = calculate(message.content.substring(message.content.indexOf(' ')+1)); - if(response === "") - { - response = stupidQuestion(); - } - message.channel.send(message.author + ' wants to compute: *' + message.content.substring(message.content.indexOf(' ')+1) + '*\n' + + } + else // default roll (1-100) + { + message.channel.send(message.author + ' rolls a number between 1 and 100. They roll **' + numberRoll(1, 100) + '**.'); + } + break; + case 'compute': + case 'convert': + case 'calculate': + var message_content = message.content.substring(2).split(' '); + if (message_content[1] !== undefined && message_content[1].length > 0) { + var response = calculate(message.content.substring(message.content.indexOf(' ') + 1)); + if (response === "") { + response = stupidQuestion(); + } + message.channel.send(message.author + ' wants to compute: *' + message.content.substring(message.content.indexOf(' ') + 1) + '*\n' + 'The result is: **' + response + '**') - } - else - { - message.reply(noQuestion()); - } - break; + } + else { + message.reply(noQuestion()); + } + break; - // SFW Generic Image commands - case 'bun': - case 'bunny': - case 'bunnies': - message.channel.send(imgurRequest('rabbits',5)); - break; - case 'dankmeme': - case 'dankmemes': - message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('dankmemes') : imgurRequest('dankmemes', 5)); - break; - case 'source': - message.channel.send("BunnyBot's source code: https://git.dtam.pw/daniel/discord-bot-js"); - break; - case 'testcommand': - message.channel.send("testing! 3.0"); - break; + // SFW Generic Image commands + case 'bun': + case 'bunny': + case 'bunnies': + message.channel.send(imgurRequest('rabbits', 5)); + break; + case 'dankmeme': + case 'dankmemes': + message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('dankmemes') : imgurRequest('dankmemes', 5)); + break; + case 'source': + message.channel.send("BunnyBot's source code: https://git.dtam.pw/daniel/discord-bot-js"); + break; + case 'testcommand': + message.channel.send("testing! 3.0"); + break; - // SFW Anime Image commands - case 'meirl': - message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('anime_irl') : imgurRequest('anime_irl', 5)); - break; - case 'animemes': - message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('animemes') : imgurRequest('animemes', 5)); - break; - case 'moe': - message.channel.send((Math.floor(Math.random() * 2) === 0) ? redditbooruRequest('awwnime') : imgurRequest('awwnime', 5)); - break; - case 'moe-boys': - message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('cuteanimeboys') : imgurRequest('cuteanimeboys', 1)); - break; - case 'hotguys': - message.channel.send((Math.floor(Math.random() * 2) === 0) ? redditbooruRequest('bishounen') : subredditRequest('bishounen')); - break; - case 'kgirls': - switch(Math.floor(Math.random() * 3)) - { - case 0: - message.channel.send(redditbooruRequest('kpics')); - break; - case 1: - message.channel.send(imgurRequest('kpics', 5)); - break; - case 2: - message.channel.send(subredditRequest('kpopfap')); - break; - } - break; - case 'kboys': - switch(Math.floor(Math.random() * 3)) - { - case 0: - message.channel.send(imgurRequest('kfanservice',1)); - break; - case 1: - message.channel.send(imgurRequest('kpecs',1)); - break; - case 2: - message.channel.send(imgurRequest('cutekboys', 1)); - break; - } - break; + // SFW Anime Image commands + case 'meirl': + message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('anime_irl') : imgurRequest('anime_irl', 5)); + break; + case 'animemes': + message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('animemes') : imgurRequest('animemes', 5)); + break; + case 'moe': + message.channel.send((Math.floor(Math.random() * 2) === 0) ? redditbooruRequest('awwnime') : imgurRequest('awwnime', 5)); + break; + case 'moe-boys': + message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('cuteanimeboys') : imgurRequest('cuteanimeboys', 1)); + break; + case 'hotguys': + message.channel.send((Math.floor(Math.random() * 2) === 0) ? redditbooruRequest('bishounen') : subredditRequest('bishounen')); + break; + case 'kgirls': + switch (Math.floor(Math.random() * 3)) { + case 0: + message.channel.send(redditbooruRequest('kpics')); + break; + case 1: + message.channel.send(imgurRequest('kpics', 5)); + break; + case 2: + message.channel.send(subredditRequest('kpopfap')); + break; + } + break; + case 'kboys': + switch (Math.floor(Math.random() * 3)) { + case 0: + message.channel.send(imgurRequest('kfanservice', 1)); + break; + case 1: + message.channel.send(imgurRequest('kpecs', 1)); + break; + case 2: + message.channel.send(imgurRequest('cutekboys', 1)); + break; + } + break; - // NSFW - case 'lewd': - message.channel.send(redditbooruRequest('pantsu')); - break; - case 'ecchi': - switch(Math.floor(Math.random() * 4)) - { - case 0: - message.channel.send(subredditRequest('ecchi')); - break; - case 1: - message.channel.send(redditbooruRequest('ecchi')); - break; - case 2: - message.channel.send(redditbooruRequest('Sukebei')); - break; - case 3: - message.channel.send(imgurRequest('ecchi', 5)); - break; - } - break; - case 'hentai': - message.channel.send((Math.floor(Math.random() * 2) === 0) ? imgurRequest('hentai', 5) : subredditRequest('hentai', 5)); - break; - case 'yaoi': - message.channel.send(imgurRequest('yaoi', 5)); - break; - case 'yuri': - message.channel.send(imgurRequest('yuri', 5)); - break; - case 'neko': - message.channel.send((Math.floor(Math.random() * 2) === 0) ? imgurRequest('Nekomimi', 5) : subredditRequest('Nekomimi', 5)); - break; - case 'pokeporn': - message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('pokeporn') : redditbooruRequest('pokeporn')); - break; - case 'hgifs': - message.channel.send(subredditRequest('nsfwanimegifs', 5)); - break; - case 'hentaibondage': - message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('hentaibondage') : imgurRequest('hentaibondage', 5)); - break; + // NSFW + case 'lewd': + message.channel.send(redditbooruRequest('pantsu')); + break; + case 'ecchi': + switch (Math.floor(Math.random() * 4)) { + case 0: + message.channel.send(subredditRequest('ecchi')); + break; + case 1: + message.channel.send(redditbooruRequest('ecchi')); + break; + case 2: + message.channel.send(redditbooruRequest('Sukebei')); + break; + case 3: + message.channel.send(imgurRequest('ecchi', 5)); + break; + } + break; + case 'hentai': + switch (Math.floor(Math.random() * 3)) { + case 0: + message.channel.send(subredditRequest('hentai', 5)); + break; + case 1: + message.channel.send(subredditRequest('hentaisource', 5)); + break; + case 2: + message.channel.send(imgurRequest('hentai', 5)); + break; + } + break; + case 'yaoi': + message.channel.send(imgurRequest('yaoi', 5)); + break; + case 'yuri': + message.channel.send(imgurRequest('yuri', 5)); + break; + case 'neko': + message.channel.send((Math.floor(Math.random() * 2) === 0) ? imgurRequest('Nekomimi', 5) : subredditRequest('Nekomimi', 5)); + break; + case 'pokeporn': + message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('pokeporn') : redditbooruRequest('pokeporn')); + break; + case 'hgifs': + message.channel.send(subredditRequest('nsfwanimegifs', 5)); + break; + case 'hentaibondage': + message.channel.send((Math.floor(Math.random() * 2) === 0) ? subredditRequest('hentaibondage') : imgurRequest('hentaibondage', 5)); + break; - case 'summon': - var redditToSummon = message.content.substring(2).split(' ')[1]; - if(redditToSummon) { + case 'summon': + summonCommand(); + break; - message.channel.send(message.author + ' summons *' + redditToSummon + '*\n'); - message.channel.send(subredditRequest(redditToSummon)) - - } else { - - message.reply("wut do i summon?"); - } - break; - - // Voice commands - case 'join': - channel = message.member.voiceChannel; - channel.join(); - break; - case 'leave': - case 'stop': - case 'skip': - if(channel != null) - { - channel.leave(); - channel = null; - } - playQueue = []; - break; - case 'airhorn': - setupVoice('voice/mlg-airhorn.mp3', 0.4, message.member.voiceChannel); - break; - case 'quiethorn': - setupVoice('voice/mlg-airhorn.mp3', 0.03, message.member.voiceChannel); - break; - case 'weed': - setupVoice('voice/smoke-weed.mp3', 0.2, message.member.voiceChannel); - break; - case 'damnson': - setupVoice('voice/damnson.mp3', 0.35, message.member.voiceChannel); - break; - case 'wombo': - setupVoice('voice/wombocombo.mp3', 0.06, message.member.voiceChannel); - break; - case 'cena': - setupVoice('voice/cena.mp3', 0.10, message.member.voiceChannel); - break; - case 'triple': - setupVoice('voice/triple.mp3', 0.20, message.member.voiceChannel); - break; - } + // Voice commands + case 'join': + channel = message.member.voiceChannel; + channel.join(); + break; + case 'leave': + case 'stop': + case 'skip': + if (channel != null) { + channel.leave(); + channel = null; + } + playQueue = []; + break; + case 'airhorn': + setupVoice('voice/mlg-airhorn.mp3', 0.4, message.member.voiceChannel); + break; + case 'quiethorn': + setupVoice('voice/mlg-airhorn.mp3', 0.03, message.member.voiceChannel); + break; + case 'weed': + setupVoice('voice/smoke-weed.mp3', 0.2, message.member.voiceChannel); + break; + case 'damnson': + setupVoice('voice/damnson.mp3', 0.35, message.member.voiceChannel); + break; + case 'wombo': + setupVoice('voice/wombocombo.mp3', 0.06, message.member.voiceChannel); + break; + case 'cena': + setupVoice('voice/cena.mp3', 0.10, message.member.voiceChannel); + break; + case 'triple': + setupVoice('voice/triple.mp3', 0.20, message.member.voiceChannel); + break; } -}); +} +}) +; // login client.login(auth.token);