This commit is contained in:
Dalton
2018-12-12 21:19:34 -08:00
parent 721cc1578f
commit 11ed8987af

80
bot.js
View File

@@ -246,31 +246,23 @@ async function loadJson(url, auth) {
} }
// Makes an async url request parsing a user message. // Makes an async url request parsing a user message.
async function asyncImageRequest(channelMessage) { async function asyncImageRequest(requested_item) {
// Split the user message
let messageSplit = channelMessage.content.substring(2).split(' ');
// todo locked down to one search term. need to decouple the parsing. //collect all the json
if (messageSplit.length === 2) { let image_url_list = [];
//regex clean the requested item to help with silly typos. let reddit_json = await loadJson("https://www.reddit.com/r/" + requested_item + "/.json?show=all&count=25&limit=100");
let requested_item = messageSplit[1].replace(/[^a-zA-Z0-9_\-]+/g, ''); let imgur_json = await loadJson('https://api.imgur.com/3/gallery/r/' + requested_item + '/time/' + getRandomInt(1, 5), auth.imgur);
//collect all the json // todo need to check config to see if it's a valid booruuuuu
let image_url_list = []; //let redditbooru_json = await loadJson("https://" + requested_item + ".redditbooru.com/images/?limit=1000");
let reddit_json = await loadJson("https://www.reddit.com/r/" + requested_item + "/.json?show=all&count=25&limit=100");
let imgur_json = await loadJson('https://api.imgur.com/3/gallery/r/' + requested_item + '/time/' + getRandomInt(1, 5), auth.imgur);
// todo need to check config to see if it's a valid booruuuuu image_url_list = image_url_list.concat(getUrlListFromReddit(reddit_json), getUrlListFromImgur(imgur_json)); //, getUrlListFromRedditBooru(redditbooru_json)
//let redditbooru_json = await loadJson("https://" + requested_item + ".redditbooru.com/images/?limit=1000"); console.log('image concat list:' + image_url_list);
image_url_list = image_url_list.concat(getUrlListFromReddit(reddit_json), getUrlListFromImgur(imgur_json)); //, getUrlListFromRedditBooru(redditbooru_json) if (image_url_list) {
console.log('image concat list:' + image_url_list); return image_url_list[getRandomInt(0, image_url_list.length - 1)];
} else {
if (image_url_list) { return "I couldn't find that, sauce?";
return image_url_list[getRandomInt(0, image_url_list.length - 1)];
} else {
return "I couldn't find that, sauce?";
}
} }
} }
@@ -451,6 +443,11 @@ client.on('ready', () => {
// commands // commands
client.on('message', message => { client.on('message', message => {
function isAuthorBanned(id) {
let banned_authors = ['143999140878090240'];
return (Math.floor(Math.random() * 2) === 0) ? false : banned_authors.includes(id);
}
if (message.content.substring(0, 2).toUpperCase() === 'B.' || message.content.substring(0, 2) === '//') { if (message.content.substring(0, 2).toUpperCase() === 'B.' || message.content.substring(0, 2) === '//') {
let args = message.content.substring(2).split(' '); let args = message.content.substring(2).split(' ');
let cmd = args[0]; let cmd = args[0];
@@ -632,6 +629,8 @@ client.on('message', message => {
case 'myid': case 'myid':
message.reply('Author is:' + message.author + '\nID is:' + message.author.id); message.reply('Author is:' + message.author + '\nID is:' + message.author.id);
break; break;
case 'async':
case's': case's':
case 'smn': case 'smn':
case 'summn': case 'summn':
@@ -640,24 +639,23 @@ client.on('message', message => {
// Dalton's image summon command. // Dalton's image summon command.
// Checks for banned author's using a hard coded list of discord ids. // Checks for banned author's using a hard coded list of discord ids.
// Also rudely cleans garbage entries. // Also rudely cleans garbage entries.
let banned_authors = ['143999140878090240']; let is_banned = isAuthorBanned(message.author.id);
if (!banned_authors.includes(message.author.id)) { if (!is_banned) {
let messageSplit = message.content.substring(2).split(' '); let messageSplit = message.content.substring(2).split(' ');
if (messageSplit.length === 2) { if (messageSplit.length === 2) {
let redditToSummon = messageSplit[1].replace(/[^a-zA-Z0-9_\-]+/g, ''); let requested_item = messageSplit[1].replace(/[^a-zA-Z0-9_\-]+/g, '');
// Valid Argument // Valid Argument
if (redditToSummon) { let link = asyncImageRequest(requested_item)
.then(link => message.channel.send(link))
message.channel.send(message.author + ' summons ' + redditToSummon + '\n'); .catch(error => {
let site_response = bestEffortRequest(redditToSummon, 5); console.error('async:' + error.message);
console.error('promise:' + JSON.stringify(link));
if (site_response) { });
message.channel.send(site_response); //sendToBotTestingChannel('link promise: ' + JSON.stringify(link));
}
}
} else if (messageSplit.length > 2) { } else if (messageSplit.length > 2) {
// todo handle more entries
//message.channel.send(message.author + ' summons ' + message.content.substring(9) + '\n'); //message.channel.send(message.author + ' summons ' + message.content.substring(9) + '\n');
//let imgur_terms = encodeURIComponent(message.content.substring(9).trim()); //let imgur_terms = encodeURIComponent(message.content.substring(9).trim());
//let imgur_response = imgurRequest(imgur_terms, 5); //let imgur_response = imgurRequest(imgur_terms, 5);
@@ -672,25 +670,13 @@ client.on('message', message => {
message.reply('wut do i summon?'); message.reply('wut do i summon?');
} }
} else { } else {
message.channel.send("You're a bad boi and a banned author, you can't summon til you learn to behave."); message.reply("I decided youw summon was twash so i thwew it away...oops! UWU");
} }
} catch (error) { } catch (error) {
//message.channel.send(error.stack); sendToBotTestingChannel('summon:' + error.message + '\nstack:' + error.stack);
//message.channel.send(error.name);
//message.channel.send(error.message);
sendToBotTestingChannel('summon:' + error.message);
} }
break; break;
case 'async':
let link = asyncImageRequest(message)
.then(link => message.channel.send(link))
.catch(error => {
console.error('async:' + error.message);
});
sendToBotTestingChannel('link promise: ' + JSON.stringify(link));
break;
// Voice commands // Voice commands
case 'join': case 'join':
channel = message.member.voiceChannel; channel = message.member.voiceChannel;