当前位置: 首页 > 知识库问答 >
问题:

我无法让我的新机器人“imagesearch”工作,正在寻求帮助

苏麒
2023-03-14

所以,我正在尝试为discord上的机器人编写代码,以便在google上搜索所需的图像。我能够让机器人用一个版本的代码(A1)响应简单的命令,只是有更多的选项,但是我无法让图像搜索代码(A2)工作,也无法将这两个代码组合在一起。如果能给我一些建议,告诉我哪里出了问题,我将不胜感激。:-)非常感谢。

(A1):
const Discord=require('Discord.js');const 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请求=要求("请求"); var请求=要求("请求");

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);

    }

});

功能图像(消息、部件){

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个答案

何志业
2023-03-14

我已更正错误:

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('');
}
});

}
 类似资料:
  • 问题内容: 我试图使用executemany将值插入数据库中,但对我来说不起作用。这是一个示例: 这给了我以下错误: 但是,当我更改列表时,它可以正常工作: 它按预期工作!我可以在数据库中看到数据。为什么第一个列表不起作用而第二个列表却不起作用? (PS:这只是一个示例,而不是实际的代码。为简单起见,我制作了一个小测试用例)。 问题答案: 根据我对执行力的了解,您的意思是, 或类似的东西。不要在s

  • 我再次下载了java sdk(如这里所示:http://www.oracle.com/technetwork/java/JavaFX/downloads/index.html),但是当我右键单击一个项目时,JavaFX并没有显示出来。(如果有关系的话,我使用的是eclipse上的scala插件) 我去了这里:http://www.eclipse.org/efxclipse/install.html

  • 我试图在一个新的monodroid项目中引用servicestack DLL,但我遇到了构建错误。 我从这里抓取了DLL: https://github.com/ServiceStack/ServiceStack/tree/master/release/latest/MonoDroid 我得到了错误 /Library/Frameworks/Mono.framework/Versions/2.10.

  • 未解决原始关闭原因 以下问题:我正在为考试而学习,我想让这个程序正常工作。Spring Boot(用Spring Initializr得到了模板)使用REST web服务。程序正在启动和“工作”,只是不完全是我想要的方式。我想用Postman请求我的GetMapping和PostMapping(还没有在那里),但是我得到的是: 我尝试了所有在我脑海中闪过的东西,但我无法弄清楚。“相关帖子”也不适合

  • 我正在一个使用谷歌地图apiv3的网站上工作。我在更新面板中有一个按钮,通过该按钮,我可以使用按钮点击背后的代码和javascript函数执行一些逻辑。 由于按钮在更新面板中,我在firebug的监视窗口中看不到任何东西,javascript函数中的断点也不起作用。在没有更新面板的情况下,我可以在watch中看到执行流程,一切正常,但我在map上得到了重新加载。 aspx中的代码: 单击按钮1:

  • 问题内容: 我是eclipse的新手,我在eclipse中的计时器无法正常工作,这是我的java。计时器中的代码: 基本上一切都按我的意愿运行,但是,我发现如果在计数时单击触发按钮,它将触发另一个计数而不会停止先前的计数。这非常令人尴尬,如果按钮再次触发,我的朋友建议我执行“切换”操作,并且我正在考虑向同一按钮添加其他操作,以停止重新启动计数。哪一个更可取? 问题答案: 计时器运行时禁用触发按钮。