0
votes

So, I am trying to write code for a bot on discord to search google for a desired image. I was able to get the bot to respond to simple commands with a version of code (A1), only with more options, however I have been unable to get the image search code (A2) to work nor have I been able to combine the two codes together. I would greatly appreciate some advice as to where I'm going wrong. :-) thank you.

(A1):
const Discord = require('discord.js'); const client = new Discord.Client();

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});

client.on('message', msg => {
  if (msg.content === 'ping') {
    msg.reply('pong');
}
});

client.login('insert discord code here');

(A2)
var cheerio = require("cheerio"); var request = require("request");

var discord = require("discord.js");
var client = new discord.Client();


client.login("insert discord code here");

client.on("ready", function() {
    console.log("logged in");
});

client.on("message", function(message) {

    var parts = message.content.split("search.", "search query");
    /* Simple command manager */
    if (parts[0] === "search.") { //I want to check this, but I am not sure how as I want to start the message with the command

        image(message, parts);

    }

});

function image(message, parts) {

var search = parts.slice(1).join(["search."]);

var options = {
    url: "http://results.dogpile.com/serp?qc=images&q=" + search,
    method: "GET",
    headers: {
        "Accept": "text/html",
        "User-Agent": "Chrome"
    }
};
request(options, function(error, response, responseBody) {
    if (error) {

        return;
    }


    $ = cheerio.load(responseBody);


    var links = $(".image a.link");

    var urls = new Array(links.length).fill(0).map((v, i) => links.eq(i).attr("href"));
    console.log(urls);
    if (!urls.length) {
        return;
    }

    message.channel.send( urls[0] );
});

}

1

1 Answers

0
votes

I have corrected the errors:

var cheerio = require("cheerio"); /* Used to extract html content, based on 
jQuery || install with npm install cheerio */
var request = require("request"); /* Used to make requests to URLs and fetch 
response  || install with npm install request */

var discord = require("discord.js");
var client = new discord.Client();




client.on("ready", function() {
    console.log("logged in");
});

client.on("message", function(message) {

    var parts = message.content.split(" "); 


    /* Simple command manager */
    if (parts[0] === "search.") { 


        image(message, parts); 

    }

});

function image(message, parts) {

/* extract search query from message */

var search = parts.slice(1).join(" "); 
var options = {
    url: "http://results.dogpile.com/serp?qc=images&q=" + search,
    method: "GET",
    headers: {
        "Accept": "text/html",
        "User-Agent": "Chrome"
    }
};
request(options, function(error, response, responseBody) {
    if (error) {
        // handle error
        return;
    }

    /* Extract image URLs from responseBody using cheerio */

    $ = cheerio.load(responseBody); 

    
    var links = $(".image a.link");

    var urls = new Array(links.length).fill(0).map((v, i) => 
links.eq(i).attr("href"));
    console.log(urls);
    if (!urls.length) {
        return;
    }

    // Send result
    message.channel.send( urls[0] );
});

client.on('message', msg => {
  if (msg.content === 'ping') {
    msg.reply('pong');
} else if (msg.content === '') {
  msg.reply('');
} else if (msg.content === '') {
  msg.reply('');
} else if (msg.content === '') {
  msg.reply('');
} else if (msg.content === '') {
  msg.reply('');
}
});

}