首页 > 解决方案 > 当机器人托管在 heroku 上时如何制作 discord.js 图像搜索命令

问题描述

我的 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

标签: javascriptherokudiscorddiscord.js

解决方案


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


推荐阅读