progdisc/AwesomeBot

View on GitHub
commands/pbf/pbf.js

Summary

Maintainability
A
1 hr
Test Coverage
const request = require('request');
const cheerio = require('cheerio');
 
function parsePbfLink(pbfLink, message) {
request(pbfLink, (error, response, body) => {
if (!error && response.statusCode === 200) {
// we have successfully got a response
const htmlBody = cheerio.load(body);
 
if (htmlBody('#topimg')) {
const img = htmlBody('#topimg');
message.channel.sendMessage('```diff\n' +
`Title: ${img.attr('alt')}\n` +
'```\n' +
`http://pbfcomics.com${img.attr('src')}`);
} else {
message.channel.sendMessage(`I'm sorry ${message.author}, i couldn't find a PBF Comic.`);
}
}
});
}
 
module.exports = {
usage: 'pbf <keywords> - finds a pbf comic with relevant keywords. Random keyword selects random comic.',
Function `run` has 34 lines of code (exceeds 25 allowed). Consider refactoring.
run: (bot, message, cmdArgs) => {
let pbfLink = false;
 
if (cmdArgs === 'random') {
pbfLink = 'http://pbfcomics.com/random';
parsePbfLink(pbfLink, message);
} else {
const options = {
url: `https://duckduckgo.com/html/?q=${cmdArgs}%20pbfcomics`,
headers: {
'accept-language': 'en-US,en;q=0.8',
'upgrade-insecure-requests': 1,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' +
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
},
};
request(options, (err, res, bod) => {
const pbfBody = cheerio.load(bod);
try {
pbfBody('.result__a').each((i, link) => {
const href = link.attribs.href;
if (href.search(/^https?:\/\/(www\.)?pbfcomics\.com\/\d+\//) !== -1 && pbfLink === false) {
pbfLink = href;
}
});
} catch (e) {
message.channel.sendMessage('There was a problem with DuckDuckGo query.');
}
// we are done with finding a link
if (!pbfLink) {
// link is either empty (this should NOT happen) or we don't have a link
message.channel.sendMessage(`I'm sorry ${message.author}, i couldn't find a PBF Comic.`);
} else {
parsePbfLink(pbfLink, message);
}
});
}
return false;
},
 
};