summon edits and hopefully bug fix

This commit is contained in:
Dalton
2018-12-06 22:39:29 -08:00
parent 689b409c89
commit ae65da1bf7
2 changed files with 380 additions and 365 deletions

View File

@@ -13,6 +13,7 @@ build:
deploy_staging: deploy_staging:
stage: deploy stage: deploy
script: script:
- echo "Deploy to staging server" - echo "Deploy to staging server"
environment: environment:

230
bot.js
View File

@@ -19,7 +19,8 @@ function availableCommands() {
// help commands // help commands
function commandsHelp(requestedCommand) { function commandsHelp(requestedCommand) {
var commands = {"coinflip": "**coinflip:** Returns a result of heads or tails.", var commands = {
"coinflip": "**coinflip:** Returns a result of heads or tails.",
"8ball": "**8ball:** Shakes an 8 ball and returns a result.", "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])", "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.", "compute": "**compute:** Uses WolframAlpha to process the question asked.",
@@ -41,14 +42,13 @@ function commandsHelp(requestedCommand) {
"neko": "[NSFW] **neko:** Posts a picture of cat girls (r/nekomimi)", "neko": "[NSFW] **neko:** Posts a picture of cat girls (r/nekomimi)",
"pokeporn": "[NSFW] **pokeporn:** Posts a picture of pokemon hentai (r/pokeporn)", "pokeporn": "[NSFW] **pokeporn:** Posts a picture of pokemon hentai (r/pokeporn)",
"hgifs": "[NSFW] **hgifs:** Posts a gif of hentai (r/nsfwanimegifs)", "hgifs": "[NSFW] **hgifs:** Posts a gif of hentai (r/nsfwanimegifs)",
"hentaibondage": "[NSFW] **hentaibondage:** Posts a picture of hentai in bondage (r/hentaibondage)"}; "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"; return "Command not found, try entering **b.commands** for a full list of commands";
} }
else else {
{
return commands[requestedCommand]; return commands[requestedCommand];
} }
} }
@@ -80,7 +80,7 @@ function numberRoll(startingRange, endingRange) {
// stupid question response // stupid question response
function stupidQuestion() { function stupidQuestion() {
var answers = [ let answers = [
'What kind of dumb question is that?', 'A real question please.', 'What kind of dumb question is that?', 'A real question please.',
'Is that supposed to be a question?', 'Who asked such a dumb question?', 'Is that supposed to be a question?', 'Who asked such a dumb question?',
'How about a good question instead?', 'Only good questions please', 'How about a good question instead?', 'Only good questions please',
@@ -90,14 +90,65 @@ function stupidQuestion() {
} }
function noQuestion() { 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))]; 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 // imgur request
function imgurRequest(subreddit, page_max) function imgurRequest(subreddit, page_max) {
{
var multiSubreddit = subreddit.split(','); 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);
@@ -105,12 +156,9 @@ function imgurRequest(subreddit, page_max)
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
var returnText = ""; var returnText = "";
req.onreadystatechange = function() req.onreadystatechange = function () {
{ if (req.readyState === 4 && req.status === 200) {
if (req.readyState === 4 && req.status === 200) if (req.responseText !== "Not found") {
{
if(req.responseText != "Not found")
{
var json = JSON.parse(req.responseText); 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;
} }
@@ -125,27 +173,21 @@ function imgurRequest(subreddit, page_max)
} }
// subreddit request // subreddit request
function subredditRequest(subreddit) function subredditRequest(subreddit) {
{
var multiSubreddit = subreddit.split(','); 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 req = new XMLHttpRequest();
var returnText = ""; var returnText = "";
req.onreadystatechange = function() req.onreadystatechange = function () {
{ if (req.readyState === 4 && req.status === 200) {
if(req.readyState === 4 && req.status === 200)
{
var json = JSON.parse(req.responseText); var json = JSON.parse(req.responseText);
while(true) while (true) {
{
var i = getRandomInt(0, json.data.children.length - 1); var i = getRandomInt(0, json.data.children.length - 1);
try 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") {
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; returnText = json.data.children[i].data.url;
break; break;
} }
@@ -166,23 +208,20 @@ function subredditRequest(subreddit)
} }
// redditbooru request // redditbooru request
function redditbooruRequest(subreddit) function redditbooruRequest(subreddit) {
{
var multiSubreddit = subreddit.split(','); 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 req = new XMLHttpRequest();
var returnText = ""; var returnText = "";
req.onreadystatechange = function() req.onreadystatechange = function () {
{ if (req.readyState === 4 && req.status === 200) {
if(req.readyState === 4 && req.status === 200)
{
var json = JSON.parse(req.responseText); var json = JSON.parse(req.responseText);
var imageID = getRandomInt(0, json.length); var imageID = getRandomInt(0, json.length);
returnText = json[imageID].cdnUrl; returnText = json[imageID].cdnUrl;
} }
} };
req.open("GET", url, false); req.open("GET", url, false);
req.send(); req.send();
@@ -191,19 +230,16 @@ function redditbooruRequest(subreddit)
} }
// wolframalpha computation // wolframalpha computation
function calculate(message) function calculate(message) {
{
var url = "http://api.wolframalpha.com/v1/result?appid=" + auth.wolframalpha + "&i=" + encodeURIComponent(message); var url = "http://api.wolframalpha.com/v1/result?appid=" + auth.wolframalpha + "&i=" + encodeURIComponent(message);
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
var returnText = ""; var returnText = "";
req.onreadystatechange = function() req.onreadystatechange = function () {
{ if (req.readyState === 4 && req.status === 200) {
if(req.readyState === 4 && req.status === 200)
{
returnText = req.responseText; returnText = req.responseText;
} }
} };
req.open("GET", url, false); req.open("GET", url, false);
req.send(); req.send();
@@ -212,25 +248,20 @@ function calculate(message)
} }
// get random number with starting and ending number // 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; return Math.floor(Math.random() * (max - min + 1)) + min;
} }
// voice setup // voice setup
function setupVoice(file, volume, voice_channel) function setupVoice(file, volume, voice_channel) {
{
playQueue.unshift(file); playQueue.unshift(file);
playVolume.unshift(volume); playVolume.unshift(volume);
if(!channel) if (!channel) {
{
channel = voice_channel; channel = voice_channel;
} }
if(channel instanceof Discord.VoiceChannel) if (channel instanceof Discord.VoiceChannel) {
{ if (!queueExists) {
if(!queueExists)
{
queueExists = true; queueExists = true;
channel.join().then(connection => channel.join().then(connection =>
{ {
@@ -238,8 +269,7 @@ function setupVoice(file, volume, voice_channel)
}); });
} }
} }
else else {
{
playQueue.pop(); playQueue.pop();
playVolume.pop(); playVolume.pop();
channel = null; channel = null;
@@ -247,10 +277,8 @@ function setupVoice(file, volume, voice_channel)
} }
// voice queue // voice queue
function handlePlayQueue(connection) function handlePlayQueue(connection) {
{ if (playQueue.length === 0) {
if (playQueue.length === 0)
{
return; return;
} }
@@ -261,20 +289,18 @@ function handlePlayQueue(connection)
playQueue.pop(); playQueue.pop();
playVolume.pop(); playVolume.pop();
if(playQueue.length === 0) if (playQueue.length === 0) {
{
queueExists = false; queueExists = false;
if(channel != null) if (channel != null) {
{
channel.leave(); channel.leave();
channel = null; channel = null;
} }
} }
else else {
{
handlePlayQueue(connection); handlePlayQueue(connection);
} }
}); })
;
dispatcher.setVolume(playVolume[0]); dispatcher.setVolume(playVolume[0]);
} }
@@ -289,8 +315,7 @@ client.on('ready', () => {
var setType = availableTypes[Math.floor(Math.random() * availableTypes.length)]; var setType = availableTypes[Math.floor(Math.random() * availableTypes.length)];
var setStatus; var setStatus;
switch(setType) switch (setType) {
{
case 'PLAYING': case 'PLAYING':
var availableStatus = ['with cute bunnies', 'with bunny toys', 'in bunny heaven', 'with my pet bunny', 'with all the bunnies']; 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)]; setStatus = availableStatus[Math.floor(Math.random() * availableStatus.length)];
@@ -306,7 +331,8 @@ client.on('ready', () => {
} }
client.user.setActivity(setStatus, {type: setType}); client.user.setActivity(setStatus, {type: setType});
}); })
;
// commands // commands
client.on('message', message => { client.on('message', message => {
@@ -314,19 +340,16 @@ client.on('message', message => {
var args = message.content.substring(2).split(' '); var args = message.content.substring(2).split(' ');
var cmd = args[0]; var cmd = args[0];
switch(cmd) switch (cmd) {
{
// Reply commands // Reply commands
case 'command': case 'command':
case 'commands': case 'commands':
case 'help': case 'help':
var message_content = message.content.substring(2).split(' '); var message_content = message.content.substring(2).split(' ');
if(message.content.substring(2).split(' ')[1] === undefined) if (message.content.substring(2).split(' ')[1] === undefined) {
{
message.channel.send(availableCommands()); message.channel.send(availableCommands());
} }
else else {
{
message.channel.send(commandsHelp(message_content[1])); message.channel.send(commandsHelp(message_content[1]));
} }
break; break;
@@ -335,13 +358,11 @@ client.on('message', message => {
message.channel.send(message.author + ' flipped a coin, it landed on **' + coinFlip() + '!**'); message.channel.send(message.author + ' flipped a coin, it landed on **' + coinFlip() + '!**');
break; break;
case '8ball': case '8ball':
if(message.content.substring(8).length > 0) if (message.content.substring(8).length > 0) {
{
message.channel.send(message.author + ' asked: *' + message.content.substring(8) + '*\n' + message.channel.send(message.author + ' asked: *' + message.content.substring(8) + '*\n' +
'The magic 8 ball says: **' + eightBall() + '**'); 'The magic 8 ball says: **' + eightBall() + '**');
} }
else else {
{
message.reply(noQuestion()); message.reply(noQuestion());
} }
break; break;
@@ -350,14 +371,12 @@ client.on('message', message => {
if (message_content[1] !== undefined && message_content[1].length > 0) // ranged roll if (message_content[1] !== undefined && message_content[1].length > 0) // ranged roll
{ {
var regex = /^[0-9]+-[0-9]+$/; var regex = /^[0-9]+-[0-9]+$/;
if(regex.test(message_content[1])) if (regex.test(message_content[1])) {
{
var range_break = message_content[1].split('-'); 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]) + '**.'); 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 else {
{
message.channel.send('Unknown roll format. Use "**b.help roll**" for more information.'); message.channel.send('Unknown roll format. Use "**b.help roll**" for more information.');
} }
} }
@@ -370,18 +389,15 @@ client.on('message', message => {
case 'convert': case 'convert':
case 'calculate': case 'calculate':
var message_content = message.content.substring(2).split(' '); var message_content = message.content.substring(2).split(' ');
if(message_content[1] !== undefined && message_content[1].length > 0) if (message_content[1] !== undefined && message_content[1].length > 0) {
{
var response = calculate(message.content.substring(message.content.indexOf(' ') + 1)); var response = calculate(message.content.substring(message.content.indexOf(' ') + 1));
if(response === "") if (response === "") {
{
response = stupidQuestion(); response = stupidQuestion();
} }
message.channel.send(message.author + ' wants to compute: *' + message.content.substring(message.content.indexOf(' ') + 1) + '*\n' + message.channel.send(message.author + ' wants to compute: *' + message.content.substring(message.content.indexOf(' ') + 1) + '*\n' +
'The result is: **' + response + '**') 'The result is: **' + response + '**')
} }
else else {
{
message.reply(noQuestion()); message.reply(noQuestion());
} }
break; break;
@@ -421,8 +437,7 @@ client.on('message', message => {
message.channel.send((Math.floor(Math.random() * 2) === 0) ? redditbooruRequest('bishounen') : subredditRequest('bishounen')); message.channel.send((Math.floor(Math.random() * 2) === 0) ? redditbooruRequest('bishounen') : subredditRequest('bishounen'));
break; break;
case 'kgirls': case 'kgirls':
switch(Math.floor(Math.random() * 3)) switch (Math.floor(Math.random() * 3)) {
{
case 0: case 0:
message.channel.send(redditbooruRequest('kpics')); message.channel.send(redditbooruRequest('kpics'));
break; break;
@@ -435,8 +450,7 @@ client.on('message', message => {
} }
break; break;
case 'kboys': case 'kboys':
switch(Math.floor(Math.random() * 3)) switch (Math.floor(Math.random() * 3)) {
{
case 0: case 0:
message.channel.send(imgurRequest('kfanservice', 1)); message.channel.send(imgurRequest('kfanservice', 1));
break; break;
@@ -454,8 +468,7 @@ client.on('message', message => {
message.channel.send(redditbooruRequest('pantsu')); message.channel.send(redditbooruRequest('pantsu'));
break; break;
case 'ecchi': case 'ecchi':
switch(Math.floor(Math.random() * 4)) switch (Math.floor(Math.random() * 4)) {
{
case 0: case 0:
message.channel.send(subredditRequest('ecchi')); message.channel.send(subredditRequest('ecchi'));
break; break;
@@ -471,7 +484,17 @@ client.on('message', message => {
} }
break; break;
case 'hentai': case 'hentai':
message.channel.send((Math.floor(Math.random() * 2) === 0) ? imgurRequest('hentai', 5) : subredditRequest('hentai', 5)); 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; break;
case 'yaoi': case 'yaoi':
message.channel.send(imgurRequest('yaoi', 5)); message.channel.send(imgurRequest('yaoi', 5));
@@ -493,16 +516,7 @@ client.on('message', message => {
break; break;
case 'summon': case 'summon':
var redditToSummon = message.content.substring(2).split(' ')[1]; summonCommand();
if(redditToSummon) {
message.channel.send(message.author + ' summons *' + redditToSummon + '*\n');
message.channel.send(subredditRequest(redditToSummon))
} else {
message.reply("wut do i summon?");
}
break; break;
// Voice commands // Voice commands
@@ -513,8 +527,7 @@ client.on('message', message => {
case 'leave': case 'leave':
case 'stop': case 'stop':
case 'skip': case 'skip':
if(channel != null) if (channel != null) {
{
channel.leave(); channel.leave();
channel = null; channel = null;
} }
@@ -543,7 +556,8 @@ client.on('message', message => {
break; break;
} }
} }
}); })
;
// login // login
client.login(auth.token); client.login(auth.token);