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:
stage: deploy
script:
- echo "Deploy to staging server"
environment:

230
bot.js
View File

@@ -19,7 +19,8 @@ function availableCommands() {
// help commands
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.",
"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.",
@@ -41,14 +42,13 @@ function commandsHelp(requestedCommand) {
"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)"};
"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];
}
}
@@ -80,7 +80,7 @@ function numberRoll(startingRange, endingRange) {
// 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',
@@ -90,14 +90,65 @@ function stupidQuestion() {
}
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);
@@ -105,12 +156,9 @@ function imgurRequest(subreddit, 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;
}
@@ -125,27 +173,21 @@ 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 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)
{
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")
{
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;
}
@@ -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 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;
}
@@ -261,20 +289,18 @@ function handlePlayQueue(connection)
playQueue.pop();
playVolume.pop();
if(playQueue.length === 0)
{
if (playQueue.length === 0) {
queueExists = false;
if(channel != null)
{
if (channel != null) {
channel.leave();
channel = null;
}
}
else
{
else {
handlePlayQueue(connection);
}
});
})
;
dispatcher.setVolume(playVolume[0]);
}
@@ -289,8 +315,7 @@ client.on('ready', () => {
var setType = availableTypes[Math.floor(Math.random() * availableTypes.length)];
var setStatus;
switch(setType)
{
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)];
@@ -306,7 +331,8 @@ client.on('ready', () => {
}
client.user.setActivity(setStatus, {type: setType});
});
})
;
// commands
client.on('message', message => {
@@ -314,19 +340,16 @@ client.on('message', message => {
var args = message.content.substring(2).split(' ');
var cmd = args[0];
switch(cmd)
{
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)
{
if (message.content.substring(2).split(' ')[1] === undefined) {
message.channel.send(availableCommands());
}
else
{
else {
message.channel.send(commandsHelp(message_content[1]));
}
break;
@@ -335,13 +358,11 @@ client.on('message', message => {
message.channel.send(message.author + ' flipped a coin, it landed on **' + coinFlip() + '!**');
break;
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' +
'The magic 8 ball says: **' + eightBall() + '**');
}
else
{
else {
message.reply(noQuestion());
}
break;
@@ -350,14 +371,12 @@ client.on('message', message => {
if (message_content[1] !== undefined && message_content[1].length > 0) // ranged roll
{
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('-');
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.');
}
}
@@ -370,18 +389,15 @@ client.on('message', message => {
case 'convert':
case 'calculate':
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));
if(response === "")
{
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
{
else {
message.reply(noQuestion());
}
break;
@@ -421,8 +437,7 @@ client.on('message', message => {
message.channel.send((Math.floor(Math.random() * 2) === 0) ? redditbooruRequest('bishounen') : subredditRequest('bishounen'));
break;
case 'kgirls':
switch(Math.floor(Math.random() * 3))
{
switch (Math.floor(Math.random() * 3)) {
case 0:
message.channel.send(redditbooruRequest('kpics'));
break;
@@ -435,8 +450,7 @@ client.on('message', message => {
}
break;
case 'kboys':
switch(Math.floor(Math.random() * 3))
{
switch (Math.floor(Math.random() * 3)) {
case 0:
message.channel.send(imgurRequest('kfanservice', 1));
break;
@@ -454,8 +468,7 @@ client.on('message', message => {
message.channel.send(redditbooruRequest('pantsu'));
break;
case 'ecchi':
switch(Math.floor(Math.random() * 4))
{
switch (Math.floor(Math.random() * 4)) {
case 0:
message.channel.send(subredditRequest('ecchi'));
break;
@@ -471,7 +484,17 @@ client.on('message', message => {
}
break;
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;
case 'yaoi':
message.channel.send(imgurRequest('yaoi', 5));
@@ -493,16 +516,7 @@ client.on('message', message => {
break;
case 'summon':
var redditToSummon = message.content.substring(2).split(' ')[1];
if(redditToSummon) {
message.channel.send(message.author + ' summons *' + redditToSummon + '*\n');
message.channel.send(subredditRequest(redditToSummon))
} else {
message.reply("wut do i summon?");
}
summonCommand();
break;
// Voice commands
@@ -513,8 +527,7 @@ client.on('message', message => {
case 'leave':
case 'stop':
case 'skip':
if(channel != null)
{
if (channel != null) {
channel.leave();
channel = null;
}
@@ -543,7 +556,8 @@ client.on('message', message => {
break;
}
}
});
})
;
// login
client.login(auth.token);