diff options
| author | Unknown <Alee14498@gmail.com> | 2017-10-26 17:24:24 -0400 |
|---|---|---|
| committer | Unknown <Alee14498@gmail.com> | 2017-10-26 17:24:24 -0400 |
| commit | 1831124963250337229356a80ac44af1c2ed41ac (patch) | |
| tree | e5d3833bc0eb385850db11edf6f45b8ebe6924bd | |
| parent | 72b119548d3350eea65fdfcb6daba39c079a11bc (diff) | |
| download | AstralQuote-ATC-1831124963250337229356a80ac44af1c2ed41ac.tar.gz AstralQuote-ATC-1831124963250337229356a80ac44af1c2ed41ac.tar.bz2 AstralQuote-ATC-1831124963250337229356a80ac44af1c2ed41ac.zip | |
Added soucre files
| -rw-r--r-- | .gitignore | 58 | ||||
| -rw-r--r-- | LICENSE | 21 | ||||
| -rw-r--r-- | bot.js | 269 |
3 files changed, 348 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..621038f --- /dev/null +++ b/.gitignore @@ -0,0 +1,58 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Michael Webb and Victor Tran + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. @@ -0,0 +1,269 @@ +const Discord = require('discord.js'); +const client = new Discord.Client(); + +var QuoteOfTheDay; +var QuoteOfTheDayExpiry = 0; +var QuoteOfTheDayStartTime; +var DidReboot = false; + +function GetQuoteOfTheDay(quoteNum = -1) { + var now = new Date(); + + if (QuoteOfTheDayExpiry < now.getTime()) { + console.log("Getting new quote of the day..."); + console.log("This quote expires in 1 day."); + + QuoteOfTheDayStartTime = now; + QuoteOfTheDayExpiry = now.getTime(); + QuoteOfTheDayExpiry += 86400000; //Add 8640000 milliseconds (24 hours) to the quote of the day + + QuoteOfTheDay = new Discord.RichEmbed(); + var author; + var authorImage; + var quote; + var year; + var url; + + if (quoteNum == -1) { + quoteNum = Math.floor(Math.random() * 1000) % 14; + } + + //New quotes should be kept clean. No expletives or really anything you don't want a 3 year old to see. Thanks :) + // - Victor + + switch (quoteNum) { + case 0: + author = "Victor Tran"; + authorImage = "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg"; + quote = "A letter says a whole video!"; + year = "2017"; + url = "https://cdn.discordapp.com/attachments/278874966542385152/280566273992032258/Screenshot_20170213-160944.png"; + break; + case 1: + author = "Victor Tran"; + authorImage = "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg"; + quote = "I don't know why I found that \"ten gazillion\" thing so funny..."; + year = "2017"; + url = "https://www.youtube.com/watch?v=zzKGnuvX6IQ&t=37s"; + break; + case 2: + author = "AKidFromTheUK"; + authorImage = "https://yt3.ggpht.com/-yPaKdXkNVgw/AAAAAAAAAAI/AAAAAAAAAAA/mXqfMs0uVkU/s48-c-k-no-mo-rj-c0xffffff/photo.jpg"; + quote = "Listening to myself is quite awkward lmao"; + year = "2017"; + url = "https://www.example.com/"; //TODO: Find a URL + break; + case 3: + author = "Prince Hamlet: William Shakespeare"; + authorImage = "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Shakespeare.jpg/468px-Shakespeare.jpg"; + quote = "To be, or not to be, that is the question"; + year = "circa. 1600"; + url = "https://en.wikipedia.org/wiki/To_be,_or_not_to_be"; + break; + case 4: + author = "Diana Adams / Mitsubishi Mirage"; + authorImage = "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg"; + quote = "Dialing 000...\nNOOO!!!"; + year = "2017"; + url = "https://youtu.be/jDy57c7Y-4A?t=11m52s"; + break; + case 5: + author = "Diana Adams / Mitsubishi Mirage"; + authorImage = "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg"; + quote = "You'd have a crash by now!\nPardon?"; + year = "2017"; + url = "https://youtu.be/jDy57c7Y-4A?t=15m5s"; + break; + case 6: + author = "Ivoponop Pena"; + authorImage = "https://yt3.ggpht.com/-hZJxXIFsfB8/AAAAAAAAAAI/AAAAAAAAAAA/c_mjVjQWvTw/s48-c-k-no-mo-rj-c0xffffff/photo.jpg"; + quote = "i buy tablets for the bubble plastic"; + year = "2016"; + url = "https://www.youtube.com/watch?v=AqFDn0TxwH4"; + break; + case 7: + author = "The Mill on the Floss: George Eliot"; + authorImage = "https://upload.wikimedia.org/wikipedia/commons/8/81/George_Eliot_at_30_by_François_D%27Albert_Durade.jpg"; + quote = "Don't judge a book by its cover"; + year = "1860"; + url = "https://en.wikipedia.org/wiki/Don't_judge_a_book_by_its_cover"; + break; + case 8: + author = "tostoday"; + authorImage = "https://yt3.ggpht.com/-gNRclMiHzN4/AAAAAAAAAAI/AAAAAAAAAAA/BNEDEUakd4A/s48-c-k-no-mo-rj-c0xffffff/photo.jpg"; + quote = "I don't know why but Visopsys sounds like a medical condition"; + year = "circa. 2015"; + url = "https://www.youtube.com/watch?v=5T-vEZeY2v0"; + break; + case 9: + author = "Diana Adams"; + authorImage = "https://yt3.ggpht.com/-tQLg1M-3org/AAAAAAAAAAI/AAAAAAAAAAA/-kkOvupMHXQ/s88-c-k-no-mo-rj-c0xffffff/photo.jpg"; + quote = "4 × 1 000 000!? 4 000 000! It's not that hard..."; + year = "2014"; + url = "https://youtu.be/5T-vEZeY2v0?t=9m28s"; + break; + case 10: + author = "Victor Tran"; + authorImage = "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg"; + quote = "Yes! I'm not *just* a blue happy face!"; + year = "2016"; + url = "https://youtu.be/2E21oad5pWQ"; + break; + case 11: + author = "ItsDeckyah"; + authorImage = "https://yt3.ggpht.com/-t70ZI-25A1k/AAAAAAAAAAI/AAAAAAAAAAA/uGrVakleFIM/s48-c-k-no-mo-rj-c0xffffff/photo.jpg"; + quote = "Always remember, don't let those who are bullying you ruin your life, they are out to do just that. And that's probably all they'll do their whole lives"; + year = "2017"; + url = "https://www.example.com/"; // TODO: Find a URL + break; + case 12: //Special Case + QuoteOfTheDay.setAuthor("William Shakespeare", "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Shakespeare.jpg/468px-Shakespeare.jpg"); + QuoteOfTheDay.setColor("#FF0000"); + QuoteOfTheDay.setURL("https://i.imgur.com/4KfdylP.jpg"); + QuoteOfTheDay.setImage("https://i.imgur.com/4KfdylP.jpg"); + return QuoteOfTheDay; + case 13: + author = "Mighty_Eagle073"; + authorImage = "https://yt3.ggpht.com/-Q5IvX3eEGl8/AAAAAAAAAAI/AAAAAAAAAAA/LspLd8v-PR8/s100-c-k-no-mo-rj-c0xffffff/photo.jpg"; + quote = "Spamming = Damning"; + year = "2017"; + url = "https://www.example.com/"; // TODO: Find a URL + break; + case 14: + author = "Nibble"; + authorImage = "https://yt3.ggpht.com/-SUPNlJ8a7qA/AAAAAAAAAAI/AAAAAAAAAAA/R_I4z7057_w/s100-c-k-no-mo-rj-c0xffffff/photo.jpg"; + quote = "AUTO CORRECF!!!"; + year = "2017"; + url = "https://www.example.com/"; // TODO: Find a URL + break; + } + + QuoteOfTheDay.setAuthor(author, authorImage); + QuoteOfTheDay.setColor("#FF0000"); + QuoteOfTheDay.setDescription(quote); + QuoteOfTheDay.setFooter("- " + year); + QuoteOfTheDay.setURL(url); + } else { + console.log("No need for new quote of the day"); + } + + + return QuoteOfTheDay; +} + +client.on('ready', () => { + console.log('ARE YA READY KIDS? AYE AYE CAPTAIN!'); +}); + +function messageDeleteTimer(msg, msgArray) { + msg.delete(5000); +} + +function messageDeleteTimer20s(msg, msgArray) { + msg.delete(20000); +} + +client.on('message', message => { + if (message.content === '!ping') { + message.channel.send('<:vtBoshyTime:280178631886635008> PONG! I want to play pong... :\'(').then(messageDeleteTimer); + } else if (message.content === '!pong') { + message.channel.send('<:vtBoshyTime:280178631886635008> PING!').then(messageDeleteTimer); + } else if (message.content === '!isthisthingon') { + message.channel.send('no 💤').then(messageDeleteTimer); + } else if (message.content === '!quoteoftheday') { + var quoteofday = GetQuoteOfTheDay(); + message.channel.send("Here's the quote of the day (as of " + QuoteOfTheDayStartTime.toUTCString() + ")").then(messageDeleteTimer20s); + message.channel.sendEmbed(quoteofday).then(messageDeleteTimer20s); + } else if (message.content === "!forcequote") { + QuoteOfTheDayExpiry = 0; + var quoteofday = GetQuoteOfTheDay(); + message.channel.send("New quote of the day!").then(messageDeleteTimer20s); + message.channel.sendEmbed(quoteofday).then(messageDeleteTimer20s); + } else if (message.content === '!reboot') { + /* + message.channel.send("Goodbye! We'll be back in a moment!").then(messageDeleteTimer); + console.log('Reboot Requested. Rebooting...'); + client.destroy(); + DidReboot = true; + client.login('MjgwMjQ1MDAwMDI0MDk2NzY4.C4K8Nw.InlnQvRmbvfJG0nv13FXtoVzXwc'); +*/ + message.channel.send("Good try... But we're not letting anyone reboot me yet!").then(messageDeleteTimer); + } else if (message.content === '!poweroff') { + /* + console.log(message.guild.roles); + if (message.guild.roles.get('Moderator').members.keyArray().includes(message.author.username)) { + message.channel.send("Access Granted"); + } else { + message.channel.send("Access Denied"); + }*/ + + message.channel.send("Well... vicr123 tried to code this... but it kept crashing... Ironic isn't it? :(").then(messageDeleteTimer); + } else if (message.content === '!help') { + message.channel.send("Available commands:\n```\n" + + "!ping, !pong Requests AstralQuote to reply with a message\n" + + "!quoteoftheday Requests AstralQuote for the quote of the day\n" + + "!forcequote Requests AstralQuote to reset the quote of the day\n" + + "!reboot Requests AstralQuote to reboot\n" + + "!poweroff Tells AstralQuote to leave\n```" + ).then(messageDeleteTimer20s); + } else if (message.content === '!easteregg') { + message.channel.send("```cpp\n" + + "There are no easter eggs to be found here. Begone!" + + "\n```").then(messageDeleteTimer20s); + } else if (message.content === '!easterwgg') { + message.channel.send("```cpp\n" + + "Ha, you found an easter egg! Take that, !easteregg!" + + "\n```").then(messageDeleteTimer20s); + } else if (message.content === '!about') { + message.channel.send("Made in Node.js by TheRandomMelon and vicr123. Crafted for the AstralPhaser Central Discord server!").then(messageDeleteTimer20s); + } else if (message.content.startsWith("!")) { + deleteOriginalMessage = false; + + console.log("[ERROR] " + message.content + " [Unrecognised command]"); + var msg; + switch (Math.floor(Math.random() * 1000) % 8) { + case 0: + msg = "Trying to break me, are you?"; + break; + case 1: + msg = "Sorry, what was that?"; + break; + case 2: + msg = "Oops... I missed that."; + break; + case 3: + msg = "Either you typed something wrong... Or I'm not smart enough to understand you."; + break; + case 4: + msg = "What are you trying to do!?"; + break; + case 5: + msg = "Is this the end of AstralQuote?"; + break; + case 6: + msg = "Not sure what you mean."; + break; + case 7: + msg = "Pretty sure you didn't expect this message to appear..."; + break; + } + message.channel.send("<:vtBoshyTime:280178631886635008> GAH! " + msg + " Refer to !help for syntax and other stuff.").then(messageDeleteTimer); + } +}); + +client.on('guildMemberAdd', usr => { + + var embed = new Discord.RichEmbed(); + + embed.setAuthor("Victor Tran", "https://yt3.ggpht.com/-Iuf1v4-SSSM/AAAAAAAAAAI/AAAAAAAAAAA/89IYeQw--wU/photo.jpg"); + embed.setColor("#0096FF"); + embed.setDescription("Welcome " + usr.displayName + " to AstralPhaser Central! Before you start, we recommend you check the rules over at https://docs.google.com/spreadsheets/d/1Et4DilaZzfnqinxhqOy5Ej_3M_-xznEN21zsuJkGurc/edit?usp=sharing. Thanks, and enjoy the community. - Victor"); + embed.setURL("https://docs.google.com/spreadsheets/d/1Et4DilaZzfnqinxhqOy5Ej_3M_-xznEN21zsuJkGurc/edit?usp=sharing"); + + usr.sendEmbed(embed) +}); + +client.login('MjgwMjQ1MDAwMDI0MDk2NzY4.C4K8Nw.InlnQvRmbvfJG0nv13FXtoVzXwc').catch( + function() { + console.log("[ERROR] Login failed."); + }); |
