summon edits and hopefully bug fix
This commit is contained in:
@@ -13,6 +13,7 @@ build:
|
||||
|
||||
deploy_staging:
|
||||
stage: deploy
|
||||
|
||||
script:
|
||||
- echo "Deploy to staging server"
|
||||
environment:
|
||||
|
270
bot.js
270
bot.js
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -75,12 +75,12 @@ function eightBall() {
|
||||
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',
|
||||
@@ -90,29 +90,77 @@ 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);
|
||||
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;
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -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 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")
|
||||
{
|
||||
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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
@@ -284,13 +310,12 @@ 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)
|
||||
{
|
||||
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)];
|
||||
@@ -303,30 +328,28 @@ client.on('ready', () => {
|
||||
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.') {
|
||||
if(message.content.substring(0, 2).toUpperCase() === 'B.') {
|
||||
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,29 +358,25 @@ 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;
|
||||
case 'roll':
|
||||
var message_content = message.content.substring(2).split(' ');
|
||||
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]+$/;
|
||||
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)
|
||||
{
|
||||
var response = calculate(message.content.substring(message.content.indexOf(' ')+1));
|
||||
if(response === "")
|
||||
{
|
||||
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' +
|
||||
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;
|
||||
@@ -390,7 +406,7 @@ client.on('message', message => {
|
||||
case 'bun':
|
||||
case 'bunny':
|
||||
case 'bunnies':
|
||||
message.channel.send(imgurRequest('rabbits',5));
|
||||
message.channel.send(imgurRequest('rabbits', 5));
|
||||
break;
|
||||
case 'dankmeme':
|
||||
case 'dankmemes':
|
||||
@@ -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,13 +450,12 @@ 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));
|
||||
message.channel.send(imgurRequest('kfanservice', 1));
|
||||
break;
|
||||
case 1:
|
||||
message.channel.send(imgurRequest('kpecs',1));
|
||||
message.channel.send(imgurRequest('kpecs', 1));
|
||||
break;
|
||||
case 2:
|
||||
message.channel.send(imgurRequest('cutekboys', 1));
|
||||
@@ -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;
|
||||
}
|
||||
@@ -542,8 +555,9 @@ client.on('message', message => {
|
||||
setupVoice('voice/triple.mp3', 0.20, message.member.voiceChannel);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
;
|
||||
|
||||
// login
|
||||
client.login(auth.token);
|
||||
|
Reference in New Issue
Block a user