async edits
This commit is contained in:
89
bot.js
89
bot.js
@@ -190,67 +190,74 @@ function imgurRequest(subreddit, page_max) {
|
|||||||
return returnText;
|
return returnText;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Abstracted Reddit Json media grab.
|
// Abstracted Reddit Json media grab. Will return a list of URLs!
|
||||||
// todo I think since it's randomly picking indices but children.length * 2 times, it's missing rare items.
|
function getUrlListFromReddit(json) {
|
||||||
function handleRedditJson(json) {
|
|
||||||
//let json = data.json();
|
let url_list = [];
|
||||||
if (json.data) {
|
for (let i = 0; i < json.data.children.length; i++) {
|
||||||
sendToBotTestingChannel("json data pressseeeeent");
|
if (json.data.children[i].data.post_hint === "image" || json.data.children[i].data.post_hint === "link" || json.data.children[i].data.post_hint === "rich:video") {
|
||||||
let url_list = [];
|
url_list.push(json.data.children[i].data.url);
|
||||||
for (let i = 0; i < json.data.children.length; i++) {
|
|
||||||
if (json.data.children[i].data.post_hint === "image" || json.data.children[i].data.post_hint === "link" || json.data.children[i].data.post_hint === "rich:video") {
|
|
||||||
url_list.push(json.data.children[i].data.url);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return url_list[getRandomInt(0, url_list.length - 1)];
|
|
||||||
} else {
|
|
||||||
sendToBotTestingChannel("json data:" + json.data);
|
|
||||||
}
|
}
|
||||||
// What if we don't find anything i.e. r/dogs but its valid subreddit.
|
return url_list;
|
||||||
return "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Abstracted Imgur Json media grab.
|
// Abstracted Imgur Json media grab.
|
||||||
function handleImgurJson(data) {
|
function getUrlListFromImgur(json) {
|
||||||
let json = data.json();
|
|
||||||
let json_data = json.data[getRandomInt(0, json.data.length - 1)];
|
let url_list = [];
|
||||||
if (json_data) {
|
for (let i = 0; i < json.data.length; i++) {
|
||||||
return json_data.link;
|
if (json.data[i]) {
|
||||||
|
url_list.push(json.data.link);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return url_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Abstracted Reddit Booru Json media grab.
|
// Abstracted Reddit Booru Json media grab.
|
||||||
function handleRedditBooruJson(data) {
|
function getUrlListFromRedditBooru(json) {
|
||||||
|
|
||||||
let json = data.json();
|
let url_list = [];
|
||||||
return json[getRandomInt(0, json.length)].cdnUrl;
|
for (let i = 0; i < json.length; i++) {
|
||||||
|
if (json[i]) {
|
||||||
|
url_list.push(json[i].cdnUrl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return url_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadJson(url) {
|
async function loadJson(url) {
|
||||||
let response = await fetch(url);
|
let response = await fetch(url);
|
||||||
if (response.status == 200) {
|
if (response.status === 200) {
|
||||||
return response.json();
|
return response.json();
|
||||||
} else {
|
} else {
|
||||||
throw new HttpError(response);
|
console.log(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Makes an async url request with the provided function: 'process'.
|
// Makes an async url request parsing a user message.
|
||||||
async function asyncReddit(channelMessage) {
|
async function asyncImageRequest(channelMessage) {
|
||||||
|
// Split the user message
|
||||||
// test command for async site request
|
|
||||||
|
|
||||||
let messageSplit = channelMessage.content.substring(2).split(' ');
|
let messageSplit = channelMessage.content.substring(2).split(' ');
|
||||||
if (messageSplit.length === 2) {
|
|
||||||
let reddit_url = "https://www.reddit.com/r/"
|
|
||||||
+ messageSplit[1].replace(/[^a-zA-Z0-9_\-]+/g, '')
|
|
||||||
+ "/.json?show=all&count=25&limit=100";
|
|
||||||
|
|
||||||
let reddit_json = await loadJson(reddit_url);
|
// todo locked down to one search term.
|
||||||
let reddit_response = handleRedditJson(reddit_json);
|
if (messageSplit.length === 2) {
|
||||||
sendToBotTestingChannel("reddit_url:" + reddit_url + "\nreddit_json:" + reddit_json + "\nreddit_response:" + reddit_response);
|
//regex clean the requested item to help with silly typos.
|
||||||
} else {
|
let requested_item = messageSplit[1].replace(/[^a-zA-Z0-9_\-]+/g, '');
|
||||||
sendToBotTestingChannel("message split length:" + messageSplit.length);
|
|
||||||
|
//collect all the json
|
||||||
|
let image_url_list = [];
|
||||||
|
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));
|
||||||
|
let redditbooru_json = await loadJson("https://" + requested_item + ".redditbooru.com/images/?limit=1000");
|
||||||
|
|
||||||
|
image_url_list.concat(getUrlListFromReddit(reddit_json), getUrlListFromImgur(imgur_json), getUrlListFromRedditBooru(redditbooru_json));
|
||||||
|
|
||||||
|
if (image_url_list) {
|
||||||
|
return image_url_list[getRandomInt(0, image_url_list - 1)];
|
||||||
|
} else {
|
||||||
|
return "I couldn't find that, sauce?";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -658,7 +665,7 @@ client.on('message', message => {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'async':
|
case 'async':
|
||||||
asyncReddit(message);
|
asyncImageRequest(message);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Voice commands
|
// Voice commands
|
||||||
|
Reference in New Issue
Block a user