【问题标题】:How to make a discord.js image search command when the bot is hosted on heroku当机器人托管在 heroku 上时如何制作 discord.js 图像搜索命令
【发布时间】:2021-08-10 06:39:16
【问题描述】:

我的 Discord.js 机器人中有一个命令应该从 dogpile 中获取图片并发布,但自从我开始在 Heroku 上托管我的机器人(我免费使用它)它就完全停止工作了,我没有收到任何错误,这是代码:

var cheerio = require("cheerio");
var request = require("request");
const Discord = require('discord.js');


module.exports = {
    name: 'image',
    description: 'sends an image based on your search query',
    execute(message, args){
        
        image(message, args);

        function image(message, parts) {

            var search = parts.slice(0).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) {
                    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;
                }

                const embed = new Discord.MessageEmbed()
                .setTitle("Image of a(n) " + search)
                .setImage(urls[Math.floor(Math.random() * urls.length)])
                .setFooter('Searched by ' + message.author.username)
                .setColor("#43B581");
                message.channel.send(embed)
            })
        }
    }
}

这也可能有帮助,但我不确定:
Heroku Dyno Information

【问题讨论】:

  • 一定有什么东西会导致你的机器人崩溃,然后尝试将你的代码包装在try{...}catch(e){...} 中,然后如果没有发现错误。如果过度使用或导致 dyno 停止的原因,请查看 dyno 日志
  • 我没有收到任何错误,但我注意到它记录了一个空白数组,通常它会充满图像链接
  • 添加更多调试日志并添加 Heroku 日志。您可能会看到一些您认为不相关但实际上相关的内容。

标签: javascript heroku discord discord.js


【解决方案1】:

可能是因为您从 repl.it 转移到 Heroku,因为 repl.it 会自动安装任何缺少的模块,而 Heroku 不会,因此请确保您已安装 Cheerio 模块。

【讨论】:

    猜你喜欢
    • 2020-06-27
    • 2020-08-21
    • 2019-02-14
    • 2021-02-05
    • 2021-11-10
    • 1970-01-01
    • 2021-12-19
    • 2019-08-04
    • 2020-12-25
    相关资源
    最近更新 更多